综合

# 如何支持外部表单?

  1. 删除流程中的表单,仅仅使用外部表单是不可以的。举个例子:工作流中条件分支使用了表单中的一个数字表单当条件,外部表单如何实现?
  2. 所以我们要结合外部表单和工作流表单一起使用

# 使用方法

# 以请假为例

  1. 首先先创建完整的工作流表单和流程,比如表单有:开始时间结束时间两个表单

这里要记录下三个字段:流程id(第一张图)和各个表单id(第二张图点击每个表单右侧会显示)

上图对应的流程id:flyflow_flow_497599681047

开始时间id:flyflow_form_498203572070

结束时间id:flyflow_form_498220889239

  1. 假如外部表单也有两个字段对应的开始时间(startTime)和结束时间(endTime)
  2. 业务流程发起表单的时候可以将业务表的字段值转为流程的表单值发起 假设现在业务表中的开始时间和结束时间的值如下
{
    "startTime": "2024-05-06 09:00:00",
    "endTime": "2024-05-08 18:00:0"
}

那转成流程表单值如下:

{
    "flyflow_form_498203572070": "2024-05-06 09:00:00",
    "flyflow_form_498220889239": "2024-05-08 18:00:0"
}
  1. 调用发起流程,具体可以打开页面F12找到发起流程的接口和参数格式 请求地址:/process-instance/startProcessInstance

请求参数:

{
    "uniqueId": "flyflow_flow_497599681047",
    "paramMap": {
        "flyflow_form_498203572070": "2024-05-06 09:00:00",
        "flyflow_form_498220889239": "2024-05-08 18:00:0",
        "dynamicFormLastIndex": -1,
        "startUserMainDeptId": "1"
    }
}

uniqueId:即表单id

dynamicFormLastIndex:默认动态表单查询索引-1,必填的

startUserMainDeptId:发起人的主部门id,如果有一人多部门的情况,此处要选择一个主部门id,必填的

  1. 关于业务表单如何转为流程表单:可以建立一个表单映射关系表,即业务表id和流程表单id的映射
  2. 业务表单转成流程表单的格式,可以查看表单文档有介绍表单 (opens new window)

# 如何实现不同节点不同表单?

  1. 一个流程只有一套表单,所谓的不同节点不同表单是通过权限控制的

  2. 打开审批人节点如下即可配置

# 如何查询历史流程变量?

## 流程实例id
String pid="";
List<HistoricVariableInstance> list = historyService.createHistoricVariableInstanceQuery().processInstanceId(pid).list();

上述查询会查询到所有的变量,包括本地变量

比如,流程变量和本地任务变量里都有一个key是var的,值分别是1和2

那上述查询的所有变量里会有两个var的变量,区别是有一个变量里有taskId,标记为是任务本地变量

# 如何查询历史流程任务本地变量?

## 流程实例id
String pid="";
## 任务id
String tid="";
List<HistoricVariableInstance> list = historyService.createHistoricVariableInstanceQuery().taskId(tid).processInstanceId(pid).list();