jbpm在rest API中修改 task Variable

来源:互联网 发布:通过ip访问阿里云网站 编辑:程序博客网 时间:2024/06/06 04:45

       最近做的jbpm开发时修改远程rest接口,而我需要做的是:在human task做complete动作的时候修改task Variable:

      问题起因于,刚开始项目组画的流程图没有考虑分支的问题,后来希望加上流程分支,在human task结点,如果审批的人不同意,那么后面的分支网关经过判断后走另外一条路。而我们尝试过在human task调用的rest API中修改流程变量,但是失败。后来我发现human task有一个mapping机制,就是可以把process variable和task variable映射,做到改变task variable,最后对应映射的process variable也会被改变。具体机制和操作见帖子:《JBoss 系列八十三: jBPM 6 中 Process Variable 和 Task Variable 以及它们之间的Mapping模式》

http://blog.csdn.net/kylinsoong/article/details/17998427

然而实例代码和官方example都是直接运行流程图,调用的是本地的代码,修改机制不太一样。

我在rest api中用本地修改的方法不一样。我需要在complete前加上修改task variable的代码

            //cmd = new CompleteTaskCommand(taskId, userId, data);
            HashMap<String, Object> contentParams = new HashMap<String, Object>();
            contentParams.put("out_variable", token); 
            RuntimeEngine runtimeEngine = runtimeMgrMgr.getRuntimeEngine(task.getTaskData().getDeploymentId(), task.getTaskData().getProcessInstanceId());
            KieSession kieSession = runtimeEngine.getKieSession();
            TaskService taskService = runtimeEngine.getTaskService();
            long contentId = ((InternalTaskService)taskService).addContent(taskId, contentParams);
            
            cmd = new CompleteTaskCommand(taskId, userId, null);

0 0
原创粉丝点击