Activiti入门 HelloWorld

本文详细介绍使用Activiti流程引擎在IDEA中创建请假单流程定义的方法,包括通过插件定义bpmn文件、Java代码部署及测试流程实例,以及查询和完成个人任务的全过程。

1.以IDEA为例创建流程定义的bpmn文件

具体操作安装插件等步骤可见 IDEA教程之Activiti插件

创建一个请假单的流程:可用插件定义流程文件,并设置每个UserTask的办理人

####################################################################################################创建完毕将后缀改为bpmn20.xml(注意流程引擎的RepositoryService在读取流程定义文件是只能识别bpmn20.xml或者.bpmn结尾的文件)

####################################################################################################

流程如下:

 2.Java测试Activiti API代码

public class ServiceTest {
    private ProcessEngine processEngine = JdbcTest.getProcessEngine();

    /**
     * 部署流程定义
     */
    @Test
    public void test(){
        Deployment deploy = processEngine.getRepositoryService()
                .createDeployment()
                .name("请假流程单")
                .addClasspathResource("process/leavebpmn20.xml")
                .deploy();
        System.out.println(deploy.getId()+"  "+deploy.getName());
    }

    /**
     * 启动流程实例
     */
    @Test
    public void test1(){
        ProcessInstance instance = processEngine.getRuntimeService()
    //推荐以流程实例的key启动,会启动最新版本的流程定义
                .startProcessInstanceByKey("helloworld");
        System.out.println(instance.getId()+"   "+instance.getActivityId());
        System.out.println(instance.getProcessDefinitionId());
    }

    /**
     * 查询个人任务
     */
    @Test
    public void test2(){
        List<Task> tasks = processEngine.getTaskService().createTaskQuery().taskAssignee("王五").list();
        for(Task t:tasks){
            System.out.println(t.getAssignee());
            System.out.println(t.getExecutionId());
            System.out.println(t.getProcessInstanceId());
            System.out.println(t.getProcessDefinitionId());
            System.out.println(t.getTaskDefinitionKey());
            System.out.println(t.getId());
            System.out.println(t.getName());
            System.out.println();
        }
    }

    /**
     * 完成我的任务
     */
    @Test
    public void test3(){
        processEngine.getTaskService().complete("7502");
    }
}

按照流程定义的办理人顺序进行测试 可观察到23张表的具体变化:

部署流程定义时会操作以act_re开头的表;

当启动流程时,不仅操作了以act_ru开头的表,还对act_hi开头的表进行了插入操作;

当完成个人任务时观察act_hi开头的表可发现,没完成任务之前表中的end_time_字段为null,完成后更新了这个值还有其他一些信息。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值