流程进入时、异常时、终止时,给用户发消息,通知用户

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的Lis流程进入时、异常时、终止时,给用户发消息,通知用户
1 问题描述在流程进入时、异常时、终止时,给用户发消息,通知用户。2 解决方法可以使用业务事件中心设置事件订阅。2.1流程进入时(1)新...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



