Activiti工作流(三)——流程变量

流程变量可以是流程中一系列参数,比如办理人(Assignee),消息(message)等。这些流程变量使得activiti能够应用于更为复杂的业务中,使得流程变得更加灵活可控。


场景(一)

图一:没有使用流程变量
这里写图片描述

图二:使用流程变量

这里写图片描述

上面两个流程定义只是是否应用流程变量的一个简单例子,但可以看出,应用流程变量可以使得流程图更符合我们的业务需要。

场景(二)

图一:

将Assignee办理人配死

这里写图片描述

如果需要改变办理人,怎么办?

图二:

代码中控制办理人

这里写图片描述


在启动流程时,给参数赋值。

     //设置流程参数,办理人
        Map<String,Object> map=new HashMap<String,Object>();
        map.put("inputUser","小李");



场景(三)

在项目开发中,最常用的是与业务相结合的变量参数了。比如员工管理中的员工姓名、性别等信息,请假管理中的请假人员、请假时长、请假原因等。

需求:新员工报道流程,保存员工信息。

// 与任务相关的service
        TaskService taskService = processEngine.getTaskService();
        //假定一个任务id
        String taskId = "1604";
        // 方法一:设置流程变量,使用基本数据类型

        /*taskService.setVariableLocal(taskId, "请假天数", 5); // local 与任务绑定
        taskService.setVariable(taskId, "请假日起", new Date());
        taskService.setVariable(taskId, "请假原因", "回家探亲。hi");*/

        //方法二:使用javabean类型
        Person person=new Person();
        person.setId(122);
        person.setName("ysx");
        taskService.setVariable(taskId, "人员信息",person);

上篇博客我们介绍了与activiti自带的数据库,其中,act_hi_varinst,act_ru_variable都与流程变量的存储相关。员工信息保存到业务数据库后,流程变量信息会保存到流程库的这两张表中。

posted @ 2016-01-21 16:01  Sherry&Yang  阅读(667)  评论(0编辑  收藏  举报