flowable 迁移流程数据

10 篇文章 1 订阅
4 篇文章 5 订阅

flowable 迁移流程数据:

可以从旧版本流程,迁移到新版本(ps:如果版本差异过大,可能会迁移不成功)

flowable 6.4 主要代码(runtimeService):

	@Autowired
	private RuntimeService runtimeService;

	public JSONObject procInstMigration(String fromProcessDefId, String toProcessDefId) {
		if (StringUtils.isBlank(fromProcessDefId)) {
			// 验证不通过
			return JSONObject.parseObject(String.format(JSON_MSG, "false", "原流程定义id为空!"));
		}
		if (StringUtils.isBlank(toProcessDefId)) {
			// 验证不通过
			return JSONObject.parseObject(String.format(JSON_MSG, "false", "目标流程定义id为空!"));
		}

		// 迁移验证
		boolean migrationValid = runtimeService.createProcessInstanceMigrationBuilder()
				.migrateToProcessDefinition(toProcessDefId)
				.validateMigrationOfProcessInstances(fromProcessDefId)
				.isMigrationValid();
		if (!migrationValid) {
			// 验证不通过
			return JSONObject.parseObject(String.format(JSON_MSG, "false", "流程定义差异过大,不满足在途流程的迁移,请修改流程图!"));
		}

		// 验证通过执行迁移
		runtimeService.createProcessInstanceMigrationBuilder()
				.migrateToProcessDefinition(toProcessDefId)
				.migrateProcessInstances(fromProcessDefId);

		//业务操作
        //TODO

		return JSONObject.parseObject(String.format(JSON_MSG, "true", "迁移成功!"));
	}

flowable 6.5 主要代码(processMigrationService):

	@Autowired
	private ProcessMigrationService processMigrationService;

	public JSONObject procInstMigration(String fromProcessDefId, String toProcessDefId) {
		if (StringUtils.isBlank(fromProcessDefId)) {
			// 验证不通过
			return JSONObject.parseObject(String.format(JSON_MSG, "false", "原流程定义id为空!"));
		}
		if (StringUtils.isBlank(toProcessDefId)) {
			// 验证不通过
			return JSONObject.parseObject(String.format(JSON_MSG, "false", "目标流程定义id为空!"));
		}

		// 迁移验证
		boolean migrationValid = processMigrationService.createProcessInstanceMigrationBuilder()
				.migrateToProcessDefinition(toProcessDefId)
				.validateMigrationOfProcessInstances(fromProcessDefId)
				.isMigrationValid();
		if (!migrationValid) {
			// 验证不通过
			return JSONObject.parseObject(String.format(JSON_MSG, "false", "流程定义差异过大,不满足在途流程的迁移,请修改流程图!"));
		}

		// 验证通过执行迁移
		processMigrationService.createProcessInstanceMigrationBuilder()
				.migrateToProcessDefinition(toProcessDefId)
				.migrateProcessInstances(fromProcessDefId);

		//业务操作
        //TODO

		return JSONObject.parseObject(String.format(JSON_MSG, "true", "迁移成功!"));
	}

测试验证:

	@Test
	public void migration() {
		//迁移
		String oldProcDefId = "test:316:6adbcc25-1bc9-11ee-a93a-00ff237a5526";
		String newProcDefId = "test:319:52385710-220c-11ee-8997-005056b2814b";
		JSONObject jsonObject = procInstMigration(oldProcDefId, newProcDefId);
		System.err.println(jsonObject);
	}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Activiti 5.22 和 Flowable 都是 BPMN(Business Process Model and Notation)工作流引擎,但是它们的数据模型有所不同。因此,将 Activiti 5.22 的数据迁移Flowable 时需要进行一些适配和转换。 以下是迁移 Activiti 5.22 数据Flowable 的一般步骤: 1. 创建一个新的 Flowable 数据库。 2. 将 Activiti 5.22 的数据导出为 XML 文件。 3. 使用 Flowable数据迁移工具将 Activiti 5.22 的 XML 文件转换为 Flowable数据格式。 4. 将 Flowable数据导入新的数据库中。 具体的步骤如下: 1. 创建一个新的 Flowable 数据库 在安装 Flowable 后,需要创建一个新的数据库来存储 Flowable数据。可以使用任何关系型数据库,例如 MySQL、Oracle、SQL Server 等等。在创建数据库之前,请确保已经安装了相应的数据库驱动程序。 2. 将 Activiti 5.22 的数据导出为 XML 文件 使用 Activiti 提供的数据备份工具将 Activiti 5.22 的数据导出为 XML 文件。可以使用以下命令行工具来完成此操作: ``` java -jar activiti-data-export.jar -f activiti-export.zip -ds jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=UTF-8 -db mysql -u root -p password ``` 这里的参数说明: - -f:要导出的 XML 文件的名称。 - -ds:要备份的 Activiti 数据库的 JDBC URL。 - -db:要备份的数据库类型(mysql、oracle、mssql)。 - -u:要备份的数据库的用户名。 - -p:要备份的数据库的密码。 执行命令后,将在当前目录下生成一个名为 activiti-export.zip 的文件。 3. 使用 Flowable数据迁移工具将 Activiti 5.22 的 XML 文件转换为 Flowable数据格式 Flowable 提供了一个命令行工具,用于将 Activiti 5.22 的数据转换为 Flowable数据格式。 使用以下命令将 Activiti 的数据转换为 Flowable数据格式: ``` java -jar flowable-data-migration.jar activiti-export.zip flowable-export.zip ``` 这里的参数说明: - activiti-export.zip:Activiti 5.22 数据的备份文件。 - flowable-export.zip:转换后的 Flowable 数据的导出文件。 执行命令后,将在当前目录下生成一个名为 flowable-export.zip 的文件。 4. 将 Flowable数据导入新的数据库中 使用 Flowable 提供的数据导入工具将 Flowable数据导入到新的数据库中。 使用以下命令将 Flowable 数据导入新的数据库中: ``` java -jar flowable-data-import.jar flowable-export.zip jdbc:mysql://localhost:3306/flowable?useUnicode=true&characterEncoding=UTF-8 root password ``` 这里的参数说明: - flowable-export.zip:要导入的 Flowable 数据的文件。 - jdbc:mysql://localhost:3306/flowable?useUnicode=true&characterEncoding=UTF-8:Flowable 数据库的 JDBC URL。 - root:Flowable 数据库的用户名。 - password:Flowable 数据库的密码。 执行命令后,将会将 Flowable 数据导入到新的数据库中。 需要注意的是,这个过程需要谨慎操作,最好在测试环境中进行,以确保数据迁移的成功和正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值