JFlow工作流SAAS模式接入指南
一、安装指南
初始化数据库脚本
-
创建JFlow数据库:例:jflow
-
下载初始化sql文件,下载地址:https://gitee.com/opencc/JFlow/attach_files
-
运行SQL文件,初始化数据库表结构
Idea运行JFlow
-
下载JFlow代码,下载地址:https://gitee.com/opencc/JFlow
-
通过Idea打开JFlow,导入maven项目
-
设置运行环境
JDK1.8、Maven3.5+
-
设置配置文件编码为UTF-8
-
配置启动目录
Window下配置
Mac下配置
-
修改配置文件
- 修改数据库连接信息,配置文件jflow-web/src/resources/application.properties根据配置项配置spring.profiles.active=mysql的值,修改对应的数据配置信息;
- 修改端口号,配置文件jflow-web/src/resources/jflow.properties中配置项server.port的值;
- 修改运行模式,配置文件jflow-web/src/resources/jflow.properties中配置项IsStartJarPackage的值
-
运行启动项JFlowApplication
-
访问页面:http://localhost:端口
二、SAAS模式组织结构同步
部门表同步
port_dept | 部门编号 | 部门名称 | 父编号 | 组织编号 |
---|---|---|---|---|
字段 | NO | Name | ParentNo | OrgNo |
格式 | 父节点:部门;子节点:组织 + 部门 | —— | 必须为:0 | 部门对应组织表中的编号 |
举例 | 1 | 河南省***研究院 | 0 | 1 |
1_0001 | 研发部 | 1 | 1 |
用户表同步
port_emp | 用户编号 | 用户名称 | 部门编号 | 用户Id | 组织编号 | 手机号 | 密码 |
---|---|---|---|---|---|---|---|
字段 | No | Name | FK_Dept | UserID | OrgNo | Tel | Pass |
格式 | 组织编号+账号 | —— | —— | 账号 | —— | 账号 | 默认:123 |
举例 | 1_superadmin | superadmin | 1 | superadmin | 1 | superadmin | 123 |
1_zhangsan | zhangsan | 1_0001 | zhangsan | 1 | zhangsan | 123 |
用户部门中间表同步
port_deptemp | 主键 | 部门编号 | 用户账号 | 组织编号 | 用户编号 |
---|---|---|---|---|---|
字段 | MyPK | FK_Dept | FK_Emp | OrgNo | EmpNo |
格式 | 部门编号 + 账号 | —— | —— | —— | —— |
举例 | 1_superadmin | 1 | superadmin | 1 | 1_superadmin |
1_0001_zhangsan | 1_0001 | zhangsan | 1 | 1_zhangsan |
组织表同步
port_org | 组织编号 | 组织名称 | 管理员账号 | 管理员名称 |
---|---|---|---|---|
字段 | No | Name | Adminer | AdminerName |
格式 | —— | —— | —— | —— |
举例 | 1 | 河南省***研究院 | superadmin | 超级管理员 |
组织管理员表同步
port_orgadminer | 主键 | 组织编号 | 用户编号 |
---|---|---|---|
字段 | MyPK | OrgNo | FK_Emp |
格式 | 自增序号+部门编号+账号 | —— | —— |
举例 | 1_1_superadmin | 1 | 1_superadmin |
组织用户表同步
port_orgemp | 用户编号 | 组织编号 |
---|---|---|
字段 | FK_Emp | OrgNo |
格式 | 账号 | —— |
举例 | superadmin | 1 |
三、修改JFlow相关文件
配置修改
修改组织结构运行类型,配置文件jflow-web/src/resources/jflow.properties中配置项CCBPMRunModel的值为2
登录方法修改
jflow-core/bp.wf.httphandler.WF_AppClassic.Login_Submit()
//调用登录方法.
Dev2Interface.Port_GenerToken(emp.getUserID());
Dev2Interface.Port_Login(emp.getUserID(),emp.getOrgNo());
所在组织修改
jflow-core/bp.web.WebUser.getOrgNo()
if (SystemConfig.getCCBPMRunModel() == CCBPMRunModel.SAAS) {
String no = DBAccess.RunSQLReturnString("SELECT OrgNo FROM Port_Emp WHERE UserID='" + WebUser.getNo() + "'");
if(DataType.IsNullOrEmpty(no)==true)
throw new RuntimeException("err@SAAS模式人员编号为["+WebUser.getNo()+"]的Port_Emp表中组织编号不能为空");
setItemValue("OrgNo", no);
return no;
}
操作员修改
jflow-core/bp.port.Emp.Emp(String userID)
if (bp.difference.SystemConfig.getCCBPMRunModel() == CCBPMRunModel.SAAS)
{
if (userID.equals("admin") == true)
{
this.SetValByKey("No", userID);
}else if (userID.contains("_")){
this.SetValByKey("No", userID);
}
else
{
this.SetValByKey("No", WebUser.getOrgNo() + "_" + userID);
}
}
发送方法修改
jflow-core/bp.wf.httphandler.WF_MyFlow.Send()
//授权人
if (DataType.IsNullOrEmpty(auther) == false)
{
// bp.web.WebUser.IsAuthorize = true;
WebUser.setAuth(auther);
WebUser.setAuthName(DBAccess.RunSQLReturnString("SELECT Name FROM Port_Emp WHERE No='" + auther + "'"));
}
四、初始化业务数据
流程目录
新建组织时需要创建所对应的初始化流程目录**(wf_flowsort)**
表单目录
新建组织时需要创建所对应的初始化表单目录**(sys_formtree)**
五、常见问题
- 后台报错:某个字段不存在,不需要处理,JFlow会自动修复数据库表结构
- 前台提示错误:出现用户、部门、组织不存在时,需要找到对应源码,修改对应的字段