前言

在现代软件开发中,业务流程管理(BPMN)和工作流引擎广泛应用于自动化和优化业务流程。BPMN(Business Process Model and Notaion)作为一种标准的流程建模语言。因此,将JSON转换为BPMN以便工作流引擎识别和执行,作为一个重要的需求。

本文将介绍如何将JSON格式的业务流程描述转换为BPMN,以便被工作流引擎识别和执行。

完整转BPMN代码:lowflow-design-converter: 低代码流程设计器转bpmn (gitee.com)

什么是BPMN?

BPMN是一种用于业务流程模型的图形表示法,它能够让业务人员或技术人员在同一个平台上交流。
BPMN使用图形符号来表示业务活动、事件和决策、具有良好的可读性和标准化特性。

BPMN核心的元素包括:

  • 流程(Process)
  • 任务(Task)
  • 网关(Gateway)
  • 事件(Event)
  • 连接线(Sequence Flow)

将JSON转换为BPMN

步骤1:解析JSON

首先、需要解析JSON,提取出描述业务流程的关键信息。假设我们的JSON描述了一个简单的业务流程。

{
	"code": "test",
	"name": "测试模型",
	"process": {
		"id": "root",
		"type": "start",
		"name": "发起人",
		"child": {
			"id": "node_bi7kz",
			"pid": "root",
			"type": "approval",
			"name": "审批人",
			"child": {
				"id": "end",
				"pid": "node_bi7kz",
				"type": "end",
				"name": "结束"
			},
			"assigneeType": "user",
			"formUser": "",
			"formRole": "",
			"users": ["admin"],
			"roles": [],
			"leader": 1,
			"orgLeader": 1,
			"choice": false,
			"self": false,
			"multi": "sequential",
			"nobody": "pass",
			"nobodyUsers": [],
		}
	},
	"remark": ""
}

步骤2:创建节点类

分别为:

  • StartNode: 开始节点
  • CcNode: 抄送节点
  • ApprovalNode: 审批节点
  • ConditionNode:条件节点
  • ExclusiveNode:互斥分支节点
  • TimerNode: 计时等待节点
  • EndNode: 结束节点

微信图片_20240519153731.png

步骤3:创建模型类

创建一个类名为:ProcessModel类,并提供一个toBpmnModel方法将类转为BpmnModel
微信截图_20240519154402.png

步骤4:节点转换

以审批节点为例子,创建UserTask类并赋值对应的属性配置

image.png
配置完用户审批节点后,创建SequenceFlow类连接到下一个节点
image.png

步骤5:转为BPMN

导入转换依赖

Flowable的bpmn转换依赖

<dependency>
    <groupId>org.flowable</groupId>
    <artifactId>flowable-bpmn-converter</artifactId>
    <version>6.8.0</version>
</dependency>

Activiti的bpmn转换依赖

<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-bpmn-converter</artifactId>
    <version>7.1.0.M6</version>
</dependency>

转换BPMN并下载

image.png

结论

将 JSON 转换为 BPMN 是一个将数据格式标准化的重要步骤,确保业务流程能够在不同系统之间无缝衔接和执行。通过解析 JSON 并生成相应的 BPMN XML,可以实现这一目标。

希望本文能够为您提供有价值的参考,帮助您在实际项目中实现 JSON 到 BPMN 的转换。如果有任何问题或建议,欢迎交流讨论

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 7 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐