列表流程(新)
场景描述
从业务数据中,打开页面,执行我的流程任务
实现思路
从39版本开始,流程提供了获取活动任务信息的方法。在流程的流转、回退等事件后,回写当前活动的任务信息到业务数据中,通过任务信息打开流程任务页面,如同从我的待办中打开一样。
实现步骤
1 在业务数据表上添加执行人和任务信息列
- 执行人列用来存储人员id,多个人员id,用逗号分开,这一列用于过滤当前人需要处理的业务数据
- 任务信息列用来存储任务信息,JSON数组格式,这一列用于打开流程任务页面
2 在流程的流转、回退等事件后回写执行人和任务信息数据
- 在流程的流转、回退等事件后回写数据
- 回写执行人和任务信息
- 使用获取活动任务开头的函数,其中关于执行者有4个函数可以使用
任务信息的内容格式如下:
[
{
"sProcess": "/SA/wf/default/test_liucheng",
"sStatusID": "tesExecuting",
"sExecutorFID": "/nX51x4s33R5pOj3sH3W.ogn/nX51AMo33PhprP8JK2Q.dpt/nX51Db233W5mZ23zzd5.psm",
"sActivity": "businessActivity2",
"sName": "审批:流程",
"sEURL": "/test/mobileapp/mobile/lc.w",
"sExecutorFName": "/起步/开发部/zx",
"id": "31F13E4D01EC40F49D21732EB9D88781",
"sCURL": "/test/mobileapp/mobile/lc.w",
"sData1": "C9F14324CCA000011E321AD1CAE01CBF"
}
]
3 从业务数据打开流程任务页面
特别注意:
- 当前执行者才能处理流程,因此必须注意非当前执行者不能打开流程任务页面
- 由于获取活动任务开头的4个关于执行者的函数,具有去重功能,因此他们的值和任务信息中的值不一一对应
- 如果任务信息中存在多条记录,需要通过sExecutorFID找到当前人对应的记录
在表格组件中显示业务数据,在行上显示去审批按钮,按钮的点击事件中把行数据做参数传递,然后代码中获取taskinfo
具体代码如下,引用流程组件的taskUtil.js,调用相关的API处理url后打开流程任务页面。
import taskUtil from "$UI/comp/wfmui/components/wfmui/js/taskUtil";
onAuditBtnClick = ({row}) => (event) => {
let taskInfo = row.taskinfo;//获取任务信息
taskInfo = JSON.parse(taskInfo);//转JSON
taskInfo = taskInfo[0];//示例代码,取第一条记录,实际中遍历任务信息,通过sExecutorFID找到当前人对应的记录
taskUtil.executeAndOpenTask(taskInfo);//打开流程任务页面
}