jbpm--(五)jbpm4.4与EL表达式结合使用

<?xml version="1.0" encoding="UTF-8"?>

<process name="test" key="test" xmlns="http://jbpm.org/4.4/jpdl">
   <start name="start1" g="371,108,48,48">
      <transition name="提交到科长" to="科长审批" g="-67,-14"/>
   </start>
   <task assignee="${kezhang}" name="科长审批" g="348,222,92,52">
      <transition name="提交到主任" to="主任审批" g="-53,-17"/>
   </task>
   <task assignee="${zhuren}" name="主任审批" g="352,328,92,52">
      <transition name="通过" to="end1" g="-47,-17"/>
   </task>
   <end name="end1" g="380,428,48,48"/>
    
</process>
package com.tgb.video;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.jbpm.api.ProcessInstance;
import org.jbpm.api.task.Task;

/**
 * 流程变量
 * @author Administrator
 *
 */
public class TestVariable extends JbpmTestCase implements JbpmUtil {

    @Override
    public void deploy() {
        super.startUp();
        repositoryService.createDeployment().addResourceFromClasspath("test.jpdl.xml").deploy();
        
    }
    
    /**
     * 创建流程实例,设置流程变量
     */
    @Override
    public void createInstance() {
        super.startUp();
        Map<String,Object> variable = new HashMap<String,Object>();
        variable.put("kezhang", "0011");
        variable.put("zhuren", "tomm");
        ProcessInstance processInstance = executionService.startProcessInstanceByKey("test", variable);
        
        super.print("流程实例ID", processInstance.getId());
        
    }

    @Override
    public void getCurrectActivity() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void getTask() {
        super.startUp();
        List<Task> tasks=taskService.findPersonalTasks("tomm");
        print("任务数量", Integer.toString(tasks.size()));
        print("任务名词",tasks.get(0).getActivityName());
        
    }
    /**
     * 任务节点向下推进
     */
    @Override
    public void completeTask() {
        super.startUp();
        taskService.completeTask("120001");
    }
    
    public void addTaskVariable(){
        super.startUp();
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("taskUserID", "100");
        map.put("taskUserName", "jack");
        
        taskService.setVariables("50004", map);
    }
    
    public void getTaskVariable(){
        super.startUp();
        String taskUserID = taskService.getVariable("70001", "userId").toString();
        String taskUserName = taskService.getVariable("70001", "userName").toString();
        print("taskuserID",taskUserID);
        print("taskUserName",taskUserName);
        
    }
    
    /**
     * 获取流程变量
     */
    public void getMyVariable(){
        super.startUp();
        String userId = executionService.getVariable("test.70001", "userId1").toString();
        String userName = executionService.getVariable("test.70001", "userName1").toString();
        
        this.print("userId1", userId);
        this.print("userName1", userName);
    }
    
    /**
     * 更新流程变量
     */
    public void updateMyVariable(){
        super.startUp();
        executionService.setVariable("test.70001", "userId1", "002");
        
    }
    
    public void findMyVariable(){
        super.startUp();
        //迭代所有的变量的名称
        Set<String> set =  executionService.getVariableNames("test.50001");
        Iterator iter = set.iterator();
        while(iter.hasNext()){
            System.out.println(iter.next());
        }
        
        //迭代变量名称和值
        Map<String,Object> map = executionService.getVariables("test.50001", set);
        Iterator it = map.entrySet().iterator();
        while(it.hasNext()){
            Map.Entry m = (Map.Entry)it.next();
            this.print(m.getKey().toString(), m.getValue().toString());
        }
    }
    
}

EL表达式取自创建流程实例中 设置的流程变量值,同时也支持对象赋值。

posted on 2017-07-15 16:41  code-java  阅读(262)  评论(0)    收藏  举报

导航