!88 合并flowable工作流功能

* merge 合并dev
* add 添加抄送查询
* add 添加我的已办
* add 添加抄送
* add 添加附件下载
* update 优化类型
* Merge remote-tracking branch 'origin/future/flowable' into future/flowable
* fix 修复 流程设计器打包部署报错问题
* add 添加审批附件上传
* update 修复固定值未在xml显示问题
* update 修复跳转条件回显Object问题
* update 优化面板文件名称
* update 调整key
* remove 移除旧设计器,添加xml保存
* update 增加任务面板提示
* update 优化xml预览和svg预览
* update 优化xml预览和svg预览
* update 优化模型设计
* update 优化设计器
* update 优化设计器
* update 优化设计器
* update 删除旧设计器
* update 删除console.log
* add 添加模型接口
* update 优化预览xml和svg样式被修改问题
* update 优化属性面板,增加展开动画
* update 去除开发模式
* update 优化任务栏样式
* update 优化图标渲染样式
* update 增加BpmnFactory类型
* update 增加BpmnFactory
* update 移除users和group
* update 移除无用类型
* update 优化页面类型
* update 去除多余属性
* update 完善流程线
* update 增加复杂网关
* update 完善流程
* update 完善网关
* update 优化网关汉化
* update 优化过期时间选择
* update 支持多实例
* update 增加类容提示
* update 支持选择组
* update 新增角色api
* update 优化roleSelect 选中未确定,再次打开还保留选中的问题
* update 优化userSelect 选中未确定,再次打开还保留选中的问题
* update 优化userSelect 选中未确定,再次打开还保留选中的问题
* update 去掉modeler store多余属性 bpmnModel
* update 优化属性面板,当面板未选中时默认展示流程面板
* update 优化TaskPanel类型,去掉roles属性
* update 优化用户api
* update 优化用户选择器
* update 优化执行监听器
* update 优化任务监听器
* update 优化usePanel方法
* update 选人优化
* update 增加扩展节点信息
* update 增加usePanel默认方法
* update 去除处理事件
* update 扩展flowable  userinfo属性
* update 全局modeler 改为非响应式
* update 增加hooks方法
* update 修改命名
* update 修改面板formData来源
* update 重写用户任务面板选择逻辑
* update 重写用户任务面板选择逻辑
* update 修改用户选择组件获取数据逻辑
* update 修改枚举类型
* update 修改默认配置列
* update 增加修改节点方法
* update 调整预览窗口大小
* update 优化用户选择组件 返回值
* update 优化用户选择组件
* update 新增通过ids 获取用户信息
* update 重写task面板选人 未完成
* update 升级用户选择 支持多选配置
* update 升级bpmnjs依赖版本
* update 增加useDialog类型
* update 调整全局样式
* update 代码高亮设置
* update 优化领用,归还加载
* update 增加选择角色
* update  新增角色选择组件
* update 新增过期时间选择组件
* update 调整任务面板样式
* update  调整全局dialog header 增加分割线
* update 代码高亮设置
* update  调整面板位置
* update 封装用户选择组件
* update 移除所有的节点描述
* update 删除分类
* update  调整面板位置
* update  修改命名,增加自定义渲染
* update  修改命名,增加自定义渲染
* update 增加 Element类型定义
* update 调整样式
* update 移除bpmn panel依赖,升级bpmn.js依赖到最新,修改汉化包
* update 调整类型声明文件
* update 调整类型声明文件
* update 优化面板工具
* update 优化面板工具
* Merge remote-tracking branch 'origin/future/flowable' into future/flowable
* update 优化面板工具
* Merge branch 'future/flowable' of https://gitee.com/JavaLionLi/plus-ui…
* add 添加修改办理人
* update 优化面板工具
* update 初始化流程数据
* Merge remote-tracking branch 'origin/future/flowable' into future/flowable
* add 流程设计面板
* update 调整初始化xml
* add 任务面板
* add 新增bpmn.js
* update 优化request请求类判断请求头方式
* update 流程定义预览 优化
* update 流程定义预览 优化
* update 去掉console.log
* update 优化工作流代码
* fix 修复待办任务 重置查询条件失效问题
* add 增加待办任务 接口类型,优化页面
* add 增加vite 启动预编译css
* fix 修复i18n无感刷新问题
* Merge branch 'dev' into future/flowable
* update 调整选择请假事件
* Merge branch 'dev' into future/flowable
* 同步dev代码
* Merge branch 'dev' into future/flowable
* 合并dev
* remove 设计器无用代码 调整请假查询
* update 调整请假申请
* update 移动请假表单包结构,调整设计器选择引用表单请求错误
* remove 移除动态表单
* update 调整流程办理
* Merge branch 'dev' into future/flowable
* Merge branch 'dev' into future/flowable
* Merge branch 'dev' into future/flowable
* Merge branch 'dev' into future/flowable
* 合并
* update 调整请假申请流程提交
* update 修改业务单据流程提交
* update 调整业务单据流程提交
* 优化代码
* 优化工作流代码缩进
* 项目格式化配置修改
* 调整代码缩进
* Merge branch 'ts' into future/flowable
* add 添加动态表单提交流程
* add 添加动态表单单据
* add 新增流程定义与表单关联
* update 调整点击左侧部门查询人员,部门刷新问题
* update 调整按钮图标
* 调整错别字
* update 调整流程定义图片预览
* add 添加流程实例迁移版本
* fix 修复我的单据无法提交问题
* Merge branch 'ts' into future/flowable
* remove 还原代码后端解决
* update 流程设计器中分配发起人变量错误,先移除
* fix 修复设计器无法编辑问题
* update 调整设计器请求头
* Merge branch 'ts' into future/flowable
* Merge branch 'ts' into future/flowable
* add 添加流程定义历史列表
* update 审批记录v2改为v3
* update 调整请假必填项
* add 添加请假申请示例,添加流程定义文件部署
* update 移除流程表单 formConfig 属性,表单配置信息都放一起便于使用。
* add 添加任务加签,减签
* update 调整流程作废
* update 优化流程状态
* add 添加任务驳回
* add 添加查询当前租户所有待办,已办任务
* add 增加审批意见
* add 添加流程办理弹窗确认组件
* add 添加任务作废理由
* update 调整流程实例,流程定义检索
* add 添加我的单据页面
* add 添加任务归还认领
* add 添加流程实例,流程定义分类查询
* add 添加模型分类查询
* add 添加流程分类
* Merge remote-tracking branch 'origin/future/flowable' into future/flowable
* add 添加流程表单管理页面
* add 集成vForm动态表单组件
* update xml调整超出滚动
* add 添加已办列表
* add 添加单据状态
* update 优化流程实例删除
* fix 修复流程实例查询挂起状态错误
* update 调整流程实例挂起激活状态
* add 添加流程实例列表
* update 调整流程定义弹窗提示
* add 添加流程定义列表,添加流程图,xml预览,添加简单流程启动,办理
* 调整审批记录悬浮逻辑
* 删除无用代码
* add 添加节点悬浮信息
* 调整流程预览
* 调整流程追踪
* add 添加审批记录
* add 模型设计的types
* update 修改排版
* add lang=ts
* update 修改ele的废弃api
* fix调整审批记录图片不显示问题
* add 添加任务待办,流程图
* 调整设计器关闭
* add 添加待办
* remove 删除无用代码
* update types
* 添加模型token验证
* 隐藏设计器验证按钮,隐藏表单,案例,应用程序等
* 添加模型部署
* 添加画图接口token,优化画图接口
* 添加工作流模型新增,修改,查询,删除,画图工具
This commit is contained in:
疯狂的狮子Li
2024-03-05 14:57:51 +00:00
parent 542f73f0e6
commit 0108df1334
70 changed files with 9502 additions and 9 deletions
@@ -0,0 +1,23 @@
function generateRandomValue() {
// 生成一个随机数
const randomValue = Math.random().toString(36).slice(2, 12);
return `Process_${randomValue}`;
}
const cartage: string = 'default';
export default `<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" targetNamespace="http://www.flowable.org/processdef">
<process id="process_${generateRandomValue()}" name="name_${generateRandomValue()}">
<startEvent id="startNode1" name="开始" />
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_flow">
<bpmndi:BPMNPlane id="BPMNPlane_flow" bpmnElement="T-2d89e7a3-ba79-4abd-9f64-ea59621c258c">
<bpmndi:BPMNShape id="BPMNShape_startNode1" bpmnElement="startNode1" bioc:stroke="">
<omgdc:Bounds x="240" y="200" width="30" height="30" />
<bpmndi:BPMNLabel>
<omgdc:Bounds x="242" y="237" width="23" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>`;
+118
View File
@@ -0,0 +1,118 @@
export const NodeName = {
'bpmn:Process': '流程',
'bpmn:StartEvent': '开始事件',
'bpmn:IntermediateThrowEvent': '中间事件',
'bpmn:Task': '任务',
'bpmn:SendTask': '发送任务',
'bpmn:ReceiveTask': '接收任务',
'bpmn:UserTask': '用户任务',
'bpmn:ManualTask': '手工任务',
'bpmn:BusinessRuleTask': '业务规则任务',
'bpmn:ServiceTask': '服务任务',
'bpmn:ScriptTask': '脚本任务',
'bpmn:EndEvent': '结束事件',
'bpmn:SequenceFlow': '流程线',
'bpmn:ExclusiveGateway': '互斥网关',
'bpmn:ParallelGateway': '并行网关',
'bpmn:InclusiveGateway': '相容网关',
'bpmn:ComplexGateway': '复杂网关',
'bpmn:EventBasedGateway': '事件网关'
};
export default {
'Activate hand tool': '启动手动工具',
'Activate lasso tool': '启动 Lasso 工具',
'Activate create/remove space tool': '启动创建/删除空间工具',
'Activate global connect tool': '启动全局连接工具',
'Ad-hoc': 'Ad-hoc',
'Add lane above': '在上方添加泳道',
'Add lane below': '在下方添加泳道',
'Business rule task': '规则任务',
'Call activity': '引用流程',
'Compensation end event': '结束补偿事件',
'Compensation intermediate throw event': '中间补偿抛出事件',
'Complex gateway': '复杂网关',
'Conditional intermediate catch event': '中间条件捕获事件',
'Conditional start event (non-interrupting)': '条件启动事件 (非中断)',
'Conditional start event': '条件启动事件',
'Connect using association': '文本关联',
'Connect using sequence/message flow or association': '消息关联',
'Change element': '更改元素',
'Change type': '更改类型',
'Create data object reference': '创建数据对象引用',
'Create data store reference': '创建数据存储引用',
'Create expanded sub-process': '创建可折叠子流程',
'Create pool/participant': '创建池/参与者',
'Collection': '集合',
'Connect using data input association': '数据输入关联',
'Data store reference': '数据存储引用',
'Data object reference': '数据对象引用',
'Divide into two lanes': '分成两个泳道',
'Divide into three lanes': '分成三个泳道',
'End event': '结束事件',
'Error end event': '结束错误事件',
'Escalation end event': '结束升级事件',
'Escalation intermediate throw event': '中间升级抛出事件',
'Event sub-process': '事件子流程',
'Event-based gateway': '事件网关',
'Exclusive gateway': '互斥网关',
'Empty pool/participant (removes content)': '清空池/参与者 (删除内容)',
'Inclusive gateway': '相容网关',
'Intermediate throw event': '中间抛出事件',
'Loop': '循环',
'Link intermediate catch event': '中间链接捕获事件',
'Link intermediate throw event': '中间链接抛出事件',
'Manual task': '手动任务',
'Message end event': '结束消息事件',
'Message intermediate catch event': '中间消息捕获事件',
'Message intermediate throw event': '中间消息抛出事件',
'Message start event': '消息启动事件',
'Parallel gateway': '并行网关',
'Parallel multi-instance': '并行多实例',
'Participant multiplicity': '参与者多重性',
'Receive task': '接受任务',
'Remove': '移除',
'Script task': '脚本任务',
'Send task': '发送任务',
'Sequential multi-instance': '串行多实例',
'Service task': '服务任务',
'Signal end event': '结束信号事件',
'Signal intermediate catch event': '中间信号捕获事件',
'Signal intermediate throw event': '中间信号抛出事件',
'Signal start event (non-interrupting)': '信号启动事件 (非中断)',
'Signal start event': '信号启动事件',
'Start event': '开始事件',
'Sub-process (collapsed)': '可折叠子流程',
'Sub-process (expanded)': '可展开子流程',
'Sub rocess': '子流程',
'Task': '任务',
'Transaction': '事务',
'Terminate end event': '终止边界事件',
'Timer intermediate catch event': '中间定时捕获事件',
'Timer start event (non-interrupting)': '定时启动事件 (非中断)',
'Timer start event': '定时启动事件',
'User task': '用户任务',
'Create start event': '创建开始事件',
'Create gateway': '创建网关',
'Create intermediate/boundary event': '创建中间/边界事件',
'Create end event': '创建结束事件',
'Create group': '创建组',
'Create startEvent': '开始节点',
'Create endEvent': '结束节点',
'Create exclusiveGateway': '互斥网关',
'Create parallelGateway': '并行网关',
'Create task': '任务节点',
'Create userTask': '用户任务节点',
'Condition type': '条件类型',
'Append end event': '追加结束事件节点',
'Append gateway': '追加网关节点',
'Append task': '追加任务',
'Append user task': '追加用户任务节点',
'Append text annotation': '追加文本注释',
'Append intermediate/boundary event': '追加中间或边界事件',
'Append receive task': '追加接收任务节点',
'Append message intermediate catch event': '追加中间消息捕获事件',
'Append timer intermediate catch event': '追加中间定时捕获事件',
'Append conditional intermediate catch event': '追加中间条件捕获事件',
'Append signal intermediate catch event': '追加中间信号捕获事件'
};
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,138 @@
import ContextPadProvider from 'bpmn-js/lib/features/context-pad/ContextPadProvider';
import { Injector } from 'didi';
import EventBus from 'diagram-js/lib/core/EventBus';
import ContextPad from 'diagram-js/lib/features/context-pad/ContextPad';
import Modeling from 'bpmn-js/lib/features/modeling/Modeling.js';
import ElementFactory from 'bpmn-js/lib/features/modeling/ElementFactory';
import Connect from 'diagram-js/lib/features/connect/Connect';
import Create from 'diagram-js/lib/features/create/Create';
import PopupMenu from 'diagram-js/lib/features/popup-menu/PopupMenu';
import Canvas from 'diagram-js/lib/core/Canvas';
import Rules from 'diagram-js/lib/features/rules/Rules';
import { Element, Shape } from 'diagram-js/lib/model/Types';
import BpmnFactory from 'bpmn-js/lib/features/modeling/BpmnFactory';
import modeler from '@/store/modules/modeler';
// @Description: 增强元素连线事件
class CustomContextPadProvider extends ContextPadProvider {
private _contextPad: ContextPad;
private _modeling: Modeling;
private _elementFactory: ElementFactory;
private _autoPlace: any;
private _connect: Connect;
private _create: Create;
private _popupMenu: PopupMenu;
private _canvas: Canvas;
private _rules: Rules;
constructor(
config: any,
injector: Injector,
eventBus: EventBus,
contextPad: ContextPad,
modeling: Modeling,
elementFactory: ElementFactory,
connect: Connect,
create: Create,
popupMenu: PopupMenu,
canvas: Canvas,
rules: Rules,
translate
) {
// @ts-ignore
super(config, injector, eventBus, contextPad, modeling, elementFactory, connect, create, popupMenu, canvas, rules, translate);
this._contextPad = contextPad;
this._modeling = modeling;
this._elementFactory = elementFactory;
this._connect = connect;
this._create = create;
this._popupMenu = popupMenu;
this._canvas = canvas;
this._rules = rules;
this._autoPlace = injector.get('autoPlace', false);
}
getContextPadEntries(element: Element) {
const actions: Record<string, any> = {};
const appendUserTask = (event: Event, element: Shape) => {
const shape = this._elementFactory.createShape({ type: 'bpmn:UserTask' });
this._create.start(event, shape, {
source: element
});
};
const appendMultiInstanceUserTask = (event: Event, element: Shape) => {
const store = modeler();
const bpmnFactory = store.getModeler().get('bpmnFactory') as BpmnFactory;
const businessObject = bpmnFactory.create('bpmn:UserTask', {
// name: '多实例用户任务',
isForCompensation: false
});
businessObject.loopCharacteristics = bpmnFactory.create('bpmn:MultiInstanceLoopCharacteristics');
// 创建 Shape
const shape = this._elementFactory.createShape({
type: 'bpmn:UserTask',
businessObject: businessObject
});
this._create.start(event, shape, { source: element });
};
const appendTask = this._autoPlace
? (event, element) => {
const bpmnFactory: BpmnFactory | undefined = modeler().getModeler().get('bpmnFactory');
const businessObject = bpmnFactory.create('bpmn:UserTask', {
// name: '多实例用户任务',// 右键创建显示
isForCompensation: false
});
// 创建多实例属性并分配给用户任务的 loopCharacteristics
businessObject.loopCharacteristics = bpmnFactory.create('bpmn:MultiInstanceLoopCharacteristics');
// 创建 Shape
const shape = this._elementFactory.createShape({
type: 'bpmn:UserTask',
businessObject: businessObject
});
this._autoPlace.append(element, shape);
}
: appendMultiInstanceUserTask;
const append = this._autoPlace
? (event: Event, element: Shape) => {
const shape = this._elementFactory.createShape({ type: 'bpmn:UserTask' });
this._autoPlace.append(element, shape);
}
: appendUserTask;
// // 添加创建用户任务按钮
actions['append.append-user-task'] = {
group: 'model',
className: 'bpmn-icon-user-task',
title: '用户任务',
action: {
dragstart: appendUserTask,
click: append
}
};
// 添加创建多实例用户任务按钮
actions['append.append-multi-instance-user-task'] = {
group: 'model',
className: 'bpmn-icon-user', // 你可以使用多实例用户任务的图标 bpmn-icon-user bpmn-icon-user-task
title: '多实例用户任务',
action: {
dragstart: appendMultiInstanceUserTask,
click: appendTask
}
};
return actions;
}
}
export default CustomContextPadProvider;
@@ -0,0 +1,119 @@
import { assign } from 'min-dash';
import PaletteProvider from 'bpmn-js/lib/features/palette/PaletteProvider';
import ElementFactory from 'bpmn-js/lib/features/modeling/ElementFactory';
import Create from 'diagram-js/lib/features/create/Create';
import SpaceTool from 'diagram-js/lib/features/space-tool/SpaceTool';
import LassoTool from 'diagram-js/lib/features/lasso-tool/LassoTool';
import HandTool from 'diagram-js/lib/features/hand-tool/HandTool';
import GlobalConnect from 'diagram-js/lib/features/global-connect/GlobalConnect';
import Palette from 'diagram-js/lib/features/palette/Palette';
import modeler from '@/store/modules/modeler';
import BpmnFactory from 'bpmn-js/lib/features/modeling/BpmnFactory';
// @Description: 增强左侧面板
class CustomPaletteProvider extends PaletteProvider {
private readonly _palette: Palette;
private readonly _create: Create;
private readonly _elementFactory: ElementFactory;
private readonly _spaceTool: SpaceTool;
private readonly _lassoTool: LassoTool;
private readonly _handTool: HandTool;
private readonly _globalConnect: GlobalConnect;
private readonly _translate: any;
constructor(palette, create, elementFactory, spaceTool, lassoTool, handTool, globalConnect, translate) {
super(
palette,
create,
elementFactory,
spaceTool,
lassoTool,
handTool,
globalConnect,
translate
// 2000
);
this._palette = palette;
this._create = create;
this._elementFactory = elementFactory;
this._spaceTool = spaceTool;
this._lassoTool = lassoTool;
this._handTool = handTool;
this._globalConnect = globalConnect;
this._translate = translate;
}
getPaletteEntries() {
const actions = {},
create = this._create,
elementFactory = this._elementFactory,
translate = this._translate;
function createAction(type: string, group: string, className: string, title: string, options?: object) {
function createListener(event) {
const shape = elementFactory.createShape(assign({ type: type }, options));
if (options) {
!shape.businessObject.di && (shape.businessObject.di = {});
shape.businessObject.di.isExpanded = (options as { [key: string]: any }).isExpanded;
}
create.start(event, shape, null);
}
const shortType = type.replace(/^bpmn:/, '');
return {
group: group,
className: className,
title: title || translate('Create {type}', { type: shortType }),
action: {
dragstart: createListener,
click: createListener
}
};
}
function createMultiInstanceUserTask(event) {
const bpmnFactory: BpmnFactory | undefined = modeler().getBpmnFactory();
// 创建一个 bpmn:UserTask
const userTask = bpmnFactory.create('bpmn:UserTask', {
// name: '多实例用户任务', // 在画板中显示字段
isForCompensation: false
});
// 将多实例属性分配给 bpmn:UserTask 的 loopCharacteristics
userTask.loopCharacteristics = bpmnFactory.create('bpmn:MultiInstanceLoopCharacteristics');
const customUserTask = elementFactory.createShape({
type: 'bpmn:UserTask',
businessObject: userTask // 分配创建的 userTask 到 businessObject
});
create.start(event, customUserTask, {});
}
assign(actions, {
'create.parallel-gateway': createAction('bpmn:ParallelGateway', 'gateway', 'bpmn-icon-gateway-parallel', '并行网关'),
'create.event-base-gateway': createAction('bpmn:EventBasedGateway', 'gateway', 'bpmn-icon-gateway-eventbased', '事件网关'),
// 分组线
'gateway-separator': {
group: 'gateway',
separator: true
},
'create.user-task': createAction('bpmn:UserTask', 'activity', 'bpmn-icon-user-task', '创建用户任务'),
'create.multi-instance-user-task': {
group: 'activity',
type: 'bpmn:UserTask',
className: 'bpmn-icon-user task-multi-instance',
title: '创建多实例用户任务',
action: {
click: createMultiInstanceUserTask,
dragstart: createMultiInstanceUserTask
}
},
'task-separator': {
group: 'activity',
separator: true
}
});
return actions;
}
}
CustomPaletteProvider['$inject'] = ['palette', 'create', 'elementFactory', 'spaceTool', 'lassoTool', 'handTool', 'globalConnect', 'translate'];
export default CustomPaletteProvider;
@@ -0,0 +1,56 @@
import BaseRenderer from 'diagram-js/lib/draw/BaseRenderer';
import {
append as svgAppend,
attr as svgAttr,
create as svgCreate,
select as svgSelect,
selectAll as svgSelectAll,
clone as svgClone,
clear as svgClear,
remove as svgRemove
} from 'tiny-svg';
const HIGH_PRIORITY = 1500;
export default class CustomRenderer extends BaseRenderer {
bpmnRenderer: BaseRenderer;
modeling: any;
constructor(eventBus, bpmnRenderer, modeling) {
super(eventBus, HIGH_PRIORITY);
this.bpmnRenderer = bpmnRenderer;
this.modeling = modeling;
}
canRender(element) {
// ignore labels
return !element.labelTarget;
}
/**
* 自定义节点图形
* @param {*} parentNode 当前元素的svgNode
* @param {*} element
* @returns
*/
drawShape(parentNode, element) {
const shape = this.bpmnRenderer.drawShape(parentNode, element);
const { type, width, height } = element;
// 开始 填充绿色
if (type === 'bpmn:StartEvent') {
svgAttr(shape, { fill: '#77DF6D' });
return shape;
}
if (type === 'bpmn:EndEvent') {
svgAttr(shape, { fill: '#EE7B77' });
return shape;
}
if (type === 'bpmn:UserTask') {
svgAttr(shape, { fill: '#A9C4F8' });
return shape;
}
return shape;
}
getShapePath(shape) {
return this.bpmnRenderer.getShapePath(shape);
}
}
CustomRenderer['$inject'] = ['eventBus', 'bpmnRenderer'];
@@ -0,0 +1,15 @@
import zh from '@/components/BpmnDesign/assets/lang/zh';
const customTranslate = (template: any, replacements: any) => {
replacements = replacements || {};
template = zh[template] || template;
return template.replace(/{([^}]+)}/g, function (_: any, key: any) {
return replacements[key] || '{' + key + '}';
});
};
export const translateModule = {
translate: ['value', customTranslate]
};
export default translateModule;
@@ -0,0 +1,17 @@
// 翻译模块
import TranslationModule from './Translate';
import { ModuleDeclaration } from 'didi';
import CustomPaletteProvider from './Palette/CustomPaletteProvider';
import CustomRenderer from './Renderer/CustomRenderer';
import CustomContextPadProvider from './ContextPad/CustomContextPadProvider';
const Module: ModuleDeclaration[] = [
{
__init__: ['customPaletteProvider', 'customContextPadProvider', 'customRenderer'],
customPaletteProvider: ['type', CustomPaletteProvider],
customRenderer: ['type', CustomRenderer],
customContextPadProvider: ['type', CustomContextPadProvider]
},
TranslationModule
];
export default Module;
@@ -0,0 +1,50 @@
export default {
'bpmn:EndEvent': {},
'bpmn:StartEvent': {
initiator: true,
formKey: true
},
'bpmn:UserTask': {
allocationType: true,
specifyDesc: true,
multipleUserAuditType: true,
async: true,
priority: true,
skipExpression: true,
dueDate: true,
taskListener: true,
executionListener: true
},
'bpmn:ServiceTask': {
async: true,
skipExpression: true,
isForCompensation: true,
triggerable: true,
class: true
},
'bpmn:ScriptTask': {
async: true,
isForCompensation: true,
autoStoreVariables: true
},
'bpmn:ManualTask': {
async: true,
isForCompensation: true
},
'bpmn:ReceiveTask': {
async: true,
isForCompensation: true
},
'bpmn:SendTask': {
async: true,
isForCompensation: true
},
'bpmn:BusinessRuleTask': {
async: true,
isForCompensation: true,
ruleVariablesInput: true,
rules: true,
resultVariable: true,
exclude: true
}
};
@@ -0,0 +1,230 @@
.djs-palette {
width: 300px;
.bpmn-icon-hand-tool:hover {
&:after {
content: '启动手动工具';
position: absolute;
left: 45px;
width: 120px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.bpmn-icon-lasso-tool:hover {
&:after {
content: '启动套索工具';
position: absolute;
left: 100px;
width: 120px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.bpmn-icon-space-tool:hover {
&:after {
content: '启动创建/删除空间工具';
position: absolute;
left: 45px;
width: 170px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.bpmn-icon-connection-multi:hover {
&:after {
content: '启动全局连接工具';
position: absolute;
left: 100px;
width: 140px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.bpmn-icon-start-event-none:hover {
&:after {
content: '创建开始事件';
position: absolute;
left: 45px;
width: 120px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.bpmn-icon-intermediate-event-none:hover {
&:after {
content: '创建中间/边界事件';
position: absolute;
left: 100px;
width: 140px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.bpmn-icon-end-event-none:hover {
&:after {
content: '创建结束事件';
position: absolute;
left: 45px;
width: 120px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.bpmn-icon-gateway-none:hover {
&:after {
content: '创建网关';
position: absolute;
left: 100px;
width: 90px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.bpmn-icon-gateway-parallel:hover {
&:after {
content: '创建并行网关';
position: absolute;
left: 45px;
width: 120px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.bpmn-icon-gateway-eventbased:hover {
&:after {
content: '创建事件网关';
position: absolute;
left: 100px;
width: 120px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.bpmn-icon-task:hover {
&:after {
content: '创建任务';
position: absolute;
left: 45px;
width: 80px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.bpmn-icon-subprocess-expanded:hover {
&:after {
content: '创建可折叠子流程';
position: absolute;
left: 100px;
width: 140px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.bpmn-icon-user-task:hover {
&:after {
content: '创建用户任务';
position: absolute;
left: 45px;
width: 120px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.task-multi-instance:hover {
&:after {
content: '创建多实例用户任务';
position: absolute;
left: 100px;
width: 160px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
.bpmn-icon-participant:hover {
&:after {
content: '创建泳池/泳道';
position: absolute;
left: 45px;
width: 120px;
font-size: 15px;
font-weight: bold;
color: #3a84de;
border-radius: 2px;
border: 1px solid #cccccc;
background-color: #fafafa;
opacity: 0.8;
}
}
}