feat(流程管理): 新增 流程设计器对"服务任务"支持

This commit is contained in:
konbai
2023-03-19 04:34:04 +08:00
parent 7d571d6e9b
commit 4958bbccbd
2 changed files with 90 additions and 2 deletions

View File

@@ -1,6 +1,6 @@
<template>
<div class="panel-tab__content">
<el-form size="mini" label-width="90px" @submit.native.prevent>
<el-form size="mini" label-width="96px" @submit.native.prevent>
<!-- <el-form-item label="异步延续">-->
<!-- <el-checkbox v-model="taskConfigForm.asyncBefore" label="异步前" @change="changeTaskAsync" />-->
<!-- <el-checkbox v-model="taskConfigForm.asyncAfter" label="异步后" @change="changeTaskAsync" />-->
@@ -13,12 +13,13 @@
<script>
import UserTask from "./task-components/UserTask";
import ServiceTask from "./task-components/ServiceTask";
import ScriptTask from "./task-components/ScriptTask";
import ReceiveTask from "./task-components/ReceiveTask";
export default {
name: "ElementTaskConfig",
components: { UserTask, ScriptTask, ReceiveTask },
components: { UserTask, ServiceTask, ScriptTask, ReceiveTask },
props: {
id: String,
type: String
@@ -36,6 +37,7 @@ export default {
// 接收消息任务,需要在全局下插入新的消息实例,并在该节点下的 messageRef 属性绑定该实例
// 发送任务、服务任务、业务规则任务共用一个相同配置
UserTask: "UserTask", // 用户任务配置
ServiceTask: "ServiceTask", // 服务任务配置
ScriptTask: "ScriptTask", // 脚本任务配置
ReceiveTask: "ReceiveTask" // 消息接收任务
}

View File

@@ -0,0 +1,86 @@
<template>
<div>
<el-form-item label="执行类型" key="executeType">
<el-select v-model="serviceTaskForm.executeType">
<el-option label="Java类" value="class" />
<el-option label="表达式" value="expression" />
<el-option label="代理表达式" value="delegateExpression" />
</el-select>
</el-form-item>
<el-form-item
v-if="serviceTaskForm.executeType === 'class'"
label="Java类"
prop="class"
key="execute-class"
>
<el-input v-model="serviceTaskForm.class" clearable @change="updateElementTask" />
</el-form-item>
<el-form-item
v-if="serviceTaskForm.executeType === 'expression'"
label="表达式"
prop="expression"
key="execute-expression"
>
<el-input v-model="serviceTaskForm.expression" clearable @change="updateElementTask" />
</el-form-item>
<el-form-item
v-if="serviceTaskForm.executeType === 'delegateExpression'"
label="代理表达式"
prop="delegateExpression"
key="execute-delegate"
>
<el-input v-model="serviceTaskForm.delegateExpression" clearable @change="updateElementTask" />
</el-form-item>
</div>
</template>
<script>
export default {
name: "ServiceTask",
props: {
id: String,
type: String
},
data() {
return {
defaultTaskForm: {
executeType: "",
class: "",
expression: "",
delegateExpression: ""
},
serviceTaskForm: {}
};
},
watch: {
id: {
immediate: true,
handler() {
this.bpmnElement = window.bpmnInstances.bpmnElement;
this.$nextTick(() => this.resetTaskForm());
}
}
},
methods: {
resetTaskForm() {
for (let key in this.defaultTaskForm) {
let value = this.bpmnElement?.businessObject[key] || this.defaultTaskForm[key];
if (value) this.$set(this.serviceTaskForm, "executeType", key);
this.$set(this.serviceTaskForm, key, value);
}
},
updateElementTask() {
let taskAttr = Object.create(null);
const type = this.serviceTaskForm.executeType;
for (let key in this.serviceTaskForm) {
if (key !== 'executeType' && key !== type) taskAttr[key] = null;
}
taskAttr[type] = this.serviceTaskForm[type] || "";
window.bpmnInstances.modeling.updateProperties(this.bpmnElement, taskAttr);
}
},
beforeDestroy() {
this.bpmnElement = null;
}
};
</script>