JFlow工作流SaaS组织模式集成

JFlow工作流SAAS模式接入指南


一、安装指南


初始化数据库脚本

  1. 创建JFlow数据库:例:jflow

  2. 下载初始化sql文件,下载地址:https://gitee.com/opencc/JFlow/attach_files
    JFlow工作流SaaS组织模式集成_第1张图片

  3. 运行SQL文件,初始化数据库表结构

Idea运行JFlow

  1. 下载JFlow代码,下载地址:https://gitee.com/opencc/JFlow

  2. 通过Idea打开JFlow,导入maven项目

  3. 设置运行环境

    JDK1.8、Maven3.5+

  4. 设置配置文件编码为UTF-8
    JFlow工作流SaaS组织模式集成_第2张图片

  5. 配置启动目录

    Window下配置
    JFlow工作流SaaS组织模式集成_第3张图片

    Mac下配置
    JFlow工作流SaaS组织模式集成_第4张图片

  6. 修改配置文件

    • 修改数据库连接信息,配置文件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的值
  7. 运行启动项JFlowApplication

  8. 访问页面: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会自动修复数据库表结构
  • 前台提示错误:出现用户、部门、组织不存在时,需要找到对应源码,修改对应的字段

你可能感兴趣的:(JFlow,java)