代码拉取完成,页面将自动刷新
同步操作将从 DengHui/vue-bpmn-modeler 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Design BPMN 2.0 modeler in a Vue.js application based on bpmn-js.
yarn add vue-bpmn-modeler
# main.js
import VueBpmnModeler from "vue-bpmn-modeler";
import "vue-bpmn-modeler/lib/vue-bpmn-modeler.css";
Vue.use(VueBpmnModeler);
组件会显示设计器,参数 v-model="modeler",会通过画图操作实时返回对应的xml数据和svg数据,用于保存初始化的模板。
<template>
<BpmnModeler v-model="modeler"></BpmnModeler>
</template>
<script>
export default {
name: "BpmnModeler",
props: {
diagramXML: String
},
watch: {
diagramXML(val) {
this.openDiagram(val)
}
},
data() {
modeler: {
// 模型xml数据
// model xml data
xmlData: "",
// svg图片数据
// svg data
svgImage: ""
}
},
// 详细代码请参考源码
// see source code for detail
mounted() {
},
methods: {
openDiagram(xml) {
if (xml) {
this.modeler.importXML(xml, function(err) {
if (err) {
console.error(err);
} else {
}
});
this.xmlData = xml;
} else {
this.modeler.createDiagram();
let _self = this;
setTimeout(() => {
/**
* 修改xml属性值 isExecutable = false => true
* isExecutable = false 后端部署流程时 不会创建流程定义数据
*/
let modelerCanvas = _self.modeler.get("canvas");
let rootElement = modelerCanvas.getRootElement();
let modeling = _self.modeler.get("modeling");
// modeling.updateProperties(rootElement, {
// // isExecutable: true
// });
// 设定开始节点名称和结束节点名称
// set StartEvent name 'start' and EndEvent name 'end'
rootElement.children.forEach(n => {
if (n.type === 'bpmn:StartEvent') {
modeling.updateProperties(n, {
name: '开始',
});
} else if (n.type === 'bpmn:EndEvent') {
modeling.updateProperties(n, {
name: '结束',
});
}
})
});
}
}
}
};
</script>
参数介绍: xmlData: 表示流程图的xml数据 taskList: 表示流程的历史记录 可以通过服务的接口 historyService 获得
<template>
<BpmnViewer :xmlData="xmlData" :taskData="taskList"></BpmnViewer>
</template>
<script>
export default {
data() {
modeler: {
// 模型xml数据
xmlData: "",
// 任务列表
taskList: [{
// 任务定义的key
"key": "",
// 任务是否完成
"completed": true
}]
}
}
};
</script>
addTask () {
let addOrReplace = {
// task || sequenceFlow || gateway
replaceActivity: 'UserTask_0hkfnx2',
taskList: [
{
label: 'test task'
}
]
}
this.$refs.modeler.replace(addOrReplace).then((taskList) => {
// new task list, incluce taskId
console.log(taskList);
});
}
# clone the project
git clone https://github.com/evanyangg/vue-bpmn-modeler.git
# enter the project directory
cd vue-bpmn-modeler
# install dependencies
yarn
# serve with hot reload at localhost:8080
yarn serve
MIT
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。