基于jeecgboot-vue3的Flowable流程仿钉钉流程设计器-发送信息服务处理

avatar
作者
筋斗云
阅读量:0

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。

1、因为仿钉钉设计器里发送消息处理是一个服务任务,所以要根据这个服务任务进行处理

2、这里目前只对消息进行处理,就是用websocket的发送方式

输入相应的内容,这里也用扩展属性来处理

3、相应的后端代码如下:

public class NotifyNode extends AssigneeNode {     private List<NotifyTypeEnum> types;     private String subject;     private String content;      @Override     public List<FlowElement> convert() {         ArrayList<FlowElement> elements = new ArrayList<>();         // 服务节点         ServiceTask serviceTask = new ServiceTask();         serviceTask.setId(this.getId());         serviceTask.setName(this.getName());         serviceTask.setAsynchronous(false);         serviceTask.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_CLASS);         serviceTask.setImplementation("org.jeecg.modules.flowable.ServiceTask.notifyDelegate");         //增加扩展属性 add by nbacheng         Map<String, List<ExtensionElement>> extensionElements = new HashMap<String, List<ExtensionElement>>();         ExtensionElement extensionElementTotal = new ExtensionElement();         extensionElementTotal.setName("flowable:properties");                   ExtensionElement eElementUser = new ExtensionElement();         eElementUser.setName("flowable:property");         ExtensionAttribute eAttributeUserName = new ExtensionAttribute();         eAttributeUserName.setName("name");         eAttributeUserName.setValue("notifyUserList");         eElementUser.addAttribute(eAttributeUserName);         ExtensionAttribute eAttributeUserValue = new ExtensionAttribute();         eAttributeUserValue.setName("value");         eAttributeUserValue.setValue(StringUtils.join(this.getUsers(), ","));         eElementUser.addAttribute(eAttributeUserValue);         extensionElementTotal.addChildElement(eElementUser);                  ExtensionElement eElementSubject = new ExtensionElement();         eElementSubject.setName("flowable:property");         ExtensionAttribute eAttributeSubjectName = new ExtensionAttribute();         eAttributeSubjectName.setName("name");         eAttributeSubjectName.setValue("subject");         eElementSubject.addAttribute(eAttributeSubjectName);         ExtensionAttribute eAttributeSubjectValue = new ExtensionAttribute();         eAttributeSubjectValue.setName("value");         eAttributeSubjectValue.setValue(this.getSubject());         eElementSubject.addAttribute(eAttributeSubjectValue);         extensionElementTotal.addChildElement(eElementSubject);                  ExtensionElement eElementContent = new ExtensionElement();         eElementContent.setName("flowable:property");         ExtensionAttribute eAttributeContent = new ExtensionAttribute();         eAttributeContent.setName("name");         eAttributeContent.setValue("content");         eElementContent.addAttribute(eAttributeContent);         ExtensionAttribute eAttributeContentValue = new ExtensionAttribute();         eAttributeContentValue.setName("value");         eAttributeContentValue.setValue(this.getContent());         eElementContent.addAttribute(eAttributeContentValue);         extensionElementTotal.addChildElement(eElementContent);                  extensionElements.put("notifyUserList", CollUtil.newArrayList(extensionElementTotal));         serviceTask.setExtensionElements(extensionElements);         elements.add(serviceTask);         // 下一个节点的连线         Node child = this.getChild();         SequenceFlow sequenceFlow = this.buildSequence(child);         elements.add(sequenceFlow);         // 下一个节点         if (Objects.nonNull(child)) {             child.setBranchId(this.getBranchId());             List<FlowElement> flowElements = child.convert();             elements.addAll(flowElements);         }         return elements;     } } 

4、相应的效果图

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!