⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 taskassignmenttest.java

📁 jbpm demo 是一款非常不错的开源工作流,简单易用,适合扩张开发!
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    assertEquals( expectedPooledActors, assignedPooledActors ); 
  }

  public void testActorIdsAndPooledActors() {
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
      "<process-definition>" +
      "  <start-state>" +
      "    <transition to='a' />" +
      "  </start-state>" +
      "  <task-node name='a'>" +
      "    <task name='change nappy'>" +
      "      <assignment actor-id='me' pooled-actors='flinstones,huckleberries' />" +
      "    </task>" +
      "  </task-node>" +
      "</process-definition>"
    );
    
    ProcessInstance processInstance = new ProcessInstance(processDefinition);
    processInstance.signal();
    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
    assertEquals(1, taskMgmtInstance.getTaskInstances().size());
    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
    assertEquals("me", changeNappy.getActorId());
    
    Set expectedPooledActors = new HashSet();
    expectedPooledActors.add("flinstones");
    expectedPooledActors.add("huckleberries");
    
    Set assignedPooledActors = new HashSet();
    Iterator iter = changeNappy.getPooledActors().iterator();
    while (iter.hasNext()) {
      PooledActor pooledActor = (PooledActor) iter.next();
      assignedPooledActors.add(pooledActor.getActorId());
    }

    assertEquals( expectedPooledActors, assignedPooledActors ); 
  }

  
  public static class AssignActionHandler implements ActionHandler {
    private static final long serialVersionUID = 1L;
    static List assignments = null;
    public void execute(ExecutionContext executionContext) throws Exception {
      TaskInstance taskInstance = executionContext.getTaskInstance();
      assignments.add("from '"+taskInstance.getPreviousActorId()+"' to '"+taskInstance.getActorId()+"'");
    }
  }
  public void testTaskAssignmentEvent() {
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
      "<process-definition>" +
      "  <start-state>" +
      "    <transition to='a' />" +
      "  </start-state>" +
      "  <task-node name='a'>" +
      "    <task name='do something'>" +
      "      <assignment actor-id='me' />" +
      "      <event type='task-assign'>" +
      "        <action class='org.jbpm.taskmgmt.exe.TaskAssignmentTest$AssignActionHandler' />" +
      "      </event>" +
      "    </task>" +
      "  </task-node>" +
      "</process-definition>"
    );
    
    AssignActionHandler.assignments = new ArrayList();
    
    ProcessInstance processInstance = new ProcessInstance(processDefinition);
    processInstance.signal();
    
    List expectedAssignments = new ArrayList();
    expectedAssignments.add("from 'null' to 'me'");
    assertEquals(expectedAssignments, AssignActionHandler.assignments);
    
    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
    TaskInstance doSomething = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
    doSomething.setActorId("you");

    expectedAssignments.add("from 'me' to 'you'");
    assertEquals(expectedAssignments, AssignActionHandler.assignments);
  }

  
  public static class AssignmentBean {
    // methods used to test actor-id assignments
    public String getTheBestProgrammer() {
      return "me";
    }
    public String aNonGetterAssignmentMethod() {
      return "you";
    }

    // methods used to test pooled-actors assignments
    public String[] getTheBestProgrammersStringArray() {
      return new String[]{"me", "you", "them"};
    }
    public List getTheBestProgrammersCollection() {
      List programmers = new ArrayList();
      programmers.add("me");
      programmers.add("you");
      programmers.add("them");
      return programmers;
    }
    public String theBestProgrammersAsCommaSeparatedString() {
      return "me, you, them";
    }
    public String[] aStringArrayMethod() {
      return new String[]{"me", "you", "them"};
    }
    public List aCollectionMethod() {
      List programmers = new ArrayList();
      programmers.add("me");
      programmers.add("you");
      programmers.add("them");
      return programmers;
    }
    public String aCommaSeparatedStringMethod() {
      return "me, you, them";
    }
  }
  
  public void testActorIdPropertyExpression() {
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
      "<process-definition>" +
      "  <start-state>" +
      "    <transition to='a' />" +
      "  </start-state>" +
      "  <task-node name='a'>" +
      "    <task name='do something'>" +
      "      <assignment actor-id='#{assignmentBean.theBestProgrammer}' />" +
      "    </task>" +
      "  </task-node>" +
      "</process-definition>"
    );
    
    AssignActionHandler.assignments = new ArrayList();
    
    ProcessInstance processInstance = new ProcessInstance(processDefinition);
    processInstance.getContextInstance().setVariable("assignmentBean", new AssignmentBean());
    processInstance.signal();
    
    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
    TaskInstance doSomething = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
    assertEquals("me", doSomething.getActorId());
    assertNull(doSomething.getPooledActors());
  }

  public void testActorIdMethodExpression() {
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
      "<process-definition>" +
      "  <start-state>" +
      "    <transition to='a' />" +
      "  </start-state>" +
      "  <task-node name='a'>" +
      "    <task name='do something'>" +
      "      <assignment actor-id='#{assignmentBean.aNonGetterAssignmentMethod}' />" +
      "    </task>" +
      "  </task-node>" +
      "</process-definition>"
    );
    
    AssignActionHandler.assignments = new ArrayList();
    
    ProcessInstance processInstance = new ProcessInstance(processDefinition);
    processInstance.getContextInstance().setVariable("assignmentBean", new AssignmentBean());
    processInstance.signal();
    
    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
    TaskInstance doSomething = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
    assertEquals("you", doSomething.getActorId());
    assertNull(doSomething.getPooledActors());
  }

  public void testPooledActorsStringArrayPropertyExpression() {
    pooledActorExpressionTest("#{assignmentBean.theBestProgrammersStringArray}");
  }

  public void testPooledActorsCollectionPropertyExpression() {
    pooledActorExpressionTest("#{assignmentBean.theBestProgrammersCollection}");
  }

  public void testPooledActorsStringPropertyExpression() {
    pooledActorExpressionTest("#{assignmentBean.theBestProgrammersAsCommaSeparatedString}");
  }

  public void testPooledActorStringArrayMethodExpression() {
    pooledActorExpressionTest("#{assignmentBean.aStringArrayMethod}");
  }

  public void testPooledActorCollectionMethodExpression() {
    pooledActorExpressionTest("#{assignmentBean.aCollectionMethod}");
  }

  public void testPooledActorCommaSeparatedStringMethodExpression() {
    pooledActorExpressionTest("#{assignmentBean.aCommaSeparatedStringMethod}");
  }

  public void pooledActorExpressionTest(String expression) {
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
      "<process-definition>" +
      "  <start-state>" +
      "    <transition to='a' />" +
      "  </start-state>" +
      "  <task-node name='a'>" +
      "    <task name='do something'>" +
      "      <assignment pooled-actors='"+expression+"' />" +
      "    </task>" +
      "  </task-node>" +
      "</process-definition>"
    );
    
    AssignActionHandler.assignments = new ArrayList();
    
    ProcessInstance processInstance = new ProcessInstance(processDefinition);
    processInstance.getContextInstance().setVariable("assignmentBean", new AssignmentBean());
    processInstance.signal();
    
    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
    TaskInstance doSomething = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
    assertNull(doSomething.getActorId());
    
    Set expectedActorIds = new HashSet();
    expectedActorIds.add("me");
    expectedActorIds.add("you");
    expectedActorIds.add("them");
    
    Set pooledActorIds = PooledActor.extractActorIds(doSomething.getPooledActors());
    assertEquals(expectedActorIds, pooledActorIds);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -