miyuesc / bpmn-process-designer

Base on Vue 2.x and ElementUI,基于 Bpmn.js、Vue 2.x 和 ElementUI 的流程编辑器(前端部分),支持监听器,扩展属性,表单等配置,可自由扩展
https://miyuesc.github.io/process-designer-v2/
Apache License 2.0
1.6k stars 458 forks source link

请教边界事件之类的扩展问题 #32

Closed andyqier88 closed 2 years ago

andyqier88 commented 2 years ago

大佬好,想咨询个问题,我想扩展下图的一个场景,该怎么扩展呢,跟issues #31 实现不太一样

1648432127(1)

截图来自Camunda Modeler 此节点的XML文件如下: `

  <bpmn:timerEventDefinition id="TimerEventDefinition_0demg1p">

    <bpmn:timeDate xsi:type="bpmn:tFormalExpression">xx</bpmn:timeDate>

  </bpmn:timerEventDefinition>

</bpmn:boundaryEvent>`

我曾尝试通过window.bpmnInstances.moddle.create("bpmn:boundaryEvent") 或者window.bpmnInstances.moddle.create("bpmn:timerEventDefinition")这种方式创建 报错如下图 image

"Error: unknown type <bpmn:boundaryEvent>"

andyqier88 commented 2 years ago

对比bpmn-moddle里的json文件,貌似在package\designer\plugins\descriptor\camundaDescriptor.json少了对TimerEventDefinition的描述(下边的JSON代码),加上之后window.bpmnInstances.modeling.updateModdleProperties更新属性XML没有变化

{ "name": "TimerEventDefinition", "superClass": [ "EventDefinition" ], "properties": [ { "name": "timeDate", "type": "Expression", "xml": { "serialize": "xsi:type" } }, { "name": "timeCycle", "type": "Expression", "xml": { "serialize": "xsi:type" } }, { "name": "timeDuration", "type": "Expression", "xml": { "serialize": "xsi:type" } } ] }

andyqier88 commented 2 years ago

论坛里有一个类似场景的,但是没解决问题 https://forum.bpmn.io/t/cannot-create-bpmn-timedate-within-intermediatecatchevent/3132

miyuesc commented 2 years ago

我曾尝试通过window.bpmnInstances.moddle.create("bpmn:boundaryEvent") 或者window.bpmnInstances.moddle.create("bpmn:timerEventDefinition")这种方式创建

创建新元素或者属性时,传递的类型名参数应该是大写驼峰形式,比如 moddle.create("bpmn:BoundaryEvent")

另外,如果属性与该项目中的 descriptor.json 内的描述不一致,可以更新为你需要的格式,或者重新添加新的描述文件来对原有类型进行补充说明。

andyqier88 commented 2 years ago

我曾尝试通过window.bpmnInstances.moddle.create("bpmn:boundaryEvent") 或者window.bpmnInstances.moddle.create("bpmn:timerEventDefinition")这种方式创建

创建新元素或者属性时,传递的类型名参数应该是大写驼峰形式,比如 moddle.create("bpmn:BoundaryEvent")

另外,如果属性与该项目中的 descriptor.json 内的描述不一致,可以更新为你需要的格式,或者重新添加新的描述文件来对原有类型进行补充说明。

对descriptor.json描述感觉跟bpmn-camunda-moddle里的一样,尝试加了报错,目前也不太清楚descriptor.json的规则,已经求助官方社区了,求助地址

miyuesc commented 2 years ago

xml 描述文件规则可以看这个 https://juejin.cn/post/6912331982701592590 。你可以通过原生的 camunda 侧边栏编辑对应属性,之后查看元素的 businessObject 属性对象。对内部的每一个原型为 ModdleElement 的属性,都需要通过 moddle.create 进行创建,之后再更新到目标元素上

andyqier88 commented 2 years ago

谢谢大兄弟,已赞赏~

miyuesc commented 2 years ago

😊谢谢