软件包开发
支持接入不同的流程引擎,实现业务流程自定义。
name: `processApiName` # Api Name
label: "" # 显示名称
object_name: contracts # 关联对象名
engine: cmbbpm/activiti/flowable/camunda # 引擎类型
is_active: true # 是否启用
deploy_time: Date # 发布时间
version: 1 # 流程最新已发布的版本号
description: "" # 描述
entry_criteria: "" # 入口公式 传入 (userSession, Record)
when: "" # 何时执行入口公式 afterInsert/afterUpdate
ext: json/bpmn # 同步到元数据的后缀名
流程版本记录流程的修订历史,任务在运行时关联到此记录。发起流程时始终取流程最新已发布版。
process: `process_id` # 流程_id
version: 2 # 版本号
is_active: true # 版本是否已发布
description: "" # 版本描述
schema: `process.{engine}.bpmn` # 流程定义schema
entry_criteria: "" # 入口公式 传入 (userSession, Record)
when: "" # 何时执行入口公式 afterInsert/afterUpdate
元数据下载时只下载流程最新版本。上传时判断最新版是否是已发布,如果已发布则生成新版本,如未发布则更新。
name: `processApiName` # Api Name
label: "" # 显示名称
object_name: contracts # 关联对象名
engine: `{engine}` # 引擎类型
is_active: true # 是否启用
description: "" # 描述
entry_criteria: "" # 入口公式
when: "" # 何时执行入口公式
基于 engine
的流程图。在元数据中单独保存此文件,以便在 VS Code 中提供设计器插件。
使用插件方式接入 BPM 服务。
定义 Moleculer 微服务
{
module.exports = {
name: `{engine}`,
settings: {
serviceEndpoint: "https://{engine}.serviceEndpoint"
},
actions: {
// 保存schema
save: {
rest: {
method: "POST",
path: "/save"
},
params: {},
handler: async function (ctx){
// call activiti api
}
},
// 流程发布
deploy: {
rest: {
method: "POST",
path: "/deploy"
},
params: {},
handler: async function (ctx){
// call activiti api
}
},
// 流程禁用
disable: {
rest: {
method: "POST",
path: "/disable"
},
params: {},
handler: async function (ctx){
// call activiti api
}
},
// 流程启用
enable: {
rest: {
method: "POST",
path: "/enable"
},
params: {},
handler: async function (ctx){
// call activiti api
}
},
// 流程删除
delete: {
rest: {
method: "POST",
path: "/delete"
},
params: {},
handler: async function (ctx){
// call activiti api
}
},
// 申请单发起
start: {
rest: {
method: "POST",
path: "/start"
},
params: {},
handler: async function (ctx){
// call activiti api
}
},
// 流程取消前
beforeCancel: {
rest: {
method: "POST",
path: "/beforeCancel"
},
params: {},
handler: async function (ctx){
// 调用 Steedos 流程触发器脚本。
return await broker.call('process.beforeCancel', { event, context })
}
},
},
events: {
// 核准
[`{engine}.approve`]: async function (ctx) {
},
// 驳回
[`{engine}.reject`]: async function (ctx) {
},
// 取消
[`{engine}.cancel`]: async function (ctx) {
},
// 撤回,发起后撤回
[`{engine}.withdraw`]: async function (ctx) {
},
// 重新发起,与撤回搭配使用
[`{engine}.restart`]: async function (ctx) {
},
// 转交,当前审批人将任务转交给他人处理
[`{engine}.transfer`]: async function (ctx) {
},
// 加签,拉审批人加入当前节点处理
[`{engine}.addsign`]: async function (ctx) {
},
// 退回,当前审批人将任务退回给指定节点
[`{engine}.backward`]: async function (ctx) {
}
}
}
}