https://github.com/o2oa/o2oa/releases
http://www.o2oa.net/download.html
https://my.oschina.net/o2oa
---确认开通服务器的80、20020、20030端口
cd /data/site/go/htmltoo.ssh/tools/soft/src/developer/
wget http://mirror1.o2oa.net/download/o2server-5.2.5-linux-x86.zip
unzip o2server-5.2.5-linux.zip
mv o2server /opt
cd /opt/o2server && cp -a configSample config
mv config/externalDataSources.json config/externalDataSources.json.bak
vim config/node_127.0.0.1.json # 修改端口88, 数据库为mysql
nohup bash ./start_linux.sh & # 默认启动 ./start_linux.sh
start
默认用户名: xadmin 密码: o2 (新: w~0)
./stop_linux.sh # 关闭
1.修改WEB服务器端口
o2server/config/node_127.0.0.1.json, 如果目录里没有该文件,可以从configSample目录里COPY一个到config目录下。
...
"application": {
"enable": true,
"port": null, #应用服务器端口设置,默认20020
...
"web": {
"enable": true,
"port": null, #WEB服务器端口设置,默认80 , 将此处改为其他端口即可
...
"storage": {
"enable": true,
"port": null, #文件存储服务器端口设置,默认20040
...
"data": {
"enable": true,
"tcpPort": null, #数据库服务器端口设置,默认20050
2.使用外部数据库
---内置数据库相关配置
"data": { #内置数据库相关配置,可以修改端口以及是否启用
"enable": true, #修改enable的值为false---开启和配置外部数据库信息
配置文件路径:o2server/config/externalDataSources.json
如果没有该文件,请从目录o2server/config/sample/ (或者o2server/configSample目录) 中复制externalDataSources.json文件到o2server/config目录下。
将其中的url、username、password以及enable信息修改为Mysql的相关信息:
[
{
"url":"jdbc:mysql://127.0.0.1:3306/X?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai",
"username" : "root",
"password" :"password",
"includes": [],
"excludes": [],
"enable" : true
}
]---
URL参数说明如下:
useUnicode: 是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true false 1.1g
characterEncoding: 当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk false 1.1g
autoReconnect: 当数据库连接异常中断时,是否自动重新连接? false 1.1
autoReconnectForPools: 是否使用针对数据库连接池的重连策略 false 3.1.3
failOverReadOnly: 自动重连成功后,连接是否设置为只读? true 3.0.12
maxReconnects: autoReconnect设置为true时,重试连接的次数 3 1.1
initialTimeout: autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒 2 1.1
connectTimeout: 和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本 0 3.0.1
socketTimeout: socket操作(读写)超时,单位:毫秒。 0表示永不超时 0 3.0.1
serverTimezone=Asia/Shanghai, 默认 serverTimezone=UTC
---
数据库连接URL中的数据 X01 是需要预选创建的,O2Server会自动创建数据表,但不会自动创建数据库。
设置完成后,重启o2server即可。
---
修改配置文件: o2server/config/person.json
3.服务器备份和数据导入导出
config/node_127.0.0.1.json
//数据库导出备份相关配置
"dumpData":{
"cron" : "0 0 21 * * ?", //数据库导出备份执行的时间周期,Cron表达式
"size" : 14 //数据库导出备份文件保留的最大个数
},
//文件导出备份相关配置
"dumpStorage":{
"cron" : "0 0 21 * * ?", //文件存储导出备份执行的时间周期,Cron表达式
"size" : 14 //文件存储导出备份文件保留的最大个数
}
}---备份文件存放位置:o2server\local\backup
---常用的CRON表达式:
(1)0 0 2 1 * ? * 表示在每月的1日的凌晨2点调整任务
(2)0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业
(3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作
(4)0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
(5)0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
(6)0 0 12 ? * WED 表示每个星期三中午12点
(7)0 0 12 * * ? 每天中午12点触发
(8)0 15 10 ? * * 每天上午10:15触发
(9)0 15 10 * * ? 每天上午10:15触发
(10)0 15 10 * * ? * 每天上午10:15触发
(11)0 15 10 * * ? 2005 2005年的每天上午10:15触发
(12)0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
(13)0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
(14)0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
(15)0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
(16)0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
(17)0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
(18)0 15 10 15 * ? 每月15日上午10:15触发
(19)0 15 10 L * ? 每月最后一日的上午10:15触发
(20)0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发
(21)0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发
(22)0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发
---
参数size:因为考虑到备份对磁盘容量的消夏,O2OA支持只保留指定数量的备份文件。
超过size指定数量的备份文件时,最早的备份文件将会被删除。
---web
/opt/o2server/servers/webServer/x_desktop
4.报销审批流程需求说明
我们要设计的报销审批流程大致需求如下:
1)报销审批属于财务部门主管的业务流程,所以需要放入财务管理的应用中。
2)审批过程:拟稿人申请 --> 部门领导审核 --> 财务部门复审 --> 如果超过5000元需要公司领导审批 --> 财务人员办理 --> 结束。
3)需要申请人填写的信息有:标题、报销事项的简要说明、报销类型、报销明细(包括费用发生日期、费用类型、费用说明、金额和备注)、电子发票可以通过附件上传等。
了解了基本的需求信息,我们就可以开始设计流程了。
5.创建报销审批流程应用
报销审批属于财务管理应用,所以要新建一个名为“财务管理”的流程应用。
在设计中心点击流程管理平台图标可进入流程应用管理界面,如下图:
点击左上角新建按钮,可创建新应用。弹出应用新建对话框:
“应用名称”:填写“财务管理”;
“应用别名”:可随意填写,只要不和其他应用的别名重名即可,这里我们填写“finance”;
“应用描述”:可随意填写;
“应用类型”:可随意填写;
点击“完成”按钮,就创建了新的应用:“财务管理”。
点击“财务管理”应用,打开应用设计界面:
流程信息中各项功能简要说明:
表单配置:设计和开发流程中需要使用的表单。
流程配置:设计和开发流程各审核环节的信息。
数据配置:设计和管理流程中需要使用的数据,比如报销类型、请假类型等固定可选的数据等。
脚本配置:设计和开发流程中需要调用的脚本。
附件配置:提供流程中可以直接访问的固定的文档、图片,便于直接以URL方式访问。
应用属性:对应用的信息,权限进行管理和设定。
6.报销审批流程表单开发
在应用设计界面中选中“表单配置”导航,点击左上角的“新建表单”按钮。
7.创建报销审批流程
---流程需求描述:
报销审批过程:拟稿人申请——部门领导审核——财务部门复审——如果超过5000元需要公司领导审批——财务人员办理——结束。
1)新建流程
在应用设计界面中选中“流程配置”导航,点击左上角的“新建流程”按钮。
2)新建活动
分析得出,我们需要以下活动节点:
一个“开始活动”:代表流程开始;
一个“结束活动”,代表流程结束;
五个“人工活动”:用于申请人填写信息、部门领导审核、财务部门复审、公司领导审批和财务人员办理。
一个“选择活动”,用于判断金额控制流程走向。
流程模板中,已有一个“开始活动”、一个“结束活动”、一个“选择活动”和三个” 人工活动”,所以我们要创建两个人工活动。
3)修改活动属性
一般情况下开始活动和结束活动不需要进行修改,我们主要修改人工活动。
申请人活动:
选中“拟稿”活动,在属性区会列出,在“基本”标签页中,把“名称”修改为“申请人”,“表单”选择为“报销申请表单”。
部门领导审核活动:
选择一个“未名称”活动,和申请人活动一样,把活动的名称修改为“部门领导审核”。再切换到“人员”标签页,在处理人配置中,选择“部门领导”职务。在“职位”处点击“+”按钮,弹出职务选择对话框,通过搜索,选择“部门领导”职务,点击确定,在弹出的后续对话框中点击“拟稿人所在组织”,再点击确定。如下图:
财务部门复审:
选择一个“未名称”活动,和申请人活动一样,把活动的名称修改为“财务部门复审”。再切换到“人员”标签页,在处理人配置中,在“用户标识”中选择合适的处理人。配置过程如下:
公司领导审批:
选择“办理A”活动,把活动的名称修改为“公司领导审批”。再切换到“人员”标签页,在处理人配置中,在“用户标识”中选择公司领导作为处理人(可以指定人员,也可以指定职务)。
财务人员办理:
选择“办理B”活动,把活动的名称修改为“财务人员办理”。再切换到“人员”标签页,在处理人配置中,在“用户标识”中选择合适的财务人员作为处理人(可以指定人员,也可以指定职务)。
4)修改路由
接下来要将这些活动通过路由将这些活动按流程要求连接起来,以确保流程将按照我们的需求进行流转。
首先,申请人处理后,要交由”部门领导审核”, 所以要修改“送办理”这条路由。点中“送办理”路由的箭头部分,按住鼠标左键不放,将鼠标移动到“部门领导审核”活动上,然后松开鼠标左键,这样,就将“送办理”这条路由的终点,修改为“部门领导审核”活动了。
然后选中“送办理”路由(路由显示为橙色),在属性区,将名称改为“送部门领导审核”
部门领导审核后将流转给财务部门复审,所以要创建一条从“部门领导审核”活动到“财务部门复审”的路由。鼠标双击“部门领导审核”活动,移动鼠标,会发现在流程编辑区域有一条起点为“部门领导审核”活动,没有终点的“未命名”路由,路由箭头跟随鼠标移动,颜色为红色。移动鼠标到“财务部门复审”活动,单击鼠标左键,路由箭头将指向“财务部门复审”活动,这样就创建了一条从“部门领导审核”活动到“财务部门复审”的路由。
然后选中刚刚新建的路由,在属性区,将名称改为“送财务部门复审”。
财务部门复审后,有两个可能,一是总金额小于或等于5000的情况下,交由财务部门办理;二手总金额大于5000时需要公司领导审批。所以我们要建一条路由指向选择活动,命名为“财务审核通过”。创建方法与上述相同。
然后修改“公司领导审批”活动的“完成“路由,将其终点设置为 “财务人员办理”活动,方法同“申请人“活动的”送部门领导审核“路由,并改名为”审批通过“。
在选择活动中,我们要根据不同的条件来执行不同的路由,需要给选择条件的路由添加配置。先选中指向公司领导审批活动的路由,在属性框中切换到“条件“选项卡,点击编辑框,在编辑框中输入如下内容:
return parseFloat(this.data.expenseList.total.amountCol)> 5000;
其中parseFloat 是Javascript函数,将后面“()“中的数值转化为数字;
this.data是指流程实例中,通过表单收集的业务数据;
expenseList是表单中报销明细的数据网格;
total是指数据网格合计部分的数据;
amountCol是指数据网格中的amountCol列。
其含义为:返回一个布尔型值,数据网格“expenseList“的合计列”amountCol“的值,是否大于5000.
然后将此路由改名为“送公司领导审批“。
同样,我们要修改指向“财务人员办理“的路由,将条件修改为:
return parseFloat(this.data.expenseList.total.amountCol)<= 5000;
将路由名称修改为“送财务人员办理“。
这样,我们的流程就可以执行了,当然您可以为相关活动添加退回路由,比如:部门领导退回申请人,财务复核退回申请人,公司领导退回申请人。
5)保存流程
最后我们可以拖动各个流程节点和路由,使得图形更加美观。

6)验证测试流程