当前位置:首页 >> 信息与通信 >>

OpenKM高级配置


OpenKM 高级配置
目录 说明: .......................................................................................................................................................................

......... 3 1 安装和登录: ................................................................................................................................................................ 3 1.1 安装 ..................................................................................................................................................................... 3 1.2 服务器文件架构 ................................................................................................................................................. 3 2 启动和终止 .................................................................................................................................................................... 4 3 修改 OpenKM.cfg ........................................................................................................................................................... 4 4 重编译 Jboss 应用服务器的 Jar 文件 ........................................................................................................................... 4 5 修改 Jboss Java 虚拟机内存大小.................................................................................................................................. 4 5.1 虚拟机内存管理机制 ......................................................................................................................................... 4 5.2 设置 Jboss 虚拟机内存和中文环境 .................................................................................................................. 4 6 MySql 数据库配置 ....................................................................................................................................................... 5 6.1 增加 MySql 数据库的中文支持 ......................................................................................................................... 5 6.2 建立 OpenKM 数据库......................................................................................................................................... 5 6.3 配置数据库文件 ................................................................................................................................................. 5 6.4 修改 repository.xml 文件 .................................................................................................................................... 5 6.5 修改 workspace.xml 文件 ................................................................................................................................... 6 7 特殊的 OpenKM 配置参数 ............................................................................................................................................ 7 7.1 签入时,不校对文件名 ..................................................................................................................................... 7 7.2 配置中文界面 ..................................................................................................................................................... 7 7.3 配置文件预览 ..................................................................................................................................................... 7 7.4 用户对所创建文件夹的权限控制 ..................................................................................................................... 7 7.5 变更 Cache 路径 ................................................................................................................................................. 7 7.6 禁用 user quota .................................................................................................................................................. 7 7.7 修改 repository 文件夹位置 .............................................................................................................................. 7 7.8 重做 repository Indexing..................................................................................................................................... 7 7.9 设置默认用户组 ................................................................................................................................................. 7 8 变更登录 URL ................................................................................................................................................................ 8 8.1 安装 Apache htttp server .................................................................................................................................... 8 8.2 使用 redirect 配置 .............................................................................................................................................. 8 8.3 使用 virtualhost 配置 .......................................................................................................................................... 8 8.4 重启 Apache 服务。 ........................................................................................................................................... 8 9 OpenKM 和 AD 的集成 ................................................................................................................................................... 9 9.1 修改 login-config.xml 文件: ............................................................................................................................. 9 9.2 修改 OpenKM.cfg ................................................................................................................................................ 9 10 配置知识树 ................................................................................................................................................................ 11 11 邮件配置 .................................................................................................................................................................... 12 11.1 修改 mail-service.xml 文件 ............................................................................................................................ 12 11.2 修改 jbpm.mail.templates.xml 文件 ............................................................................................................... 12 11.3 修改 jbpm.xml 文件 ........................................................................................................................................ 13 12 脚本和批处理指令 .................................................................................................................................................... 14 12.1 语法规则 ......................................................................................................................................................... 14 12.2 常用变量和事件类型 ..................................................................................................................................... 14 12.3 具体应用 ......................................................................................................................................................... 14 13 备份与恢复 OpenKM 系统........................................................................................................................................ 18

13.1 备份数据库和 Repository............................................................................................................................... 18 13.2 恢复 OpenKM.................................................................................................................................................. 18 14 Jboss 多实例启动 ...................................................................................................................................................... 19 14.1 配置多实例 ..................................................................................................................................................... 19 14.2 配置并启动新的 Jboss—OpenKM 实例......................................................................................................... 19 15 配置文档节点属性 .................................................................................................................................................... 20

说明:
本配置手册是为概括 OpenKM 的安装和配置而撰写。其中的内容大部分来源于 forum.openkm.com 社区、 OpenKM wiki。有少部分参照了 JBoss 的一些配置。其中工作流的配置以及定制开发稍微复杂一些,此处从略。 整个内容原为个人的配置记录和总结,不完善之处,在所难免。有兴趣的人可以通过电邮联系。 OpenKM 是开源软件, 有社区版本和专业版本。 OpenKM 是一个比较纯粹的文档管理软件, 并没有如 Alfresco 软件等集成众多企业门户的功能。它的版本管理和版本控制相对简单;另外,对于文档与其他管理对象(比如资 产管理)的关联也未涉及,所以难以满足一些复杂的应用需求。但是作为简单的文档管理还是足以胜任的。 为了支持开源软件,这里说明本手册支持 GPL 吧??本手册原来仅为个人的配置记录,原本就是一份草率 和随机的记录, 所以对于描述的正确性和完整性不予任何担保。 不过至少本人已经搭建了成功了这么一个平台, 本文所作配置均已生效,并有工作流实际运转过,相信对新手还是有所借鉴的。 撰写者:Bigg,glliyong@yahoo.com.cn

1 安装和登录:
1.1 安装
先安装 java JDK 6.0 最新版本。 设置环境变量 JAVA_HOME 为如下目录:C:\Java\jdk1.6.0_31 设置环境变量 JBOSS_HOME: C:\jboss-4.2.3.GA 最新的 OpenKM.war 下载: http://integration.openkm.com/5.1/ 下载之后,可以替换 server/default/deploy 下面的 OpenKM.war 文件。 如果有定制的 java 程序,需要替换 OpenKM.war 其中的同名文件。可以直接将 war 文件解压缩,替换后重 新压缩为 zip 文件,并改名为 war 文件。注意保持文件夹结构相同。 现在已经修改了\WEB-INF\classes\com\openkm\principal\LdapPrincipalAdapter.java 文件,允许从 AD 的多个 ou 中导入用户帐号;重编译了\WEB-INF\classes\com\openkm\servlet \admin\RepositoryViewServlet.java,以允许 修改 repository 用户权限的操作。注意向当前 OpenKM.war 包中导入编译文件。 本地登录 URL 为:http://localhost:8080/OpenKM/. 如果安装了 Apache Http Server 后,该 URL 地址会改变。 OpenKM 管理员帐号为 "okmAdmin",密码为 "admin". OpenKM 默认任何帐号都必须属于 AdminRole 和 UserRole 之一。 前者属于管理员组, 后者属于普通用户组。

1.2 服务器文件架构
jboss 是应用服务器;tomcat 是 web 服务器。jboss 服务器的目录结构如下。 {home}/bin:脚本命令 {home}/client:客户端 java 程序 {home}/docs:jboss 的文档(dtd 是定义文件) {home}/lib:服务器端 java 程序 {home}/server:服务器配置文件。jboss 包含三个默认的配置:minimial,default,all {home}/server/all:jboss 的完全配置,启动所有服务 {home}/server/default:jboss 的默认配置 {home}/server/minimial:jboss 的最小配置 {home}/server/default/conf:jboss 的配置文件 {home}/server/default/data:jboss 的数据库文件 {home}/server/default/deploy:jboss 的热部署目录 {home}/server/default/lib:一些特定的 java 程序,jbos 启动时自动加载。 {home}/server/default/log:日志文件 {home}/server/default/tmp:临时文件 {home}/server/default/work

在{home}/server/default 文件夹中,只有 conf、deploy、lib 文件夹启动 Jboss 和 OpenKM 时是所必须的。其他文 件夹(红色标识)会在服务器初始化或重启动后自动创建,所以备份 site 时可以直接删除。 在初始的文件夹结构中,Cache 和 Repository 文件夹是不存在的,这两个文件夹将会在 OpenKM 服务器的初始 化阶段创建。

2 启动和终止
{Home}/bin/run.bat –b 0.0.0.0 –b 0.0.0.0 表示允许远程登录。 可以使用“Ctrl+C”终止 dos 进程,并终止则服务器。或者另外启动一个 dos 进程的命令行,停止服务器。 {Home}/bin/shutdown.bat -S 使用如下链接尝试登录:http://localhost:8080/OpenKM/

3 修改 OpenKM.cfg
每次修改 OpenKM.cfg 文件都要重启 JBoss Server,以便修改生效。 第一次启动,需要设定 hibernate.hbm2ddl=create。这时 Jboss 和 OpenKM 会做各种系统参数的初始化。 启动 Jboss 和 OpenKM 并作了配置之后,关闭 Jboss; 如果是升级操作,需要更改为 hibernate.hbm2ddl=update,重启 Jboss 进行升级。 然后重新设定 hibernate.hbm2ddl=none,以便保存各种配置。

4 重编译 Jboss 应用服务器的 Jar 文件
JBoss 有些模块的功能不很完善,比如,对域用户的绑定验证,只支持单个 OU。所以可以修改某些组件。 先在 eclipse 中完成对 java 文件的重新改写; 然后将该 java 文件拷贝到所在包对应目录的顶级目录, 执行编译 javac -d . {顶级目录文件夹} 打包 Jar 文件,可以用 jar -cvf jbosssx.jar org 进行打包。或者直接压缩为同样文件夹结构的 zip 文件,然后修 改后缀名为 jar。 将自定义程序包比如 jbosssx.jar 文件拷贝到 jboss-4.2.3.GA\server\default\lib 文件夹下并覆盖。

5 修改 Jboss Java 虚拟机内存大小
5.1 虚拟机内存管理机制
Java Heap 分为 3 个区:1. Young;2.Old; 3.Permanent。 其中 Young 保存刚实例化的对象。当该区被填满时,GC 会将对象移到 Old 区。Permanent 区则负责保存反射对 象。JVM 的 Heap 分配可以使用-X 参数设定: -Xms :初始 Heap 大小 -Xmx:java heap 最大值 。该值取决于系统可用内存大小。 -Xmn :young generation 的 heap 大小。 一般而言,建议 Xms 与 Xmx 的值设为相等,这有助于系统稳定性。如果需要,建议让-Xmn 值约等于-Xmx 的 1/3。最好在 JBoss 的 run.bat 和 run.sh 其中的 JAVA_OPTS 参数最好设为一致。

5.2 设置 Jboss 虚拟机内存和中文环境
编辑/bin/run.bat。找到: set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m 修改为: set JAVA_OPTS=%JAVA_OPTS% -Xms128m –Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m (-XX:MaxPermSize=256m -Ddefault.client.encoding=GBK -Dfile.encoding=GBK -Duser.language=Zh -server) 在 bin\run.bat 里面倒数部分添加如下一行! :RESTART "%JAVA%" %JAVA_OPTS% ^ -Djava.endorsed.dirs="%JBOSS_ENDORSED_DIRS%" ^

-classpath "%JBOSS_CLASSPATH%" ^ -Dfile.encoding="UTF-8" ^ org.jboss.Main %*

6 MySql 数据库配置
6.1 增加 MySql 数据库的中文支持
mysql 中修改 my.ini 中 [client] port=3306 [mysql] default-character-set=utf8 [mysqld] # The default character set that will be used when a new schema or table is # created and no character set is defined character-set-server=utf8 collation-server=utf8_unicode_ci

6.2 建立 OpenKM 数据库
安装 MySQL 数据库,管理员密码(比如 Pwd:123 或 admin) 初始化脚本: DROP DATABASE IF EXISTS okm_repo; DROP DATABASE IF EXISTS okm_app; CREATE DATABASE okm_repo DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin; CREATE DATABASE okm_app DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin; CREATE USER 'openkm'@'localhost' IDENTIFIED BY 'okmAdmin'; GRANT ALL ON okm_repo.* TO 'openkm'@'localhost' WITH GRANT OPTION; GRANT ALL ON okm_app.* TO 'openkm'@'localhost' WITH GRANT OPTION;

6.3 配置数据库文件
编辑并修改 $JBOSS_HOME/server/default/deploy/openkm-ds.xml 文件: <?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>OpenKMDS</jndi-name> <connection-url>jdbc:mysql://localhost:3306/okm_app?autoReconnect=true</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>openkm</user-name> <password>okmAdmin</password> <min-pool-size>5</min-pool-size> <max-pool-size>20</max-pool-size> <idle-timeout-minutes>28680</idle-timeout-minutes> <exception-sorter-class-name>com.mysql.jdbc.integration.jboss.ExtendedMysqlExceptionSorter</exception-sorter-class-name> <valid-connection-checker-class-name>com.mysql.jdbc.integration.jboss.MysqlValidConnectionChecker</valid-connection-checker -class-name> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>

6.4 修改 repository.xml 文件
如果使用 MySql 数据库,其中配置如下(省略 textFilterClasses 的值。 ) <Repository> <Workspace name="${wsp.name}"> <!-- Virtual file system of the workspace: class: FQN of class implementing the FileSystem interface -->

<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> <param name="path" value="${wsp.home}"/> </FileSystem> <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager"> <param name="driver" value="com.mysql.jdbc.Driver"/> <param name="url" value="jdbc:mysql://localhost:3306/okm_repo? autoReconnect=true"/> <param name="schema" value="mysql"/> <param name="user" value="openkm"/> <param name=“password” value=“okmPwd”/> <param name="schemaObjectPrefix" value="${wsp.name}_"/> <param name="externalBLOBs" value="false"/> </PersistenceManager> <!-- Search index and the file system it uses. class: FQN of class implementing the QueryHandler interface --> <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex"> <param name="path" value="${wsp.home}/index"/> <param name="textFilterClasses" value="……"/> <param name="extractorPoolSize" value="2"/> <param name="supportHighlighting" value="false"/> <param name="indexingConfiguration" value="${wsp.home}/../../../indexing_configuration.xml"/> </SearchIndex> </Workspace> <Versioning rootPath="${rep.home}/version"> <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager"> <param name="driver" value="com.mysql.jdbc.Driver"/> <param name="url" value="jdbc:mysql://localhost:3306/okm_repo? autoReconnect=true"/> <param name="schema" value="mysql"/> <param name="user" value="openkm"/> <param name=“password” value=“okmPwd”/> <param name="schemaObjectPrefix" value="version_"/> <param name="externalBLOBs" value="false"/> </PersistenceManager> </Versioning> </Repository>

6.5 修改 workspace.xml 文件
该文件将根据数据库的初始配置自动生成。如果涉及备份的回复以及 repository 迁移,则需要修改该文件。 此外,也可以直接删除该文件所在的 work 文件夹,而不必重新修改。 <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager"> <param name="driver" value="com.mysql.jdbc.Driver"/> <param name="url" value="jdbc:mysql://localhost:3306/okm_repo? autoReconnect=true"/> <param name="schema" value="mysql"/> <param name="user" value="openkm"/> <param name="password" value=" okmPwd"/> <param name="schemaObjectPrefix" value="${wsp.name}_"/> <param name="externalBLOBs" value="false"/> </PersistenceManager>

7 特殊的 OpenKM 配置参数
7.1 签入时,不校对文件名
system.document.name.mismatch.check 设为默认签入文档不做文档名称校对。

7.2 配置中文界面
首先需要配置中文字体界面。参加系统提供的 OpenKM_5.1-SNAPSHOT_zh-CN.sql 文件,这实际上是个 sql 文件。 该文件可在管理面板中增加翻译条目并允许重新导出。配置中文界面时需要指定图标。 因为中文字体默认偏小, 所以可以在菜单中改为中等字体或大字体, 或者直接在 profile 中修改字体大小。 另外, 在管理面板中,为如下选项配置登录时的默认界面。 default.lang 如果已经配置好中文环境,则其值为中文字体名称,比如 zh-CN

7.3 配置文件预览
修改预览设置前,应当清空 cache。 (1)PDF 预览参数: system.swftools.pdf2swf=C:\SWFTools\pdf2swf.exe -T 9 -f ${fileIn} -o ${fileOut} (2)Office 文档预览 启动 JBoss 前,不应打开 OpenOffice 应用。 路径下应该可以看见 program 目录。比如: system.openoffice.path=C:\\Program Files\\OpenOffice.org 3(windows 下注意双反斜杠) system.openoffice.path=C:\LibreOffice 3.4 (3)DWG 预览参数: 首先拷贝并注册 AcmeCADConverter.exe 到某个文件夹下面。 system.dwg2dxf=C:\AcmeCADConverter8.0\AcmeCADConverter.exe (4)图像文件预览参数: system.imagemagic.convert=C:\ImageMagick-6.7.6-Q16\convert.exe (5)ghostscript 预览: system.ghostscript.ps2pdf=c:\ghostscript\gs9.05\lib\ps2pdf (6)ocr 预览 system.ocr=c:\Tesseract-ocr\tesseract.exe ${fileIn} ${fileOut}

7.4 用户对所创建文件夹的权限控制
用户创建文档或者文件夹后,默认不得到相应全部操作权限。 user.assign.document.creation=off

7.5 变更 Cache 路径
默认为 cache.home=$JBOSS_HOME/cache。可以变更到其他硬盘或存储区。

7.6 禁用 user quota
在用户 profile 中,停止 user quota, 可以提高性能 如果需要启用:user.item.cache=on。默认为启用。

7.7 修改 repository 文件夹位置
该配置近在初次启动 Jboss 时生成。一旦已经建立 repository 文件夹,如果需要移动其位置,则应先修改路径, 然后关闭 Jboss,移动 repository 文件夹到新的目录下,然后重新启动 JBoss。 repository.config= D:\jboss-4.2.3.GA_Test\repository.xml repository.home= D:\jboss-4.2.3.GA_Test\repository

7.8 重做 repository Indexing
停止 JBoss,删除$JBOSS_HOME/repository/repository/index,然后重启 JBoss。

7.9 设置默认用户组
如果需要,该用户组应可以修改为对应于 AD 中的 OU。 default.user.role=OtherRole default.admin.role=OtherAdminRole

8 变更登录 URL
8.1 安装 Apache htttp server
下载地址:http://httpd.apache.org/download.cgi ( windows binary no mod_ssl )。在 Apache 安装目录下,找 到配置文件:Apache2.2\conf\httpd.conf,在这个文件上完成相关配置。配置完成后,需要重启 Apache 服务。

8.2 使用 redirect 配置
在如下位置增加一行重定向的语句。该方法仅止于此,在用户的客户端将会看到真实的 URL。 <IfModule alias_module> # Example: # Redirect permanent /foo http://localhost/bar Redirect permanent /OpenKM2 http://172.16.8.225:8180/OpenKM ScriptAlias /cgi-bin/ "C:/Apache2.2/cgi-bin/" </IfModule>

8.3 使用 virtualhost 配置
需要安装 apache httpd server。找到配置文件:Apache2.2\conf\httpd.conf,完成以下配置。 # 启用模块
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

# 增加配置
NameVirtualHost *:80 <VirtualHost *:80> ServerName OKM-DMS RedirectMatch ^/$ /OpenKM ProxyRequests Off ProxyVia On <Proxy *> AddDefaultCharset off Order deny,allow Allow from all Deny from All </Proxy> <Location /OpenKM> ProxyPass ajp://127.0.0.1:8009/OpenKM ProxyPassReverse http://OKM-DMS/OpenKM </Location> ErrorLog logs/openkm.your-domain.com-error_log CustomLog logs/openkm.your-domain.com-access_log common </VirtualHost>

此外,可以直接使用 redirector 指令。

8.4 重启 Apache 服务。
运行 services.msc,打开服务管理窗口,重启 Apache 服务。然后尝试以新的 URL 登录。

9 OpenKM 和 AD 的集成
首先安装 Softerra LDAP Administration 软件,并以合适的帐号登录,了解所在域的结构。 一般来说,域中应该存在 UserRole 和 AdminRole 两个用户组。如果域中不存在着两个用户组,那么可以考虑 修改 JBoss 的{home}\server\default\lib\jbosssx.jar 这个文件,在校验是自动添加相应用户组。 现在已经定制过 jbosssx.jar 中的 LdapExtLoginModule 文件,允许自动添加 UserRole 和 AdminRole 用户组,并配 置不同的域 OU 同时登录。

9.1 修改 login-config.xml 文件:
这是定制了 jbosssx.jar 后的 LdapExtLoginModule 后的配置文件,允许从多个 OU 中导入用户数据。该文件位于 {home}\server\default\conf 文件夹中。 <application-policy name = "OpenKM"> <authentication> <login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required" > <module-option name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</module-option> <module-option name="java.naming.provider.url">ldap://172.16.2.5:389</module-option> <module-option name="java.naming.security.authentication">simple</module-option> <module-option name="bindDN">xxxEnt\mis</module-option> <module-option name="bindCredential">xxxEnt,2009</module-option> <module-option name="baseCtxDN">OU=xxx 部,OU=XXXENT,DC=xxxEnt,DC=com</module-option > <!--module-option name="baseCtxDN">OU=XXXENT,DC=xxxEnt,DC=com</module-option --> <module-option name="baseFilter">(sAMAccountName={0})</module-option> <module-option name="rolesCtxDN">ou=XXXENT,DC=xxxEnt,DC=com</module-option> <module-option name="roleFilter">(member={1})</module-option> <module-option name="roleAttributeIsDN">true</module-option> <!-- module-option name="roleAttributeID">cn</module-option --> <module-option name="roleNameAttributeID">cn</module-option> <module-option name="allowEmptyPasswords">false</module-option> <module-option name="java.naming.referral">follow</module-option> <module-option name="defaultRole">UserRole</module-option> <module-option name="adminUsers">userExm,user01,user02</module-option> </login-module> </authentication> </application-policy> 注:baseCtxDN 可以修改为:ou=xxx 部,ou=XXXENT,DC=xxxEnt,DC=com;OU=xxxx 项目部,OU=XXXENT,DC=xxxEnt,DC=com

9.2 修改 OpenKM.cfg
直接在管理员面板中修改。下面配置用于从域中或从数据库中抽取用户邮箱等数据。下面是是从域中抽取 用户数据的参数。LdapPrincipalAdapter 已经定制,允许从多个 OU 中导入用户数据。 principal.adapter=com.openkm.principal.LdapPrincipalAdapter #/切换到数据库 com.openkm.principal.DatabasePrincipalAdapter principal.database.filter.inactive.users=true principal.ldap.mail.attribute=mail =====决定从哪个 ou 下搜寻用户邮箱========== principal.ldap.mail.search.base=ou=信息档案部,ou=XXXENT,DC=xxxEnt,DC=com principal.ldap.mail.search.filter=(&(objectclass=person)(sAMAccountName={0})) principal.ldap.referral=follow principal.ldap.role.attribute=cn =====决定从那个 ou 下寻找用户组,此处需要确定 AdminRole 的所在 ou=====

principal.ldap.role.search.base=ou=信息档案部,ou=XXXENT,DC=xxxEnt,DC=com principal.ldap.role.search.filter=(objectClass=group) principal.ldap.roles.by.user.attribute=memberOf =====决定从哪个 ou 下寻找用户所在的组====== principal.ldap.roles.by.user.search.base=ou=信息档案部,ou=XXXENT,DC=xxxEnt,DC=com principal.ldap.roles.by.user.search.filter=(&(objectclass=person)(sAMAccountName={0})) principal.ldap.security.credentials=****** principal.ldap.security.principal=xxxEnt\userExm principal.ldap.server=ldap://172.16.2.5:389 =====决定从那个 ou 下搜寻用户及用户名,此处需确定用户所在的 ou======== principal.ldap.user.attribute=sAMAccountName principal.ldap.user.search.base=ou=xxxx 部,ou=XXXENT,DC=xxxEnt,DC=com principal.ldap.user.search.filter=(objectClass=person) principal.ldap.username.attribute=cn principal.ldap.username.search.base=ou=xxxx 部,ou=XXXENT,DC=xxxEnt,DC=com principal.ldap.username.search.filter=(&(objectClass=person)(sAMAccountName={0})) =====不很确定。此处似乎是设定用户组所含用户的 ou。但此处用户似乎未导入数据库,但的确可以登录======== principal.ldap.users.by.role.search.base=ou=xxxx 部,ou=XXXENT,DC=xxxEnt,DC=com principal.ldap.users.by.role.search.filter=(&(objectClass=Group)(cn={0})) principal.ldap.users.by.role.attribute=member system.login.lowercase=true search.base 都可以修改为:ou=xxxx 部,ou=XXXENT,DC=xxxEnt,DC=com;OU=xxxx2 部,OU=XXXENT,DC=xxxEnt,DC=com

10 配置知识树
知识树用于为文档提供一种按照树状结构组织的、某个领域的全面的关键字。下面是配置示例。 kea.automatic.keyword.extraction.number=10 kea.automatic.keyword.extraction.restriction=on kea.model.file=/Vocabulary/ag_skos_20070219.model //允许空 kea.stopwords.file=/Vocabulary/stopwords.txt //允许空 kea.thesaurus.base.url=http://www.fao.org/aos/agrovoc kea.thesaurus.owl.file=/Vocabulary/agrovoc_oaei2007.owl //需要提供该文件 kea.thesaurus.skos.file=/Vocabulary/ag_skos_20070219.rdf //需要提供该文件 kea.thesaurus.tree.childs=SELECT DISTINCT UID, TEXT FROM {UID} rdfs:subClassOf {CLAZZ}, {UID} rdfs:label {TEXT} where xsd:string(CLAZZ) = "RDFparentID" and lang(TEXT)="zh" USING NAMESPACE foaf=<http://xmlns.com/foaf/0.1/>, dcterms=<http://purl.org/dc/terms/>, rdf=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>, owl=<http://www.w3.org/2002/07/owl#>, rdfs=<http://www.w3.org/2000/01/rdf-schema#>, skos=<http://www.w3.org/2004/02/skos/core#>, dc=<http://purl.org/dc/elements/1.1/> kea.thesaurus.tree.root=SELECT DISTINCT UID, TEXT FROM {UID} Y {OBJECT}, {UID} rdfs:label {TEXT} ; [rdfs:subClassOf {CLAZZ}] where not bound(CLAZZ) and lang(TEXT)="zh" USING NAMESPACE foaf=<http://xmlns.com/foaf/0.1/>, dcterms=<http://purl.org/dc/terms/>, rdf=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>, owl=<http://www.w3.org/2002/07/owl#>, rdfs=<http://www.w3.org/2000/01/rdf-schema#>, skos=<http://www.w3.org/2004/02/skos/core#>, dc=<http://purl.org/dc/elements/1.1/> kea.thesaurus.vocabulary.serql=SELECT X,UID FROM {X} skos:prefLabel {UID} SELECT X,UID FROM {X} skos:prefLabel {UID} WHERE lang(UID) ="zh" USING NAMESPACE rdf=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>, skos=<http://www.w3.org/2004/02/skos/core#>,rdfs=<http://www.w3.org/2000/01/rdf-schema#>, dc=<http://purl.org/dc/elements/1.1/>, dcterms=<http://purl.org/dc/terms/>, foaf=<http://xmlns.com/foaf/0.1/>

11 邮件配置
11.1 修改 mail-service.xml 文件
其中的配置可以在被 workflow 或者使用发送邮件的菜单命令使用。 <?xml version="1.0" encoding="UTF-8"?> <server> <!-- Mail Connection Factory --> <mbean code="org.jboss.mail.MailService" name="jboss:service=Mail"> <attribute name="JNDIName">java:/Mail</attribute> <attribute name="User">mis</attribute> <attribute name="Password">xxxEntPWD</attribute> <attribute name="Configuration"> <configuration> <property name="mail.smtp.auth" value="true"/> <property name="mail.store.protocol" value="pop3"/> <property name="mail.transport.protocol" value="smtp"/> <property name="mail.user" value="Admin"/> <property name="mail.pop3.host" value="webmail.xxxEnt.com"/> <property name="mail.smtp.host" value="webmail.xxxEnt.com"/> <property name="mail.from" value="user@xxxEnt.com"/> <property name="mail.debug" value="true"/> </configuration> </attribute> <depends>jboss:service=Naming</depends> </mbean> <!-- OpenKM --> <mbean code="org.jboss.mail.MailService" name="jboss:service=OpenKM"> <attribute name="JNDIName">java:/mail/OpenKM</attribute> <attribute name="User">mis</attribute> <attribute name="Password">xxxEnt,2009</attribute> <attribute name="Configuration"> <configuration> <property name="mail.transport.protocol" value="smtp"/> <property name="mail.smtp.host" value="webmail.xxxEnt.com"/> <property name="mail.smtp.port" value="25"/> <property name="mail.from" value="user@xxxEnt.com"/> <property name="mail.debug" value="true"/> </configuration> </attribute> <depends>jboss:service=Naming</depends> </mbean> </server>

11.2 修改 jbpm.mail.templates.xml 文件
该文件会被工作流系统默认发送邮件时所使用。但是现在中文支持还有问题,待修正。 <mail-templates> <variable name="BaseTaskListURL" value="http://172.16.8.225:8080/OpenKM" />

<mail-template name='task-assign'> <actors>#{taskInstance.actorId}</actors> <subject>任务 '#{taskInstance.name}' (#{taskInstance.id})</subject> <text><![CDATA[Hi, 任务 '#{taskInstance.name}' (#{taskInstance.id}) (所关联的文档为: #{path}) 已经发送给您,等您完成。 链接: #{BaseTaskListURL} 谢谢。 ---powered by JBoss jBPM---]]></text> </mail-template> <mail-template name='task-reminder'> <actors>#{taskInstance.actorId}</actors> <subject>Task '#{taskInstance.name}' !</subject> <text><![CDATA[Hey, 请留意 #{BaseTaskListURL}#{taskInstance.id} (所关联的文档是: #{path}). 请继续 ! ---powered by JBoss jBPM---]]></text> </mail-template> </mail-templates>

11.3 修改 jbpm.xml 文件
jbpm.cfg.xml 文件存在于 OpenKM.war 文件内部。据说允许拷贝到 home 文件夹并做配置。该项内容待测试。 <jbpm-configuration> <string name="resource.mail.templates" value="jbpm.mail.templates.xml"/> <string name="jbpm.mail.from.address" value="mis@xxxEnt.com" /> <string name="jbpm.mail.smtp.host" value="webmail.xxxEnt.com" /> <string name="jbpm.mail.debug" value="true" /> <bean name="jbpm.mail.address.resolver" class="com.openkm.workflow.AddressResolver" singleton="true"/> </jbpm-configuration>

12 脚本和批处理指令
12.1 语法规则
脚本允许使用 BeanShell 脚本或者 java 打包的 Jar 文件。其后缀名分别是 bsh 和 jar。然后注册在 CronTab 面板 中,点击闪电符号可以立即执行。 BeanShell 脚本示例。BeanShell 脚本需要存储为.bsh 文件。
for (int i=0; i<5; i++) { print("Iteration: " + i + "<br/>); }

Jar 文件可以实现复杂的逻辑。系统将检查 META-INF/MANIFEST.MF 并寻找其中的主要 Class 并执行。示例如下:
package com.openkm.sample; public class JarSample { public static void main(String[] args) { System.out.println(cronTask()); } public static String cronTask() { StringBuilder sb = new StringBuilder(); for (int i=0; i<5; i++) { sb.append(i).append("<br/>"); } return sb.toString(); } }

12.2 常用变量和事件类型
常用变量
? java.lang.String eventType – 触发脚本的事件类型,有如下几种 ? javax.jcr.Session session – 触发脚本的用户会话 ? javax.jcr.Node eventNode – 事件的引发节点 ? javax.jcr.Node scriptNode – 脚本的存储节点

事件类型:
文档相关 ? CREATE_DOCUMENT ? DELETE_DOCUMENT ? SET_DOCUMENT_CONTENT ? SET_DOCUMENT_PROPERTIES ? CHECKOUT_DOCUMENT ? CANCEL_CHECKOUT_DOCUMENT ? CHECKIN_DOCUMENT ? LOCK_DOCUMENT ? UNLOCK_DOCUMENT ? PURGE_DOCUMENT 文件夹相关 ? CREATE_FOLDER ? DELETE_FOLDER ? PURGE_FOLDER 邮件相关 ? CREATE_MAIL ? DELETE_MAIL ? PURGE_MAIL 属性相关 ? ADD_CATEGORY ? REMOVE_CATEGORY ? ADD_KEYWORD ? REMOVE_KEYWORD

12.3 具体应用
一些脚本和批处理指令可以在 CronTab 面板以及 Repository 层上执行,并允许被事件触发。 涉及到的一些方法:

(1)清空垃圾箱
OKMRepository.getInstance().purgeTrash(null);

(2)获取某个用户的垃圾箱:
userTrash = session.getRootNode().getNode(Repository.TRASH + "/" + session.getUserID())

(3)清除用户垃圾箱中删除文件的源码(BSH):
import import import import javax.jcr.*; com.openkm.core.*; com.openkm.bean.*; com.openkm.module.*;

String token = JcrSessionManager.getInstance().getSystemToken(); Session session = JcrSessionManager.getInstance().get(token); Node okmmail = session.getRootNode().getNode(Repository.MAIL); Node okmroot = session.getRootNode().getNode(Repository.ROOT); for (NodeIterator it = okmmail.getNodes(); it.hasNext(); ) { Node userMailFolder = it.nextNode(); if( userMailFolder.getPath().equals("/okm:mail/Docs") ) {

//Check the mail in the "Docs" folder
for (NodeIterator itut = userMailFolder.getNodes(); itut.hasNext(); ) { Node mail = itut.nextNode(); String name = mail.getName();

//Check the keyword
int available = name.indexOf("al"); if (available != -1){ session.move(mail.getPath(), okmroot.getPath() + "/alFolder/" + mail.getName()); session.save(); } available = name.indexOf("ka"); if (available != -1){ session.move(mail.getPath(), okmroot.getPath() + "/kaFolder/" + mail.getName()); session.save(); } } userMailFolder.save(); } }

(4)增加关键字
eventNode.setProperty("okm:keywords", new String[]{"maligno"}); eventNode.save();

(5)上传文档后,删除除上传者之外的其他所有用户的除读之外的权限。
import java.util.Map; import com.openkm.api.OKMAuth; import com.openkm.bean.Permission; if (eventType.equals("CREATE_DOCUMENT")) { String userId = session.getUserID(); String path = eventNode.getPath(); OKMAuth oKMAuth = OKMAuth.getInstance();

// All Roles only will continue having read grants
Map hm = oKMAuth.getGrantedRoles(null, path); for (String roleName : hm.keySet()) { oKMAuth.revokeRole(null, path, roleName, Permission.WRITE, false); oKMAuth.revokeRole(null, path, roleName, Permission.DELETE, false); oKMAuth.revokeRole(null, path, roleName, Permission.SECURITY, false);

}

// All users only will continue having read grants
hm = oKMAuth.getGrantedUsers(null, path); for (String userName : hm.keySet()) { if (!session.getUserID().equals(userName)) { oKMAuth.revokeUser(null, path, userName, Permission.WRITE, false); oKMAuth.revokeUser(null, path, userName, Permission.DELETE, false); oKMAuth.revokeUser(null, path, userName, Permission.SECURITY, false); } } }

(6)强制 datastore 垃圾收集
import com.openkm.core.*; print("Begin"); new DataStoreGarbageCollector().run(); print("End");

(7)新增一个文件夹
import com.openkm.module.direct.*; import javax.jcr.*; String name = "newFolder"; Session session = DirectRepositoryModule.getSystemSession(); Node node = session.getRootNode().addNode(name, "okm:folder"); node.setProperty("okm:author", session.getUserID()); node.setProperty("okm:name", name); node.setProperty("okm:authUsersRead", new String[] { session.getUserID() }); node.setProperty("okm:authUsersWrite", new String[] { session.getUserID() }); node.setProperty("okm:authUsersDelete", new String[] { session.getUserID() }); node.setProperty("okm:authUsersSecurity", new String[] { session.getUserID() }); node.setProperty("okm:authRolesRead", new String[] { "UserRole" }); node.setProperty("okm:authRolesWrite", new String[] { "UserRole" }); node.setProperty("okm:authRolesDelete", new String[] { "UserRole" }); node.setProperty("okm:authRolesSecurity", new String[] { "UserRole" }); session.getRootNode().save();

(8)从文件夹导入文档
import import import import import import java.io.*; java.sql.*; org.hibernate.*; com.openkm.core.*; com.openkm.util.*; com.openkm.dao.*;

Session hbmSession = HibernateUtil.getSessionFactory().openSession(); Connection con = hbmSession.connection(); Statement st = con.createStatement(); File reports = new File(Config.HOME_DIR + "/reports"); try { if (reports.isDirectory()) { for (File rep : reports.listFiles()) { int id = ReportDAO.createFromFile(rep, FileUtils.getFileName(rep.getName()), true); String sql = "insert into OKM_PROFILE_MSC_REPORT (PRP_ID, PRP_REPORT) values (1, " + id + ")"; LegacyDAO.execute(con, sql); } } } catch (Exception e) { e.printStackTrace(); } finally { LegacyDAO.close(con); HibernateUtil.close(hbmSession); }

(9)修改 repository 节点的权限 使用BSH文件。实践中发现bsh文件不能处理中文路径。
import com.openkm.bean.Permission; import com.openkm.api.OKMAuth; OKMAuth oKMAuth = OKMAuth.getInstance(); oKMAuth.revokeRole(null, "/okm:root/C_Test/Test01/Test02B", "UserRole", Permission.DELETE, false); oKMAuth.grantUser(null, "/okm:root/C_Test/Test01/Test02B", "userExm", Permission.DELETE, true); print("Revsise Access Previledge completed!");

使用Jar文件处理。 实践发现可以处理中文路径。 需要在jar文件的MF文件中指定主要的类, 并需要使用crontask() 方法.
package com.openkm.CronTab; import com.openkm.bean.Permission; import com.openkm.api.OKMAuth; public class ReviseAccess { public static void main(String[] args){ try { System.out.println(cronTask());} catch (Exception e) { e.printStackTrace();} } public static String cronTask() throws Exception { OKMAuth oKMAuth = OKMAuth.getInstance(); oKMAuth.revokeRole(null, "/okm:root/C_Test/Test01/Test02A", "UserRole", Permission.DELETE, false); oKMAuth.grantUser(null, "/okm:root/C_Test/Test01/Test02A", "userExm", Permission.DELETE, true); return new String("Revsise Access Previledge completed!"); } }

配置文件

13 备份与恢复 OpenKM 系统
13.1 备份数据库和 Repository
13.1.1 备份 okm_app 和 okm_repo 两个数据库 以 mysql 数据库为例,可以使用 NaviCat 工具或者命令行:

13.1.2 备份 Repository 物理文件夹 直接将物理文件夹打包(压缩),放到备份路径下即可。

13.2 恢复 OpenKM
OpenKM 使用了 okm_app 和 okm_repo 两个数据库,有权限访问的用户是 openkm。如果要恢复数据库和 Repository,需要数据库 openkm 用户在前后两个系统的密码保持一致。否则,会导致 repository 恢复失败。 因为 okm_app 中会设置本地的 Preview 软件、repository 路径等多种本地地址,所以首先要求备份系统和原 来的系统路径保持一致。如果不能保持一致,则不建议恢复 okm_app 数据库,可以从新建立该系统。以这种方 法而言,步骤是: (1)关闭 JBoss。设置 OpenKM.cfg 文件,指定 hibernate.hbm2ddl=create,然后启动 Jboss,完成系统的初始化 以 及 相 关 配 置 , 包 括 在 系 统 的 管 理 面 板 中 , 指 定 Repostory 的 路 径 。 然 后 关 闭 Jboss , 并 设 置 hibernate.hbm2ddl=none。 (2)将 repository 备份拷贝到指定路径。 (3)恢复 okm_repo 数据库,将原来备份好的 sql 脚本重新导入。

(4)重启 Jboss。登录,查看 repository 是否已经恢复。

14 Jboss 多实例启动
14.1 配置多实例
目标是为了实现一台服务器上,或一台 JVM 上,可以启动多个 JBoss 实例。这种情况下,可以用于测试和 运行不干扰,可以实现不同的 JVM 配置,可以充分使用服务器的大内存等多种情况。 需要修改下面几个端口: ? 编辑 $JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/server.xml 并改变这些端口: 8080, 8009 and 8443. ? 编辑 $JBOSS_HOME/server/default/conf/jboss-service.xml 并改变这些端口: 8083, 4444, 4445,4446, 1098 and 1099. ? 编辑 $JBOSS_HOME/server/default/deploy/jms/uil2-service.xml 并改变这个端口: 8093 ? 编辑 $JBOSS_HOME/server/default/deploy/ejb3.deployer/META-INF/jboss-service.xml 并改变这个端口: 3873. ? 编辑 $JBOSS_HOME/bin/shutdown.sh 并加入最后的 "localhost"以及新的 HTTP 端口。
? # Execute the JVM ? exec "$JAVA" \ ? $JAVA_OPTS \ ? -classpath $JBOSS_CLASSPATH \ ? org.jboss.Shutdown localhost 8081 "$@"

以上端口虽然可以手工修改。 但是比较繁琐。 所以使用了 JBoss 提供了另外一种简便的方法: Binding Manager 服务,不需要繁琐的端口配置就可以实现多实例运行端口不冲突,详细步骤如下: 以 JBoss 4.2.3 GA 为例。关键文件%JBOSS_HOME%\docs\examples\binding-manager\sample-bindings.xml,该 文件默认情况下定义了 4 组不同的端口配置(port-default、port-01、port-02、port-03) ,也就是说默认情况下 支持同一台机器部署 4 个 JBoss 实例。%JBOSS_HOME%表示 JBoss 安装目录。 新 JBoss 实例配置如下 将备份的 jboss-4.2.3.GA 文件夹复制并拷贝,重命名。修改{JBossHome}/server/default/conf/jboss-service.xml 文件。首先查找“ServiceBindingManage” ,然后配置 Service Binding。原来默认注释掉,现在取消注释即可。 Xml 代码
<mbean code="org.jboss.services.binding.ServiceBindingManager" name="jboss.system:service=ServiceBindingManager"> <attribute name="ServerName">ports-01</attribute> <attribute name="StoreURL"> {jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml</attribute> <attribute name="StoreFactoryClassName"> org.jboss.services.binding.XMLServicesStoreFactory </attribute> </mbean>

这里新的 Jboss 实例使用的是 port-01 端口配置。原来的 Jboss 实例默认可以不用重新配置, 正常启动即可, 这种情况下使用的是 JBoss 提供的默认端口 8080、8009 等。 Binding Manager 使用的端口规律是,默认情况下是 8080,其它实例的端口依次在 8080 的基础上增大 100, 对应关系如下: port-default =8080 ;port-01 =8180 ;port-02=8280 ;port-03 = 8380

14.2 配置并启动新的 Jboss—OpenKM 实例
以上只是建立了一个新的 JBoss 实例,但是 OpenKM 一样需要配置。其中配置主要参考 6.3 与 6.4 节,要为 新的 OpenKM 配置一个和原来实例不同的数据库。注意要同时设定有该数据库访问权限的用户。但是该用户可 以和原数据库的用户相同。 <connection-url>jdbc:mysql://localhost:3306/okm_app?autoReconnect=true</connection-url> <param name="url" value="jdbc:mysql://localhost:3306/okm_repo? autoReconnect=true"/> 配置完成后,按照第 2 节的方法启动 Jboss 实例: {Home}/bin/run.bat –b 0.0.0.0 –b 0.0.0.0 表示允许远程登录。此后的配置基本上和原来实例相同。此处主要是启用了一组新的端口。 可以使用“Ctrl+C”终止 dos 进程,并终止则服务器。或者另外启动一个 dos 进程的命令行,停止服务器。 {Home}/bin/shutdown.bat -S 然后使用新端口尝试登录,例如: http://localhost:8180/OpenKM/ 如果可以成功启动,表示配置成功。

15 配置文档节点属性
OpenKM 使用两个文件 PropertyGroups.cnd 和 PropertyGroups.xml 来处理为文档增加的额外的属性。其中, 前者定义了需要增加到文档节点的属性, 允许 JackRabbit 获取并设定这些值; 后者用于 OpenKM 以生成这些值。 示例的 cnd 属性文件。
PropertyGroups.cnd <okm = 'http://www.openkm.org/1.0'> <okg = 'http://www.openkm.org/group/1.0'> <okp = 'http://www.openkm.org/group/property/1.0'> [okg:consulting] mixin - okp:consulting.code (string) = '' autocreated - okp:consulting.comment (string) = '' autocreated

示例的 xml 属性文件。
PropertyGroups.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 2.0//EN" "http://www.openkm.com/dtd/property-groups-2.0.dtd"> <property-groups> <property-group label="Consulting" name="okg:consulting"> <input label="Code" type="text" name="okp:consulting.code" value="COD-0000" /> <textarea label="Comment" name="okp:consulting.comment" value=""/> </property-group> </property-groups>

如果服务器没有连接网络,可以设定使用本地 dtd 文件。
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 2.0//EN" "file:///path/to/property-groups-2.0.dtd">


相关文章:
openKM安装以及配置
openKM安装以及配置_计算机软件及应用_IT/计算机_专业资料。这篇文档主要讲述了如何在windows上安装和配置openKM,本人通过安装和使用之后做出的简要总结。希望对大家有用...
OpenKM配置指南
1、用户和组 OpenKM 是基于 JBoss 的 Java Web 软件,它的用户和组的配置缺省情况下在: {JBoss.Home}\server\default\conf\props 目录下面,包含三个文件: ...
OpenKM配置指南
OpenKM使用操作手册 20页 7下载券 OpenKM高级配置_GPL 20页 2下载券 OpenKM 安装指南 146页 1下载券 OPENKM系统培训手册 17页 免费 OpenKM基本操作 12页 2下载...
OpenKM安装记录
OpenKM安装记录_计算机软件及应用_IT/计算机_专业资料。OpenKM安装记录及简单配置1.使用 Wizard: 默认安装即可,无特殊情况 2.修改 Tomcat 端口号为 80 server.xml ...
OpenKM图文教程
OpenKM图文教程_计算机软件及应用_IT/计算机_专业资料。图文部署手册安装...OPENKM系统培训手册 17页 免费 OpenKM高级配置_GPL 20页 2下载券 OpenKM使用操作...
linux 安装openkm6.3
linux 安装openkm6.3_计算机软件及应用_IT/计算机_专业资料。用了将近 1 周时间,终于能够把 OpenKM 正式上线了。 下面把安装的过程和配置分享给大家。 OS: CentOS...
OpenKM使用操作手册
OpenKM使用操作手册_计算机硬件及网络_IT/计算机_专业资料。OpenKM 文档管理系统 ...(把修改后的文件上传或下载后修改;只可以上传 MIME 在配置 文件里有写明) 4...
OpenKM6.2安装与配置(默认安装与SQLSER安装)
OpenKM6.2安装与配置(默认安装与SQLSER安装)_计算机软件及应用_IT/计算机_专业...OpenKM高级配置_GPL 20页 2下载券 OPENKM系统培训手册 17页 免费 OpenKM 安装指南...
openKM环境搭建指南
openKM环境搭建指南_调查/报告_表格/模板_实用文档。OpenKm 环境搭建 1、 、 ...OpenKM使用操作手册 20页 5下载券 OpenKM高级配置_GPL 20页 2下载券 OpenKM...
更多相关标签:
openkm安装以及配置 | openkm 配置 | openkm配置doc预览 | openkm | openkm 下载 | openkm中文 | openkm源码 | openkm源码下载 |