关于activiti部署的问题

忘记说明了,我的activiti版本是5.22的

关于activiti流程部署问题,网上百度基本上都是三种形式,然后我自己尝试,感觉弄出了第四种。

百度activiti部署方式,找到最多的就是三种部署方式就是这位老哥的
https://blog.csdn.net/artaganan8/article/details/77847512

我觉得写得很好,我用的时候,反正第一种我不知道那个png在哪获取

第二种要上传,还要获取png也不想用

第三种是直接获取xml的文件进行部署,但是文件也要上传,然后获取内容的,每次部署都要去下载xml的文件,我也嫌麻烦

然后我就自己鼓捣了一种:

最开始用的时候,我是把activiti的前端,也就是流程设计器集成到我自己的springcloud项目中,做了一个列表,查询所有model,以及对model的更改,然后我就很好奇这个xml的文件更改完了是存在哪里的

在activiti自己生成的数据库中有一个ACT_GE_BYTEARRAY(通用的流程定义和流程资源)的表。我发现每次流程设计器上修改完了,都会把xml存在这个表中的,不相信的可以去哪一个下载下来的,然后去这个表找出对应的比较一下,会发现完全一样。

然后知道了这个关系就简单了,我是不是可以用上面大佬的第三种方式,但是需要部署的内容又是直接从数据库获取呢。然后我就自己尝试着做了一下:

public ResultInfo deploy(WorkClassifyDto workClassifyDto) throws UnsupportedEncodingException {
    	String processId = workClassifyDto.getProcessId();
    	String name = workClassifyDto.getProcessName();
    	ObjectNode modelNode = null;
		try {
			(A)modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(processId));
		} catch (JsonProcessingException e1) {
			e1.printStackTrace();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
       (B) BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);
	    byte[] bpmnBytes = new BpmnXMLConverter().convertToXML(model);
	    Model mocalData = repositoryService.getModel(processId);
	    String tset = new String(bpmnBytes,"utf-8");
    	try {
    		String processName = name + ".bpmn20.xml";
    		Deployment deployment = repositoryService
    				.createDeployment()
    				.name(name)
    				.addString(processName, new String(bpmnBytes,"utf-8"))
    				.deploy();
    		logger.info("部署ID:"+deployment.getId());
    		logger.info("部署时间:"+deployment.getDeploymentTime());
    		//获取流程key
    		//Deployment deployment2 = repositoryService.createDeploymentQuery().deploymentId(deploymentId);
    		//部署资源id存到model表
    		mocalData.setDeploymentId(deployment.getId());
    		repositoryService.saveModel(mocalData);
    		WorkClassify workClassify = new WorkClassify();
    		BeanUtil.copyProperties(workClassifyDto, workClassify);
    		//workClassify.setId(workClassifyDto.getId());
			//workClassify.setState("1");//0:未部署  1:已部署  2:已启用  3:已禁用
			workClassifyMapper.updateByPrimaryKeySelective(workClassify);
    		return ResultInfo.success("部署成功");
		} catch (Exception e) {
			logger.info("部署失败");
			return ResultInfo.fail("部署失败");
		}
	}

贴上了我详细的代码,我的代码涉及到了我的业务,所以仅供参考,

在A处根据modelid去获取到了对应的资源数据

在B处对资源文件做了一个转换,test是为了我方便查看内容的,进行了一个转码,这个test拦截到的,实际上就是我们导出出来的xml文件内容。

然后对文件进行一下处理之后,调用最上面提到的,那位老哥写的第三种根据String方式进行部署了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值