Activiti学习-流程实例的启动(三)

前言

学习从来无捷径,循序渐进登高峰。 --高永祚

介绍

之前在上一篇 我们介绍部署的时候,我们已经使用了activiti提供的RepositoryService,接下来,我们开始使用activiti提供的第二个类,也就是RuntimeService,话不多说,上正文......

正文

在RuntimeService里面,提供了一下几种方式(可能没列全...请见谅...)

//1.
/**
 *  方法参数可以有processDefinitionKey 【必须】
 *	businessKey 关联具体业务的key值 【非必须】
 *  Map<String, Object> variables  流程实例里面的变量【非必须】
 *  上述参数可以组合...
 */
ProcessInstance startProcessInstanceByKey(String processDefinitionKey);
//2.
ProcessInstance startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String tenantId);
//3.
ProcessInstance startProcessInstanceById(String processDefinitionId);
//4.
ProcessInstance startProcessInstanceByMessage(String messageName);
//5. 自定义启动的参数,可添加如上所有参数
ProcessInstanceBuilder createProcessInstanceBuilder();

流程实例启动

public void startProcessInstance() {
        Deployment deployment = this.repositoryService.createDeploymentQuery().deploymentCategory("holiday").singleResult();
        if (deployment != null) {
            //查询流程定义的数据
            ProcessDefinition processDefinition = this.repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();
            if (processDefinition != null) {
                //启动流程实例(如果不想查询的话,我觉得可以直接设置启动)
                //ProcessInstance processInstance = this.runtimeService.startProcessInstanceById(processDefinition.getId());
                ProcessInstance processInstance = this.runtimeService.createProcessInstanceBuilder()
                        .processDefinitionId(processDefinition.getId())
                        .name("请假审批")
                        .businessKey("simple_holiday_1")
                        //.tenantId()
                        //.messageName()
                        //.variables()
                        .start();
                logger.error("流程实例ID: {}", processInstance.getId());
                logger.error("流程实例: {}", processInstance.getName());
                logger.error("流程BusinessKey值: {}", processInstance.getBusinessKey());
                logger.error("流程开始时间: {}", processInstance.getStartTime());
                logger.error("流程是否是挂起: {}", processInstance.isSuspended());
                logger.error("流程开始人: {}", processInstance.getStartUserId());
            } else {
                logger.error("not found processDefinition info By deploymentId {}", deployment.getId());
                throw new RuntimeException("not found processDefinition info By deploymentId");
            }
        }
    }

## 执行结果如下: 
流程实例ID: 7501
流程实例: 请假审批
流程BusinessKey值: simple_holiday_1
流程开始时间: Sun Nov 29 16:45:19 CST 2020
流程是否是挂起: false
流程开始人: null

流程实例的查询

/**
     * 流程实例的查询
     */
    public void searchAllProcessInstance() {
        List<ProcessInstance> processInstanceList = this.runtimeService.createProcessInstanceQuery().list();
        if(processInstanceList != null && !processInstanceList.isEmpty()) {
            for (ProcessInstance processInstanceItem : processInstanceList) {
                logger.error("-----------------------------------");
                logger.error("流程实例信息: {}", processInstanceItem);
                logger.error("流程定义ID: {}", processInstanceItem.getProcessDefinitionId());
                logger.error("流程定义key: {}", processInstanceItem.getProcessDefinitionKey());
                logger.error("流程实例名称: {}", processInstanceItem.getName());
                logger.error("业务关联的key值: {}", processInstanceItem.getBusinessKey());
                logger.error("流程是否挂起: {}", processInstanceItem.isSuspended());
            }
        }

流程实例的更新

public void updateProcessInstanceInfo() {
        List<ProcessInstance> processInstanceList = this.runtimeService.createProcessInstanceQuery().list();
        if(processInstanceList != null && !processInstanceList.isEmpty()) {
            for (ProcessInstance processInstanceItem : processInstanceList) {
                //可以更新相同的businessKey
                //this.runtimeService.updateBusinessKey(processInstanceItem.getId(), "the_same_business_key");
                //让流程实例挂起
                //this.runtimeService.suspendProcessInstanceById(processInstanceItem.getId());
                //重新激活某个流程实例
                //this.runtimeService.activateProcessInstanceById(processInstanceItem.getId());
                //id of the user to use as candidate, cannot be null.
                this.runtimeService.addParticipantUser(processInstanceItem.getId(), "1");
            }
        }
    }

至此,流程实例的一些简单介绍就到这里....

至于删除,emmmm....这个直接去api去找那些delete开头的api方法就好...

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值