生态产品多个设计器现已发布候选版本

查看生态总览
跳转到内容

XiHan 工作流引擎预设 ​

@xihan-flow/core/presets/xihan-workflow 是 XiHan.Framework 工作流引擎的节点预设:引擎的每种活动对应一个节点类型,属性键与引擎读的一致,并能与引擎定义 JSON 互转。用法见 XiHan 工作流引擎预设。

节点类型 ​

下表与各节点类型的属性取自中文文案的预设(createXihanWorkflow({ texts: xihanWorkflowZhCN }))。类型名就是引擎的活动类型。

类型名称类别图标端口个数与可达性
Start开始流程控制PlayIcon右侧出口可达性的起点,不要求入线;恰好 1 个
End结束流程控制CircleCheckIcon左侧入口不要求出线
Decision条件分支流程控制GitBranchIcon左侧入口、右侧出口—
Parallel并行分支流程控制LayersIcon左侧入口、右侧出口—
Join汇聚流程控制ListChecksIcon左侧入口、右侧出口—
Delay延时流程控制TimerIcon左侧入口、右侧出口—
SubWorkflow子流程流程控制PuzzleIcon左侧入口、右侧出口—
ForEach遍历流程控制RefreshIcon左侧入口、右侧出口—
Terminate终止流程控制BanIcon左侧入口不要求出线
Fault抛出故障流程控制TriangleAlertIcon左侧入口不要求出线
UserTask人工任务人工UserCheckIcon左侧入口、右侧出口—
SetVariable设置变量数据PencilIcon左侧入口、右侧出口—
HttpHTTP 请求集成GlobeIcon左侧入口、右侧出口—
Script脚本集成CpuIcon左侧入口、右侧出口—
PublishEvent发布事件事件MegaphoneIcon左侧入口、右侧出口—
WaitSignal等待信号事件BellIcon左侧入口、右侧出口—
Log日志工具FileTextIcon左侧入口、右侧出口—

Start · 开始 ​

属性路径编辑方式分组必填
名称labeltext基本—

从它连出的连线:

属性路径编辑方式分组必填
条件data.conditiontext——

End · 结束 ​

属性路径编辑方式分组必填
名称labeltext基本—
流程结果data.properties.Outcomeselect:通过(approved)、驳回(rejected)基本—

Decision · 条件分支 ​

属性路径编辑方式分组必填
名称labeltext基本—

从它连出的连线:

属性路径编辑方式分组必填
条件data.conditiontext——
优先级data.prioritynumber——
默认分支data.isDefaultboolean——

Parallel · 并行分支 ​

属性路径编辑方式分组必填
名称labeltext基本—

从它连出的连线没有额外属性。

Join · 汇聚 ​

属性路径编辑方式分组必填
名称labeltext基本—
汇聚方式data.properties.Modeselect:等待全部(WaitAll)、任一到达(WaitAny)基本—

从它连出的连线:

属性路径编辑方式分组必填
条件data.conditiontext——

Delay · 延时 ​

属性路径编辑方式分组必填
名称labeltext基本—
时长(秒)data.properties.DurationSecondstext基本是
失败后继续data.continueOnErrorboolean执行—
最多尝试次数data.retryPolicy.maxAttemptsnumber执行—
首次重试等待(秒)data.retryPolicy.firstDelaySecondsnumber执行—
退避倍率data.retryPolicy.backoffFactornumber执行—

从它连出的连线:

属性路径编辑方式分组必填
条件data.conditiontext——

SubWorkflow · 子流程 ​

属性路径编辑方式分组必填
名称labeltext基本—
流程编码data.properties.DefinitionCodetext基本是
流程版本data.properties.DefinitionVersionnumber基本—
变量data.properties.Variablesjson基本—
变量表达式data.properties.VariableExpressionsjson基本—
等待完成data.properties.WaitForCompletionboolean基本—
结果变量data.properties.ResultVariabletext基本—
子流程故障时失败data.properties.FailOnChildFaultboolean基本—
超时(秒)data.timeoutSecondsnumber执行—
失败后继续data.continueOnErrorboolean执行—
最多尝试次数data.retryPolicy.maxAttemptsnumber执行—
首次重试等待(秒)data.retryPolicy.firstDelaySecondsnumber执行—
退避倍率data.retryPolicy.backoffFactornumber执行—

从它连出的连线:

属性路径编辑方式分组必填
条件data.conditiontext——

ForEach · 遍历 ​

属性路径编辑方式分组必填
名称labeltext基本—
集合表达式data.properties.ItemsExpressiontext基本—
元素变量名data.properties.ItemVariableNametext基本—
流程编码data.properties.DefinitionCodetext基本是
流程版本data.properties.DefinitionVersionnumber基本—
并行执行data.properties.Parallelboolean基本—
一项失败即停止data.properties.FailFastboolean基本—
变量data.properties.Variablesjson基本—
结果变量data.properties.ResultVariabletext基本—
超时(秒)data.timeoutSecondsnumber执行—
失败后继续data.continueOnErrorboolean执行—
最多尝试次数data.retryPolicy.maxAttemptsnumber执行—
首次重试等待(秒)data.retryPolicy.firstDelaySecondsnumber执行—
退避倍率data.retryPolicy.backoffFactornumber执行—

从它连出的连线:

属性路径编辑方式分组必填
条件data.conditiontext——

Terminate · 终止 ​

属性路径编辑方式分组必填
名称labeltext基本—
终止原因data.properties.Reasontext基本—

Fault · 抛出故障 ​

属性路径编辑方式分组必填
名称labeltext基本—
内容data.properties.Messagetext基本—

UserTask · 人工任务 ​

属性路径编辑方式分组必填
名称labeltext基本—
待办标题data.properties.Titletext基本—
受理人规则data.properties.AssigneeRulesxihan-workflow.assignee-rules参与人—
受理人data.properties.Assigneestags参与人—
受理人表达式data.properties.AssigneesExpressiontext参与人—
排除发起人data.properties.ExcludeStarterboolean参与人—
通过规则data.properties.CompletionPolicyselect:任一人通过(Any)、全部通过(All)、依次审批(Sequential)参与人—
没有受理人时data.properties.EmptyAssigneeStrategyselect:报错(Fault)、自动通过(AutoApprove)、自动驳回(AutoReject)、转交兜底受理人(Fallback)参与人—
兜底受理人规则data.properties.FallbackAssigneeRulesxihan-workflow.assignee-rules参与人是
抄送规则data.properties.CcRulesxihan-workflow.assignee-rules参与人—
抄送人data.properties.CcUserIdstags参与人—
表单数据data.properties.FormDatajson表单—
可选办理结果data.properties.AllowedOutcomestags表单—
超时(秒)data.timeoutSecondsnumber执行—
失败后继续data.continueOnErrorboolean执行—
最多尝试次数data.retryPolicy.maxAttemptsnumber执行—
首次重试等待(秒)data.retryPolicy.firstDelaySecondsnumber执行—
退避倍率data.retryPolicy.backoffFactornumber执行—

从它连出的连线:

属性路径编辑方式分组必填
条件data.conditiontext——

SetVariable · 设置变量 ​

属性路径编辑方式分组必填
名称labeltext基本—
固定值data.properties.Valuesjson基本—
表达式data.properties.Expressionsjson基本—
失败后继续data.continueOnErrorboolean执行—
最多尝试次数data.retryPolicy.maxAttemptsnumber执行—
首次重试等待(秒)data.retryPolicy.firstDelaySecondsnumber执行—
退避倍率data.retryPolicy.backoffFactornumber执行—

从它连出的连线:

属性路径编辑方式分组必填
条件data.conditiontext——

Http · HTTP 请求 ​

属性路径编辑方式分组必填
名称labeltext基本—
地址data.properties.Urltext基本是
请求方法data.properties.Methodselect:GET(GET)、POST(POST)、PUT(PUT)、DELETE(DELETE)、PATCH(PATCH)基本—
请求头data.properties.Headersjson基本—
请求体data.properties.Bodytext基本—
内容类型data.properties.ContentTypetext基本—
请求超时(秒)data.properties.TimeoutSecondsnumber基本—
结果变量data.properties.ResultVariabletext基本—
错误状态码时失败data.properties.FailOnErrorStatusboolean基本—
失败后继续data.continueOnErrorboolean执行—
最多尝试次数data.retryPolicy.maxAttemptsnumber执行—
首次重试等待(秒)data.retryPolicy.firstDelaySecondsnumber执行—
退避倍率data.retryPolicy.backoffFactornumber执行—

从它连出的连线:

属性路径编辑方式分组必填
条件data.conditiontext——

Script · 脚本 ​

属性路径编辑方式分组必填
名称labeltext基本—
代码data.properties.Codetext基本是
结果变量data.properties.ResultVariabletext基本—
失败后继续data.continueOnErrorboolean执行—
最多尝试次数data.retryPolicy.maxAttemptsnumber执行—
首次重试等待(秒)data.retryPolicy.firstDelaySecondsnumber执行—
退避倍率data.retryPolicy.backoffFactornumber执行—

从它连出的连线:

属性路径编辑方式分组必填
条件data.conditiontext——

PublishEvent · 发布事件 ​

属性路径编辑方式分组必填
名称labeltext基本—
事件名data.properties.EventNametext基本是
事件数据data.properties.Payloadjson基本—
失败后继续data.continueOnErrorboolean执行—
最多尝试次数data.retryPolicy.maxAttemptsnumber执行—
首次重试等待(秒)data.retryPolicy.firstDelaySecondsnumber执行—
退避倍率data.retryPolicy.backoffFactornumber执行—

从它连出的连线:

属性路径编辑方式分组必填
条件data.conditiontext——

WaitSignal · 等待信号 ​

属性路径编辑方式分组必填
名称labeltext基本—
信号名data.properties.SignalNametext基本是
接受任意关联data.properties.AcceptAnyCorrelationboolean基本—
超时(秒)data.timeoutSecondsnumber执行—
失败后继续data.continueOnErrorboolean执行—
最多尝试次数data.retryPolicy.maxAttemptsnumber执行—
首次重试等待(秒)data.retryPolicy.firstDelaySecondsnumber执行—
退避倍率data.retryPolicy.backoffFactornumber执行—

从它连出的连线:

属性路径编辑方式分组必填
条件data.conditiontext——

Log · 日志 ​

属性路径编辑方式分组必填
名称labeltext基本—
内容data.properties.Messagetext基本—
级别data.properties.Levelselect:调试(Debug)、信息(Information)、警告(Warning)、错误(Error)基本—
失败后继续data.continueOnErrorboolean执行—
最多尝试次数data.retryPolicy.maxAttemptsnumber执行—
首次重试等待(秒)data.retryPolicy.firstDelaySecondsnumber执行—
退避倍率data.retryPolicy.backoffFactornumber执行—

从它连出的连线:

属性路径编辑方式分组必填
条件data.conditiontext——

流程定义级属性 ​

什么都没选中时属性面板编辑这些属性,换成引擎定义时写在定义的顶层。

属性路径编辑方式分组必填
流程编码data.codetext基本是
名称data.nametext基本是
分类data.categorytext基本—
描述data.descriptiontext基本—
启用补偿data.enableCompensationboolean执行—
启动变量data.variablesxihan-workflow.start-variables基本—

规则 ​

规则检查引擎发布定义时把关、通用校验覆盖不到的约束。说明取自中文文案,严重程度可以经 validateOptions.severity 改写。

问题码严重程度说明
xihan-workflow.no-end警告流程没有结束或终止节点
xihan-workflow.decision-multiple-defaults错误条件分支至多一条默认分支
xihan-workflow.decision-no-default警告加一条默认分支或无条件分支
xihan-workflow.user-task-no-assignee错误配置受理人规则、受理人或受理人表达式

下面的文案键不是问题码,是 legacyAssignees: false 时同一条问题换用的说明(只提受理人规则)。

文案键用于问题码说明
xihan-workflow.user-task-no-assignee-rulesxihan-workflow.user-task-no-assignee配置受理人规则

预设 ​

createXihanWorkflow() ​

ts
declare function createXihanWorkflow(options?: CreateXihanWorkflowOptions): FlowCoreExtension

按文案生成预设扩展。节点类型与属性的文字写在扩展里,换语言就换一个扩展对象(同一个 id,按卸下再装上处理);物料分类与属性分组的文字交给设计器的 paletteGroupLabels、propertyGroupLabels。受理人规则的编辑方式是 XIHAN_WORKFLOW_ASSIGNEE_RULES,编辑器由宿主经设计器扩展的 editors.byControl 提供;启动变量的编辑方式是 XIHAN_WORKFLOW_START_VARIABLES,设计器内建它的编辑器,宿主同样可以按种类换掉。

CreateXihanWorkflowOptions ​

createXihanWorkflow 的选项。

属性类型说明
texts?XihanWorkflowTextsOverride文案,各部分按键覆盖英文缺省;整套换语言直接传对应的语言包,如 xihanWorkflowZhCN、xihanWorkflowJaJP。
legacyAssignees?boolean审批节点的属性面板里显示旧的受理人写法(Assignees、AssigneesExpression、CcUserIds),缺省 true。为 false 时不登记这三项属性,已有的值照旧读写、往返不丢,只是属性面板里不再显示;缺受理人的问题说明也只提受理人规则。

XihanWorkflowTexts ​

预设的全部文案。

属性类型说明
activitiesReadonly<Record<XihanWorkflowActivityType, string>>节点类型的显示名,键是活动类型。
categoriesReadonly<Record<XihanWorkflowCategory, string>>交给设计器的 paletteGroupLabels。
groupsReadonly<Record<XihanWorkflowGroup, string>>交给设计器的 propertyGroupLabels。
propertiesReadonly<Record<XihanWorkflowPropertyKey, string>>属性的标签。
optionsReadonly<Record<XihanWorkflowOptionKey, string>>下拉选项的文字。
issuesReadonly<Record<XihanWorkflowIssueTextKey, string>>规则问题的说明,键见 XihanWorkflowIssueTextKey。

与引擎定义互转 ​

toWorkflowDefinition() ​

ts
declare function toWorkflowDefinition(document: FlowDocument): XihanWorkflowDefinition

流程文档换成引擎定义:文档 data 里的字段放在前面,接着 nodes、transitions 与 extraProperties。节点坐标写进 extraProperties.designerLayout;有拐点或外观的连线写进 designerEdges,有扩展数据的写进 designerExtensions。节点总有 name 与 properties(引擎的缺省分别是空串与空字典)。

fromWorkflowDefinition() ​

ts
declare function fromWorkflowDefinition(definition: XihanWorkflowDefinition, options?: FromWorkflowDefinitionOptions): FlowDocument

引擎定义换成流程文档。节点坐标取 extraProperties.designerLayout,有节点没有坐标时按连线自左向右分层排出它的坐标;尺寸按活动类型取。连线没有 id 时按「源->目标#序号」补上。Delay 的 DurationSeconds 为数字时换成字符串,其余字段原样搬,值为 null 的字段去掉。结构不对时抛 TypeError。

FromWorkflowDefinitionOptions ​

fromWorkflowDefinition 的选项。

属性类型说明
nodeTypes?FlowNodeTypeRegistry节点尺寸先从这里按活动类型取,取不到再用预设的尺寸。

XihanWorkflowDefinition ​

引擎的流程定义;没列出的字段原样保留。

属性类型说明
id?string
code?string流程编码;同一编码可以有多个版本。
name?string
version?number版本号,同一编码内从 1 开始递增。
description?string | null
category?string | null
status?string状态,如 Draft、Published。
enableCompensation?boolean启用补偿:实例被取消时按执行的逆序执行可补偿活动的补偿逻辑。
nodes?readonly XihanWorkflowNode[]
transitions?readonly XihanWorkflowTransition[]
variables?readonly JsonObject[]启动变量的声明。
tenantId?number | null租户 id;为空是平台级定义。
creationTime?string
publishTime?string | null
extraProperties?Readonly<Record<string, string>>扩展属性,值都是字符串。

XihanWorkflowNode ​

引擎定义里的节点。

属性类型说明
idstring节点 id,流程定义内唯一。
name?string节点名称,即节点的 label。
activityTypestring活动类型,即节点的 type;引擎内置的见 XIHAN_WORKFLOW_ACTIVITY_TYPES,也可以是应用登记的活动。
properties?JsonObject活动属性,键名由各活动约定。
retryPolicy?{ readonly maxAttempts?: number, readonly firstDelaySeconds?: number, readonly backoffFactor?: number } | null重试策略;为空不重试。
timeoutSeconds?number | null挂起超时的秒数,只对会挂起的节点生效;为空不超时。
continueOnError?boolean失败续行:节点最终失败时不让整个实例故障,以 error 结果继续流转。

XihanWorkflowTransition ​

引擎定义里的连线。

属性类型说明
id?string连线 id,流程定义内唯一。
name?string | null连线名称,即连线的 label。
sourceNodeIdstring源节点 id。
targetNodeIdstring目标节点 id。
condition?string | null转移条件表达式;为空表示无条件。
priority?number优先级:条件分支按数值从小到大逐条求值,取第一条满足的。
isDefault?boolean默认分支:条件分支的条件都不满足时走它。

全部导出 ​

activities ​

名称种类说明
XIHAN_WORKFLOW_ASSIGNEE_RULES常量受理人规则的编辑方式:值是 { type, values } 的数组,编辑器由宿主提供(按 control.kind 登记)。
XIHAN_WORKFLOW_START_VARIABLES常量启动变量的编辑方式:值是 { name, required?, defaultValue?, description? } 的数组,设计器内建它的编辑器。
xihanWorkflowNodeSize函数节点在画布上的尺寸:开始与结束类小一些,其余(含宿主自定义的活动)一样大。
xihanWorkflowPropertyKeys函数各活动类型在 data.properties 下读的键,供一致性核对。

definition ​

名称种类说明
fromWorkflowDefinition函数引擎定义换成流程文档。
FromWorkflowDefinitionOptions接口fromWorkflowDefinition 的选项。
toWorkflowDefinition函数流程文档换成引擎定义:文档 data 里的字段放在前面,接着 nodes、transitions 与 extraProperties。
XihanWorkflowDefinition接口引擎的流程定义;没列出的字段原样保留。
XihanWorkflowNode接口引擎定义里的节点。
XihanWorkflowTransition接口引擎定义里的连线。

index ​

名称种类说明
createXihanWorkflow函数按文案生成预设扩展。
CreateXihanWorkflowOptions接口createXihanWorkflow 的选项。
XIHAN_WORKFLOW_ID常量预设的扩展 id;规则的问题码以 xihan-workflow. 开头。
xihanWorkflow常量英文文案的预设扩展。

locale/de-DE ​

名称种类说明
xihanWorkflowDeDE常量德语文案。

locale/en-US ​

名称种类说明
xihanWorkflowEnUS常量英文文案。

locale/es-ES ​

名称种类说明
xihanWorkflowEsES常量西班牙语文案。

locale/fr-FR ​

名称种类说明
xihanWorkflowFrFR常量法语文案。

locale/ja-JP ​

名称种类说明
xihanWorkflowJaJP常量日语文案。

locale/ko-KR ​

名称种类说明
xihanWorkflowKoKR常量韩语文案。

locale/pt-BR ​

名称种类说明
xihanWorkflowPtBR常量巴西葡萄牙语文案。

locale/ru-RU ​

名称种类说明
xihanWorkflowRuRU常量俄语文案。

locale/zh-CN ​

名称种类说明
xihanWorkflowZhCN常量简体中文文案。

locale/zh-TW ​

名称种类说明
xihanWorkflowZhTW常量繁体中文文案。

texts ​

名称种类说明
XIHAN_WORKFLOW_ACTIVITY_TYPES常量引擎内置的活动类型,与 XiHan.Framework.Workflow 的 WorkflowActivityTypes 一一对应。
XIHAN_WORKFLOW_TEXTS常量英文缺省文案。
XihanWorkflowActivityType类型引擎内置的活动类型名。
XihanWorkflowCategory类型物料面板的分类,节点类型的 category 取这些值。
XihanWorkflowGroup类型属性面板的分组,属性描述的 group 取这些值。
XihanWorkflowIssueCode类型预设规则的问题码。
XihanWorkflowIssueTextKey类型规则问题说明的键:问题码,外加同一条问题随预设选项换用的说明。
XihanWorkflowOptionKey类型下拉选项的键:属性键加点加取值,只列需要翻译的。
XihanWorkflowPropertyKey类型属性名的键:节点属性用引擎的键名(Title、Url…),节点级字段与连线、流程定义的字段用 JSON 里的字段名,名称(节点名与连线名)为 name。
XihanWorkflowTexts接口预设的全部文案。
XihanWorkflowTextsOverride类型覆盖部分文案:各部分分别按键覆盖英文缺省。

Released under The MIT License