activiti流程图的部署、删除、新增、编辑

activiti流程图的部署、删除以及流程启动


前言`

上一章节展示了spring boot集成activiti以及activiti-modeler及项目基础配置信息,接下来介绍activiti-modeler流程图的一些基本操作

一、activiti-modeler画流程图注意事项

在这里插入图片描述
可以直接拖拉左侧所需用到的事件来画流程图
在这里插入图片描述
人工任务可以输入用户组或者用户唯一值用来分发任务给用户、也可以直接输入assignee直接分发任务给某一角色或某人。因为activiti查询任务时只有assignee为空时才会去表ACT_RU_IDENTITYLINK中查询这里填入的Candidate users和Candidate groups
在这里插入图片描述

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、流程部署

1.部署流程

因为activiti-modeler画图数据会转换成bytes形式存在act_GE_BYTEARRAY这个表中

代码如下(示例):

public String deploy(String processName, String modelId) throws IOException {
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //获取模型
        Model modelData = repositoryService.getModel(modelId);
        byte[] bytes = repositoryService.getModelEditorSource(modelData.getId());

        if (bytes == null) {
            return "模型数据为空,请先设计流程并成功保存,再进行发布。";
        }

        JsonNode modelNode = new ObjectMapper().readTree(bytes);

        BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);
        if (model.getProcesses().size() == 0) {
            return "数据模型不符要求,请至少设计一条主线流程。";
        }
        byte[] bpmnBytes = new BpmnXMLConverter().convertToXML(model);

        if (StringUtils.isNotEmpty(modelData.getDeploymentId())) {
            deployModeler.deployModelDao.updatemodel(modelData.getDeploymentId(),new String(bpmnBytes, "UTF-8"));
            //由于楼主项目与activiti-modeler分开的所以采用接口来清除activiti缓存,这样不用重启就可以生效
            String url =******
            JSONObject jsonParam = new JSONObject();
            String json = doPostJson(url, jsonParam);
            return "success";
        } else {
            //发布流程
            processName = modelData.getName() + ".bpmn20.xml";
            Deployment deployment = repositoryService.createDeployment()
                    .name(modelData.getName())
                    .addString(processName, new String(bpmnBytes, "UTF-8"))
                    .deploy();
            modelData.setDeploymentId(deployment.getId());
            repositoryService.saveModel(modelData);
            return "success";
        }
    }

在这里插入图片描述

2.启动流程

businessKey是唯一值这样能跟流程所对应的外部表单建立关联关系。
启动流程后调用审批方法因为,流程启动后只会到第一节点但是实际业务常常是第一节点人员发起,所以得走过第一节点。
代码如下(示例):

//根据流程key和businessKey启动项目
 //设置流程发起人           Authentication.setAuthenticatedUserId(userCode);
            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(flowKey, businessKey);
            if (ObjectUtils.isNotEmpty(processInstance) && StringUtils.isNotEmpty(processInstance.getProcessInstanceId())) {


                //根据实例查询下一步任务
                Task list = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).singleResult();

                taskService.setAssignee(list.getId(), userCode);

                //taskService.addCandidateUser(list.getId(), userCode);
                //流程开始后需要默认审批第一节点
                ActApproveInfo actApproveInfo1 = approveByBusinesskeyUserId(businessKey, userCode, "", lczt,true);

2.删除activiti-modeler定义的一个流程

删除一个model

@Autowired
    RepositoryService rep;
rep.deleteDeployment(deployid, true);

删除正发生或历史流程

 ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceBusinessKey(businessKey).singleResult();
            if (ObjectUtils.isNotEmpty(processInstance)) {
                //结束流程
                runtimeService.deleteProcessInstance(processInstance.getProcessInstanceId(), "");
                processEngine.getHistoryService().deleteHistoricProcessInstance(processInstance.getProcessInstanceId());
                result.setStatus(ActivitiConstants.DELETE_SUCCESS);
                return result;
            } else {
                HistoricProcessInstance historicProcessInstance = processEngine.getHistoryService().createHistoricProcessInstanceQuery().processInstanceBusinessKey(businessKey).singleResult();
                processEngine.getHistoryService().deleteHistoricProcessInstance(((HistoricProcessInstanceEntityImpl) historicProcessInstance).getProcessInstanceId());
                result.setStatus(ActivitiConstants.DELETE_SUCCESS);
                return result;
            }

查询所有已部署流程

        List<ProcessDefinition> list = rep.createProcessDefinitionQuery().listPage(firstrow, rowCount);

总结

抱歉、语言功底不行,有问题可以私信我

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值