Files
geg-gas-web/src/model/workflow/workflowConfig.ts
lvjunzhao 6015b7c199 feat:全局触发事件
4.新增预审前后节点
5. 新增类注入
2025-03-31 16:20:34 +08:00

308 lines
9.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//流程配置json
import { InfoId } from './bpmnConfig';
import { FormConfigItem, formInitConfig, FormSettingItem } from './formSetting';
import { CountersignConfig, MemberConfig } from './memberSetting';
import {AssignmentConfig, FormAssignmentSourceConfig, TimeOutConfig} from './ParamSetting';
import { ApiConfig } from '/@/components/ApiConfig/src/interface';
import {
ApprovalOpinionDisplayType,
AuthType,
AutoAgreeRule,
ButtonType,
DesignatedApprover,
ElectronicSignatureVerification,
NoHandler,
NoticePolicyType,
OperationType,
ProcessStatus,
RecordType,
TaskPermissions,
RejectType,
CallActivityType,
FinishType,
ExecutionType,
MemberType,
ApproveType,
NodeEventExType, SubProcessType,
} from '/@/enums/workflowEnum';
import { BpmnNodeKey } from '/@/enums/workflowEnum';
export interface ProcessJsonModel {
processConfig: ProcessConfig; //流程属性配置
//子节点配置
childNodeConfig: ChildNodeConfig;
}
export type ChildNodeItem =
| StartEventConfig
| UserTaskConfig
| ScriptTaskConfig
| GatewayConfig
| EndEventConfig;
export type ChildNodeConfig = Array<ChildNodeItem>;
// 专项菜单
export interface MenuConfig {
enabled: boolean;
code: string;
name: string;
system: undefined | string;
parentId: undefined | string;
icon: string;
order: undefined | number;
remark: string;
}
// 权限设置
interface AuthConfig {
authType: AuthType; //权限设置 0 所有 1 指定
authMemberConfigs?: MemberConfig[]; //必须authType === 1 权限指定的人员
}
//超时提醒
interface TimeoutConfig {
enabled: boolean; //是否提醒
hour: undefined | number; //超时时间
interval: undefined | number; //消息间隔
pushHits: undefined | number; //推送次数
pushMemberConfigs: MemberConfig[]; //推送人
}
//关联任务
export interface RelationProcessConfig {
id: string; //模板id
name: string; //模板名称
code: string; //模板编码
definitionKey?: string; //定义可以
processStatus?: ProcessStatus; //流程状态
processAuth?: TaskPermissions; //任务权限
}
// 命名规则
export interface NameRuleItem {
key: string;
title: string;
}
export type NameRule = Array<NameRuleItem>;
export type ProcessConfigParameter = Array<ProcessParameter>;
export interface ProcessConfig {
processId: string; //节点id
type: BpmnNodeKey; //节点类型
name: string; //节点名称
parentId: string; //父节点流程id
remark: string; //节点描述
code: string; //模板编码
category: undefined | string; //分类
nameRule?: string; //命名规则
nameRuleConfigs?: NameRule; // 命名规则列表
autoAgreeRule?: Array<AutoAgreeRule>; //自动同意规则
isPrevChooseNext: DesignatedApprover; //是否上一节点审批人指定下一节点审批人
noHandler: NoHandler; //无对应处理人
defaultFormList: Array<FormSettingItem>; //默认表单
appShow: boolean; //移动端是否显示
content?: string; //bpmn 设计 xml
authConfig: AuthConfig; //权限设置
menuConfig: MenuConfig; //是否启用菜单
formInitConfig: formInitConfig; //表单发起流程
timeoutRemidConfig: TimeoutConfig; //超时提醒配置
relationProcessConfigs: Array<RelationProcessConfig>; //关联任务
processParamConfigs: ProcessConfigParameter; //流程参数
globalStartEventConfigs: NodeEventConfig[];//全局 用户节点 结束事件
globalEndEventConfigs: NodeEventConfig[];//全局 用户节点 结束事件
globalPrequalifyBeforeEventConfigs: NodeEventConfig[];//预审前
globalPrequalifyAfterEventConfigs: NodeEventConfig[];//预审后
globalFinishEventConfigs: NodeEventConfig[];//终止事件
globalRejectEventConfigs: NodeEventConfig[];//全局退回事件
globalAgreeEventConfigs: NodeEventConfig[];//全局同意事件
globalSuspendedEventConfigs: NodeEventConfig[];//全局 挂起/暂停事件
globalRestoreEventConfigs: NodeEventConfig[];//全局 恢复事件
xmlContent: String; //xml
}
// 参数操作
export interface ProcessParameter {
id: string;
name: string;
type: OperationType;
value: string;
apiConfig: ApiConfig;
formConfig: FormAssignmentSourceConfig; // 如果type === 表单数据 存储表单配置
}
// 输入参数
/**
* 开始节点配置
*/
export interface StartEventConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
assignmentConfig: AssignmentConfig; //参数操作
formConfigs: Array<FormConfigItem>; // 表单配置
subProcessInitiator: string; //子流程开始节点发起人
}
/**
* 用户节点配置
*/
//按钮配置
export interface ButtonConfigItem {
approveType: ApproveType; //审批类型
buttonType: ButtonType; //按钮类型
buttonName: string; //按钮名称
buttonCode: string; //按钮编码
checked: boolean; //选中
scriptContent?: string; //脚本内容
scriptLanguage?: number; //脚本格式
apiConfig?: ApiConfig; //api配置
buttonOpera?: RejectType; //驳回类型
}
// 意见簿
export interface OpinionConfig {
enabled: boolean; //是否关联表单
showType: ApprovalOpinionDisplayType; //审批意见展示类型 0 显示所有 1 显示最终结果
signature: ElectronicSignatureVerification; //电子签章验证
component: Array<string>; //关联意见框组件
}
/**
* 用户任务配置
*/
export interface UserTaskConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
currentProgress: undefined | number; //进度
autoAgreeRule: Array<AutoAgreeRule>; //自动同意规则
isPrevChooseNext: DesignatedApprover; //是否上一节点审批人指定下一节点审批人
noHandler: NoHandler; //无对应处理人
provisionalApprover: Boolean; //临时审批人
noticePolicyConfigs: NoticePolicyType[]; //通知策略
approverConfigs: MemberConfig[]; //审批人
// authMember: MemberConfig; //审批人
circulateConfigs: MemberConfig[]; //传阅人
countersignConfig: CountersignConfig; //会签
buttonConfigs: Array<ButtonConfigItem>;
opinionConfig: OpinionConfig;
formConfigs: Array<FormConfigItem>; // 表单配置
assignmentConfig: AssignmentConfig; //参数操作
timeOutHandle: TimeOutConfig; //超时处理
}
/**
* 脚本节点配置
*/
export interface ScriptTaskConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
noticePolicyConfigs: NoticePolicyType[]; //通知策略
recordInfo: RecordType; //记录信息
script: {
enabled: boolean;
scriptFormat: string; //脚本格式
scriptContent: string; //脚本内容
};
api: {
enabled: boolean;
apiConfig: ApiConfig;
};
assignmentConfig: AssignmentConfig; //参数操作
}
/**
* 网关配置
*/
export interface GatewayConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
}
/**
* 结束配置
*/
export interface EndEventConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
noticePolicyConfigs: NoticePolicyType[]; //通知策略
}
/**
* 子流程配置
*/
export interface SubProcessConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
subProcessType: SubProcessType.MULTIPLE, // 调用类型
finishType: FinishType.ALL, //完成条件
percentOf: undefined, //百分比数值
executionType: ExecutionType.PARALLEL, //执行类型
originatorNode: '', //如果调用类型为单实例 子流程发起人
originatorType: MemberType.FORM_FIELD, //发起人类型
originatorConfig: '', //表单数据
approverConfigs: MemberConfig[], //审批人
inParams: [], //输入参数
outParams: [], //输出参数
startEventConfigs: [],
endEventConfigs: [],
}
/**
* 流程线配置
*/
export interface SequenceFlowConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
conditionConfigs: ConditionConfig[]; //变量来源
}
/**
* 流转条件配置
*/
export interface ConditionConfig {
nodeId: string;
formId: string;
formField: string;
}
export interface CallActivityParams {
source: string;
target: string;
}
/**
* 外部流程
*/
export interface CallActivityConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
schemaId: string; //被调用元素外部流程schemaId
schemaName: string; //被调用元素外部流程schemaName
callActivityType: CallActivityType.SINGLE; // 调用类型
finishType: FinishType.ALL; //完成条件
percentOf: undefined | Number; //百分比数值
executionType: ExecutionType; //执行类型
originatorType: MemberType; //发起人类型
originatorNode: string; //如果调用类型为单实例 子流程发起人
originatorConfig: string; //发起人表单数据配置
inParams: CallActivityParams[]; //输入参数
outParams: CallActivityParams[]; //输出参数
}
export type ValidateProcessConfigs = Array<{
nodeName: string; //节点名称
nodeType: BpmnNodeKey; //节点类型
msg: string;
validate: boolean;
}>;
export interface BasicNodeConfig {
id: string; //节点id
type: BpmnNodeKey; //节点类型
name: string; //节点名称
remark: string; //节点描述
startEventConfigs: NodeEventConfig[];
endEventConfigs: NodeEventConfig[];
}
export interface NodeEventConfig {
type: NodeEventExType; //节点类型:
apiConfig?: ApiConfig; //APi配置
liteflowId?: string; //流程引擎
}
export interface RootElement {
id: InfoId;
name: string;
$type: BpmnNodeKey;
incoming?: Array<RootElement>;
outgoing?: Array<RootElement>;
flowElements?: Array<RootElement>;
}
export type RootElements = Array<RootElement>;