在vue中bpmn-js手动加入userTask节点

需要加入的内容

<userTask id="Activity_02p4ene" name="指定人员(并签)" flowable:userType="candidateUsers" flowable:dataType="dynamic" flowable:candidateUsers="${approval}">
  <documentation>指定人员(并签)</documentation>
  <incoming>Flow_0wmym8h</incoming>
  <outgoing>Flow_1l60g5k</outgoing>
  <multiInstanceLoopCharacteristics flowable:collection="Activity_02p4ene_users" flowable:elementVariable="approval" isSequential="false">
    <completionCondition>${nrOfCompletedInstances==nrOfInstances}</completionCondition>
  </multiInstanceLoopCharacteristics>
</userTask>

实现代码

manuallyInsertUserTask() {
  const modeling = this.modeler.get('modeling');
  const elementFactory = this.modeler.get('elementFactory');
  const moddle = this.modeler.get('moddle');
  const elementRegistry = this.modeler.get('elementRegistry');
  // 查找流程定义元素
  const processElement = elementRegistry.find(element => element.type === 'bpmn:Process');
  // 创建 User Task 元素
  const userTaskElement = elementFactory.createShape({
    type: 'bpmn:UserTask',
    id: 'Activity_02p4ene', // 自定义 ID
    x: 100,
    y: 100,
  });
  // 设置 User Task 的属性
  const businessObject = userTaskElement.businessObject;
  businessObject.name = '指定人员(并签)';
  businessObject.set('flowable:userType', 'candidateUsers');
  businessObject.set('flowable:dataType', 'dynamic');
  businessObject.set('flowable:candidateUsers', '${approval}');
  
  // 创建 documentation 子元素
  const documentationElement = moddle.create('bpmn:Documentation', { text: '指定人员(并签)' });
  businessObject.documentation = [documentationElement];

  // 创建 incoming 元素
  const incomingElement = moddle.create('bpmn:SequenceFlow', { id: 'IncomingFlow', sourceRef: processElement });
  businessObject.incoming = [incomingElement];

  // 创建 outgoing 元素
  const outgoingElement = moddle.create('bpmn:SequenceFlow', { id: 'OutgoingFlow', targetRef: processElement });
  businessObject.outgoing = [outgoingElement];

  // 创建 multiInstanceLoopCharacteristics 元素
  const multiInstanceElement = moddle.create('bpmn:MultiInstanceLoopCharacteristics', {
    'isSequential': false,
    'flowable:collection': 'Activity_02p4ene_users',
    'flowable:elementVariable': 'approval'
  });
  const completionConditionElement = moddle.create('bpmn:FormalExpression', { body: '${nrOfCompletedInstances==nrOfInstances}' });
  multiInstanceElement.completionCondition = completionConditionElement;
  businessObject.loopCharacteristics = multiInstanceElement;

  modeling.createShape(userTaskElement, { x: 0, y: 0 }, processElement);
},
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue使用bpmn-js可以通过以下几个步骤实现: 1. 首先,安装bpmn-js的依赖包。你可以使用npm或者yarn来进行安装,具体安装命令如下: ``` npm install bpmn-js ``` 或者 ``` yarn add bpmn-js ``` 2. 在Vue组件引入bpmn-js的库文件。在你需要使用bpmn-js的组件,可以使用import语句引入bpmn-js的库文件,具体代码如下: ``` import BpmnViewer from 'bpmn-js'; ``` 3. 创建一个容器来展示bpmn图。在你的Vue组件模板,创建一个div元素作为容器来展示bpmn图,例如: ``` <div id="bpmn-container"></div> ``` 4. 在Vue组件的mounted钩子函数初始化bpmn-js。在Vue组件的mounted钩子函数,可以使用bpmn-js的构造函数来初始化bpmn-js,并将其绑定到之前创建的容器上,具体代码如下: ``` mounted() { const container = document.getElementById('bpmn-container'); const viewer = new BpmnViewer({ container }); // 加载和显示bpmn图的代码 } ``` 5. 加载和显示bpmn图。在初始化bpmn-js之后,你可以使用load方法加载和显示一个bpmn图。load方法接受一个bpmn图的XML字符串作为参数,具体代码如下: ``` viewer.importXML(/* bpmn图的XML字符串 */); ``` 6. 最后,你可以根据需要对bpmn图进行进一步的操作和处理,比如增加交互事件或者自定义样式等。 需要注意的是,上述代码只是一个示例,实际使用bpmn-js可能还需要更多的配置和处理。你可以根据具体的需求进行进一步的学习和开发。 引用: 'Id': '编号', 'Name': '名称', 'General': '常规', 'Details': '详情', 'Message Name': '消息名称', 'Message': '消息', 'Initiator': '创建者', 'Asynchronous continuations': '持续异步', 'Asynchronous before': '异步前', 'Asynchronous after': '异步后', 'Job configuration': '工作配置', 'Exclusive': '排除', 'Job Priority': '工作优先级', 'Retry Time Cycle': '重试时间周期', 'Documentation': '文档', 'Element Documentation': '元素文档', 'History Configuration': '历史配置', 'History Time To Live': '历史的生存时间', 'Forms': '表单',<span class="em">1</span> #### 引用[.reference_title] - *1* [bpmn-jsvue的基本使用](https://blog.csdn.net/qq_43519131/article/details/127985956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值