o2oa 部署 - 开源OA 网管技术


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)验证测试流程

 


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回