流程设计器基于 LogicFlow 开发,相关数据属性基于其进行补充,此文档仅会介绍服务端解析流程所需的属性。
| 属性名 | 类型 | 说明 |
|---|
| flowId | long | 工作流id,是 wf_definition 表的主键 id |
| flowVerId | long | 工作流版本id,是 wf_definition_ver 表的主键 id |
| majorVer | int | 主版本号 |
| minorVer | int | 次版本号 |
| nodes | NodeModel[] | 节点数组,具体结构见节点 |
| edges | EdgeModel[] | 边数组,具体结构见边 |
| category | int | 当前流程所属的分类,用于区分当前流程属性哪个模块。如:工单、请假等 |
| formIds | long[] | 当前流程可用的表单列表 |
节点属性基于 nodeModel,下面只会介绍服务的所需的属性。
| 属性名 | 类型 | 说明 |
|---|
| id | string | 节点id |
| type | string | 节点类型 |
| properties | object | 业务自定义属性,我们自定义的节点属性都会在这里 |
| 类型 | 说明 |
|---|
| StartEvent | 启动事件 (Start Event): 用于表示流程的开始点,通常用一个空心圆表示。它标志着流程的启动。 |
| EndEvent | 结束事件 (End Event): 表示流程或分支的自然结束,什么都不做。当流程有多个分支路线被激活时,最后一个分支自然结束后,流程实例结束。 |
| TerminateEndEvent | 终止结束事件 (Terminate End Event):表示流程被强制终止,什么都不做。当流程有多个分支路线被激活时,这些分支上的活动任务也被终止。 |
| ParallelGateway | 并行网关 (Parallel Gateway): 用于并行执行多个分支,所有分支都会被执行。 并行网关用于无条件的拆分或合并分支,该类网关对连线条件是忽略的。并行网关有分支和合并两种行为,允许多进多出。 |
| ExclusiveGateway | 排他网关 (Exclusive Gateway):定义了一组分支的唯一决策,所有流出的分支被顺序评估,第一个条件被评估为true的分支被执行,并不再继续评估下面的分支 |
| InclusiveGateway | 包容网关 (Inclusive Gateway):是排他网关和并行网关的综合体。当决策时,与排他网关所不同的是,所有条件为true的后继分支都会被执行。 |
| UserTask | 用户任务 (User Task):代表需要人类干预或参与的任务。这通常涉及到手动操作,例如填写表单、审核文件等。用户任务是流程中的一环,直到某个用户完成任务后,流程才能继续。 |
| ServiceTask | 服务任务 (Service Task): 服务任务代表由计算机系统或外部服务自动执行的任务。这可能包括调用一个API,执行某个特定的操作,或者执行一些自动化的业务逻辑。 |
每个流程可以关联多个表单;每个节点可以控制多个表单的权限。这里使用 Map 存储,可以更快的获取表单控制信息。
工作流每到一个节点都要产生任务实例,不同的配置会出现单个任务实例或多个任务实例。所有的任务都要进行认领后才能处理,遵循先到先得的原则。
| 属性名 | 类型 | 说明 |
|---|
| type | TaskInstanceType | 任务实例类型,当候选者有多个时必须配置,不同类型会有不同的处理方式。singleton - 单例、竟签;只会产生一个任务,只要有一人获取到任务执行后就可以流转到下一个节点。parallel - 并行、并签;会产生多个任务,多人同时审批,全部或超过设定比例通过后可到下一节点。sequential - 串行、串签;会产生多个任务,多人按序逐个审批,全部或超过设定比例通过后可到下一节点。
|
| loopCardinality | string | 循环基数,用于限制循环任务的数量(非 singleton 时可用)。可用变量:nrOfLoops - 循环数,即根据配置的候选人数量确定。
|
| completionCondition | string | 完成条件,当达到这个条件时任务将自动完成进入下一环节,剩余的任务实例将废弃(非 singleton 时可用)。 可用变量:nrOfCompletedInstances - 已完成实例数。nrOfActiveInstances - 活动的实例数。nrOfInstances - 产生的实例数。
|
用于控制表单内的字段、按钮等信息。在配置节点时,加载表单的 json schema 数据后,解析出表单字段信息,以设计中大纲树的模式进行字段权限配置。
| 属性名 | 类型 | 说明 |
|---|
| enabled | boolean | 是否启用表单 |
| formFields | Map<${fieldKey}, FormField> | 表单字段控制信息。使用表单唯一标识为 key 进行存储;表单 json schema 进行动态调整,利用字段的 path 信息并结合 setFieldState 方法快速更新字段状态。 |
| buttons | Button[] | 全部的按钮数组。控制在当前节点显示哪些按钮,按钮也可以设置事件。 |
| 属性名 | 类型 | 说明 |
|---|
| display | FormDisplayType | 字段的显示状态。none - 全隐藏,删除数据hidden - 半隐藏,不会删除数据visible - 显示数据
|
| pattern | FormPatternType | 字段交互模式。 editable - 可编辑disabled - 禁用readOnly - 只读readPretty - 阅读模式
|
| path | string | 字段数据路径的完整字符串,就是 FormPath 的 entire 值。 |
| 属性名 | 类型 | 说明 |
|---|
| name | string | 按钮展现的名字,默认会空,会根据类型自动显示名字 |
| type | ButtonType | 按钮类型,不同类型的按钮有不同的功能。 |
| enabled | boolean | 是否启用按钮,不启用则不显示这个按钮 |
| dropdownItem | boolean | 是否为下拉菜单项 |
| actions | ButtonAction[] | 按钮动作数组。当点击按钮时,会触发动作。 |
| 类型 | 按钮名字 | 说明 |
|---|
| save | 保存 | 保存已认领任务的表单的数据,不会进行流转。 |
| complete | 完成 | 将当前任务设置为完成状态。 |
| back | 退回 | 退回到上一个节点。 |
| transfer | 转办 | 将当前任务转给其他人办理。 |
| delegate | 委派 | 将当前任务委托给其他人办理,办理完成后会回到自己这里。 |
| revoke | 撤回 | 完成任务后发现有错误需要修改,可以撤回修改后再提交。 |
| 属性名 | 类型 | 说明 |
|---|
| type | ButtonActionType | 动作类型,通过类型来区分点击按钮后的附加动作 updateValue - 修改表单的值,使用赋值表达式。 |
| script | string | 动作的脚本,当点击按钮时,会执行该脚本。 |
| 属性名 | 类型 | 说明 |
|---|
| scope | ScopeType | 岗位范围,当选择岗位后,可以选择不同的范围来限制受理人。这个非常有用,比如在请假流程中,首级审批人通常为发起人的部门领导。startUserDepartment - 发起流程用户所在部门 startUserSuperiorDepartment - 发起流程用户所在部门的上级部门department - 指定部门 all - 所有、不限制范围,只要是当前岗位的人员均可受理。
|
| jobPositionId | Long | 岗位主键 id |
| jobPositionCode | string | 岗位编码 |
| jobPositionName | string | 岗位名称 |
| departments | NodeCandidateDepartment[] | 当范围为 department 时存贮范围部门的信息 |
| 属性名 | 类型 | 说明 |
|---|
| id | Long | 员工 Id |
| employeeNumber | string | 员工工号 |
| employeeName | string | 员工姓名 |
候选部门有两个特殊数据,发起人所在部门、发起人上级部门;这两个特殊数据对应的部门 id 分别为 -1、-2。
| 属性名 | 类型 | 说明 |
|---|
| id | Long | 部门 Id |
| departmentName | string | 部门名称 |
| 属性名 | 类型 | 说明 |
|---|
| id | Long | 技能 Id |
| skillCode | string | 技能编码 |
| skillName | string | 技能名称 |
| 属性名 | 类型 | 说明 |
|---|
| id | Long | 角色 Id |
| roleName | string | 角色名称 |
边属性基于 edgeModel,下面只会介绍服务的所需的属性。
| 属性名 | 类型 | 说明 |
|---|
| id | string | 节点 id |
| type | string | 边类型 |
| sourceNodeId | string | 开始节点 Id |
| targetNodeId | string | 结束节点 Id |
| properties | object | 业务自定义属性,我们自定义的节点属性都会在这里 |
| 属性名 | 类型 | 说明 |
|---|
| conditionExpression | string | 条件表达式 |
| priority | number | 优先级,值越小越优先。取值范围 0 ~ 100 |