流程设计
1. Flow 中的节点

1.1 触发器
触发器就是定时任务,可定时执行当前流程。定时方式一共有三种
- 在指定时间运行一次
- 每隔一段时间循环运行
- 定制 - CRON 表达式,参考 http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html
1.2 应用中的操作
去选择各种 SDK,SDK 可自定义

1.3 IF 条件
满足 IF 的条件,即可进入 IF 分支中。条件可以有一个活多个,这些条件的关系可以是“且”或者“或”。如果选择了“且”,那么所有的条件之间的关系都是“且”。

1.4 IF/ELSE 条件
满足 IF 的条件,即可进入 IF 分支中,否则进入 ELSE 分支中。IF-ELSE 中的条件和 IF 中一样

1.5 重复动作

- 重复类型
- 输入列表 - 对某个列表进行循环
- 重复次数 - 循环多少次
- 重复模式 - 暂不支持
- 清除步骤输出 - 暂不支持
- 是否并发 - 是,表示循环的所有数据是同时进行的。否,表示循环时一条一天进行的
1.6 停止任务
标识流程结束

1.7 处理错误
类似于程序中的 try-catch,就是当某些操作失败了以后,要执行另外一些操作

1.8 表单操作

- 权限 - 打开此表单所需的表单
- 表单 - 可选择表单显示在此节点
- 布局 - 电脑端的布局
- 移动端布局 - 手机端的布局
- 操作 - 新建还是编辑当前表单
- 超时时间 - 多长时间当前节点就会超时
- 超时时间单位 - 天/小时/秒
- 成功信息 - 提交表单成功后的提示信息
- 默认值 - 设置表单默认值
1.9 审批操作

- 权限 - 打开此表单所需的表单
- 表单 - 可选择表单显示在此节点
- 布局 - 电脑端的布局
- 移动端布局 - 手机端的布局
- 实体实例 - 对某个表单的审批,表单一定是已经存在的。表单的实例 id
- 成功信息 - 审批成功后的提示信息
- 同意时是否需要意见 - 同意时是否需要意见
- 拒绝时是否需要意见 - 拒绝时是否需要意见
- 超时时间单位 - 天/小时/秒
- 成功信息 - 提交表单成功后的提示信息
2. Flow 中的 token
2.1 固定的 token
2.1.1 $SUBMITTER.xxx
流程启动者的信息
可选项
id- 数据库 iduserId- 同idusername- 用户名/登录名nickName- 别名email- 邮箱phone- 电话gender- 性别birthday- 生日position- 职位workStatus- 工作状态mailingAddress- 邮寄地址department- 部门avatarPath- 头像路径roles- 角色名称parameter_1- 自定义字段- ...
parameter_50- 自定义字段visible_parameter_1- 自定义字段- ...
visible_parameter_50- 自定义字段
使用案例
// 1. 直接使用
$SUBMITTER.phone
// 2. 混合使用
提交者的电话为:$SUBMITTER.phone
2.1.2 $CURRENT_USER.xxx
当前登录用户的信息
id- 数据库 iduserId- 同idusername- 用户名/登录名nickName- 别名email- 邮箱phone- 电话gender- 性别birthday- 生日position- 职位workStatus- 工作状态mailingAddress- 邮寄地址department- 部门avatarPath- 头像路径roles- 角色名称parameter_1- 自定义字段- ...
parameter_50- 自定义字段visible_parameter_1- 自定义字段- ...
visible_parameter_50- 自定义字段
使用案例
// 1. 直接使用
$CURRENT_USER.phone
// 2. 混合使用
当前用户的电话为:$CURRENT_USER.phone
2.1.3 $FLOW_INSTANCE_ID
当前流程的 ID
使用案例
// 1. 直接使用
$FLOW_INSTANCE_ID
2.1.4 $THREAD_ID
当前 Thread Id,通常用在 重复动作 的子节点中
使用案例
// 1. 直接使用
$THREAD_ID
2.1.5 $CURRENT_TIME.xxx
获取当前时间
YYYY_MM_DD_HH_mm- 标准日期时间格式,精确到分:yyyy-MM-dd HH:mm。例如:2022-08-25 10:08YYYY_MM_DD_HH_mm_ss- 标准日期时间格式,精确到秒:yyyy-MM-dd HH:mm:ss。例如:2022-08-25 10:08:22YYYY_MM_DD- 标准日期时间格式 yyyy-MM-dd。例如:2022-08-25
使用案例
// 1. 直接使用
$CURRENT_TIME.YYYY_MM_DD
// 2. 混合使用
当前时间为: $CURRENT_TIME.YYYY_MM_DD_HH_mm
2.1.6 $QUERY_PARAMS.xxx
获取 URL 中的 query parameter,主要用在表单的默认值中。
使用案例
// 假设当前表单路径为 /ui/mobile/activities/137145/registration?activityId=110&activityName=羽毛球比赛,那么在表单中,即可以使用
$QUERY_PARAMS.activityId
$QUERY_PARAMS.activityName
2.1.7 $APPLICATION.xxx
获取配置文件中的信息,配置存在于后端的 application.yml, application-prod.yml
使用案例
$APPLICATION.app.base-url
2.2 动态 token
2.2.1 如果是获取表单的结果
$x.formEntityDataId- 替换$x为对应的节点的 ID。表示表单的实例 ID$x.formEntityData.xxx- 替换$x为对应的节点的 ID。表示表单中的数据。
3. SDK
3.1 内置 SDK
-
企业微信发送消息 - 给对应用户发消息,有三个参数
- 用户 - 需要发放消息的用户的企业微信用户名
- 消息类型 - 需要发送消息的类型,通常为 text 详情参见: https://developer.work.weixin.qq.com/document/path/90236
- 消息 - 要发送的消息,json 格式,e.g.
{ "content" : "你好 " }
-
新建表单数据 - 此
SDK暂时没有 UI 界面,可以编辑 JSON{
"id": xxx,
"type": "APP",
"sdk": {
"id": 13,
"name": "新建表单数据",
"sdkType": "CREATE_ENTITY",
"inputFields": [],
"outputFields": [],
"formInput": {
"userId": "$2.value.userId",
"username": "$2.value.username",
"nickname": "$2.value.nickName"
},
"formEntityId": "1"
}
}
4. 新建流程
TODO