Activiti5工作流实战-5

谁说胖子不能爱 提交于 2019-11-30 13:57:27

public class JumpTask implements Command<Void> {
    protected String executionId;  
    protected ActivityImpl desActivity;  
    protected Map<String, Object> paramvar;  
    protected ActivityImpl currentActivity;
    //获取默认的流程引擎
    protected static ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();
    
    public static void main(String[] args) {
        Map<String, Object> map = new HashMap<String, Object>();  
//        String[] v = { "shareniu1", "shareniu2", "shareniu3", "shareniu4" };  
//        vars.put("assigneeList", Arrays.asList(v));
        map.put("leader", "hty");
        map.put("day", "7");
        RepositoryService repositoryService = pe.getRepositoryService();  
        ReadOnlyProcessDefinition processDefinitionEntity = (ReadOnlyProcessDefinition) repositoryService  
        .getProcessDefinition("StaffLeaveProcess:4:42504");  
        // 目标节点  
        ActivityImpl destinationActivity = (ActivityImpl) processDefinitionEntity  
        .findActivity("usertask4");  
        String executionId = "45001";  
        // 当前节点  
        ActivityImpl currentActivity = (ActivityImpl)processDefinitionEntity  
              .findActivity("usertask1");  
        pe.getManagementService().executeCommand(  
        new JumpTask(executionId, destinationActivity, map,  
        currentActivity));  
    }

    public Void execute(CommandContext commandContext) {  
        ExecutionEntityManager executionEntityManager = Context  
        .getCommandContext().getExecutionEntityManager();  
        // 获取当前流程的executionId,因为在并发的情况下executionId是唯一的。  
        ExecutionEntity executionEntity = executionEntityManager  
        .findExecutionById(executionId);  
        executionEntity.setVariables(paramvar);  
        executionEntity.setEventSource(this.currentActivity);  
        executionEntity.setActivity(this.currentActivity);  
        // 根据executionId 获取Task  
        Iterator<TaskEntity> localIterator = Context.getCommandContext()  
        .getTaskEntityManager()  
        .findTasksByExecutionId(this.executionId).iterator();  
           
        while (localIterator.hasNext()) {  
        TaskEntity taskEntity = (TaskEntity) localIterator.next();  
        // 触发任务监听  
        taskEntity.fireEvent("complete");  
//        taskEntity.setAssignee("hty");
        // 删除任务的原因  
        Context.getCommandContext().getTaskEntityManager()  
        .deleteTask(taskEntity, "completed", false);  
        }  
        executionEntity.executeActivity(this.desActivity);  
        return null;  
        }  
           
        /** 
         * 构造参数 可以根据自己的业务需要添加更多的字段 
         * @param executionId 
         * @param desActivity 
         * @param paramvar 
         * @param currentActivity 
         */  
        public JumpTask(String executionId, ActivityImpl desActivity,  
        Map<String, Object> paramvar, ActivityImpl currentActivity) {  
        this.executionId = executionId;  
        this.desActivity = desActivity;  
        this.paramvar = paramvar;  
        this.currentActivity = currentActivity;  
        }  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!