流程进入时、异常时、终止时,给用户发消息,通知用户
1 问题描述
在流程进入时、异常时、终止时,给用户发消息,通知用户。
2 解决方法
可以使用业务事件中心设置事件订阅。
2.1流程进入时
(1)新增事件订阅
(2)选择事件定义,搜索“流程实例启动”,选择事件编码为 wf.AfterProcessStartEvent的事件。
(3)编写插件代码,由于我的场景是需要发消息给流程发起人,因此我这里需要用插件实现,如果有其他业务场景,也可以选择固定的人员,
参考插件代码:
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import kd.bos.bec.api.IEventServicePlugin; import kd.bos.bec.model.KDBizEvent; import kd.bos.servicehelper.workflow.WorkflowServiceHelper; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; // 业务事件中心,发消息,消息接收人插件 public class SendWfMsgEventPlugin implements IEventServicePlugin { @Override public Map<String, List<Long>> calculateUserIds(KDBizEvent evt) { Map<String, List<Long>> listMap = new HashMap<>(); // 流程启动 if (evt.getEventNumber().contains("AfterProcessStartEvent")) { JSONArray jsonArray = JSONArray.parseArray(evt.getSource()); JSONObject jsonObject = jsonArray.getJSONObject(0); // 获取发起人id,返回流程发起人id String startUserId = jsonObject.getString("startUserId"); String businessKey = jsonObject.getString("businKey"); List<Long> list = new ArrayList(); // 构造用户id的List对象 list.add(Long.parseLong(startUserId)); // 固定写法 listMap.put("businesskey", list); } return listMap; } }
(4)自定义消息内容、编辑标题、正文。
(5)效果如下
2.2流程异常时
(1)新增事件订阅,绑定事件定义(编码:wf.AfterProcessErrorSuspendEvent)
(2)注册插件,编写插件代码,发消息给流程发起人
代码如下
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import kd.bos.bec.api.IEventServicePlugin; import kd.bos.bec.model.KDBizEvent; import kd.bos.servicehelper.workflow.WorkflowServiceHelper; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; // 业务事件中心,发消息,消息接收人插件 public class SendWfMsgEventPlugin implements IEventServicePlugin { @Override public Map<String, List<Long>> calculateUserIds(KDBizEvent evt) { Map<String, List<Long>> listMap = new HashMap<>(); // 流程挂起 if (evt.getEventNumber().contains("AfterProcessErrorSuspendEvent")) { JSONArray jsonArray = JSONArray.parseArray(evt.getSource()); JSONObject jsonObject = jsonArray.getJSONObject(0); // 单据的pkid String businessKey = jsonObject.getString("businKey"); // 流程实例id String processInstanceId = jsonObject.getString("processInstanceId"); Map<String, Object> proInMap = WorkflowServiceHelper.getProcessInstancePropertiesByBusinesskey(businessKey); Object startUserId = proInMap.get("startUserId"); //用流程实例id,查询流程实例表,也可以获取发起人 //DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(processInstanceId, "wf_execution"); //Object startUserId = dynamicObject.get("startuserid"); List<Long> list = new ArrayList(); // 构造用户id的List对象 list.add( (startUserId instanceof Long) ? (long) startUserId : Long.valueOf(startUserId.toString()) ); // 固定写法 listMap.put("businesskey", list); } return listMap; } }
2.3流程终止时
(1)新增事件订阅,绑定事件定义(编码:wf.AfterProcessAbortEvent)
(2)注册插件,编写插件代码,发消息给流程发起人
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import kd.bos.bec.api.IEventServicePlugin; import kd.bos.bec.model.KDBizEvent; import kd.bos.servicehelper.workflow.WorkflowServiceHelper; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; // 业务事件中心,发消息,消息接收人插件 public class SendWfMsgEventPlugin implements IEventServicePlugin { @Override public Map<String, List<Long>> calculateUserIds(KDBizEvent evt) { Map<String, List<Long>> listMap = new HashMap<>(); // 流程终止 if (evt.getEventNumber().contains("AfterProcessAbortEvent")) { JSONArray jsonArray = JSONArray.parseArray(evt.getSource()); JSONObject jsonObject = jsonArray.getJSONObject(0); // 单据的pkid String businessKey = jsonObject.getString("businKey"); // 流程实例id String processInstanceId = jsonObject.getString("processInstanceId"); Map<String, Object> proInMap = WorkflowServiceHelper.getProcessInstancePropertiesByBusinesskey(businessKey); Object startUserId = proInMap.get("startUserId"); //用流程实例id,查询流程实例表,也可以获取发起人 //DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(processInstanceId, "wf_execution"); //Object startUserId = dynamicObject.get("startuserid"); List<Long> list = new ArrayList(); // 构造用户id的List对象 list.add( (startUserId instanceof Long) ? (long) startUserId : Long.valueOf(startUserId.toString()) ); // 固定写法 listMap.put("businesskey", list); } return listMap; } }
流程进入时、异常时、终止时,给用户发消息,通知用户
1 问题描述在流程进入时、异常时、终止时,给用户发消息,通知用户。2 解决方法可以使用业务事件中心设置事件订阅。2.1流程进入时(1)新...
点击下载文档
上一篇:自定义样式的使用场景下一篇:工作流加签,修改加签节点决策项
本文2024-09-23 00:17:12发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-138500.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章