コード例 #1
0
  public void testStartProcessWithLinking() {
    LogUtil.info(getClass().getName(), ">>> testStartProcessWithLinking");

    // start and get instant id of 1st process
    String packageVersion = workflowManager.getCurrentPackageVersion(packageId);
    WorkflowProcessResult result =
        workflowManager.processStart(packageId + "#" + packageVersion + "#" + processId);
    String process1Id = result.getProcess().getInstanceId();
    LogUtil.info(
        getClass().getName(), "-------------  process one id : " + process1Id + "  -------------");

    // start 2nd process with 1st process instant id and get 2nd process instant id
    WorkflowProcessResult nextResult =
        workflowManager.processStartWithLinking(
            packageId + "#" + packageVersion + "#" + processId, null, null, process1Id);
    String process2Id = nextResult.getProcess().getInstanceId();
    LogUtil.info(
        getClass().getName(), "-------------  process two id : " + process2Id + "  -------------");

    // check process linking data is correct or not
    WorkflowProcessLink link = workflowManager.getWorkflowProcessLink(process2Id);
    LogUtil.info(
        getClass().getName(),
        "-------------  origin process id : " + link.getOriginProcessId() + "  -------------");
    workflowManager.internalDeleteWorkflowProcessLink(link);
    Assert.assertNotNull(link);
    Assert.assertTrue(
        process1Id.equals(link.getOriginProcessId())
            && process1Id.equals(link.getParentProcessId()));
  }
コード例 #2
0
  public void testCopyProcess() {
    LogUtil.info(getClass().getName(), ">>> testCopyProcess");

    boolean valid = false;

    // start and get instance id of the 1st process
    String packageVersion = workflowManager.getCurrentPackageVersion(packageId);
    WorkflowProcessResult result =
        workflowManager.processStart(packageId + "#" + packageVersion + "#" + processId);
    String processInstanceId = result.getProcess().getInstanceId();
    LogUtil.info(
        getClass().getName(),
        "-------------  process one id : " + processInstanceId + "  -------------");

    // abort running activities and start activity B
    String firstActivityDef = "A";
    String desiredActivityDef = "B";
    boolean started = workflowManager.activityStart(processInstanceId, desiredActivityDef, true);

    if (started) {
      // start 2nd process from the 1st process instance id
      WorkflowProcessResult nextResult =
          workflowManager.processCopyFromInstanceId(
              processInstanceId, packageId + "#" + packageVersion + "#" + processId, true);
      WorkflowProcess processStarted = nextResult.getProcess();

      if (processStarted != null) {
        // check for the aborted and running activities
        String newProcessId = processStarted.getInstanceId();
        Collection<WorkflowActivity> activityList =
            workflowManager.getActivityList(newProcessId, 0, 1000, null, null);
        for (WorkflowActivity act : activityList) {
          if (act.getState().startsWith("open")) {
            if (firstActivityDef.equals(act.getActivityDefId())) {
              valid = false;
              break;
            }
            if (desiredActivityDef.equals(act.getActivityDefId())) {
              valid = true;
            }
          }
        }
        LogUtil.info(
            getClass().getName(),
            "-------------  new process id : " + newProcessId + "  ------------- " + valid);

        // cleanup
        WorkflowProcessLink link = workflowManager.getWorkflowProcessLink(newProcessId);
        workflowManager.internalDeleteWorkflowProcessLink(link);
      }
    }

    Assert.assertTrue(valid);
  }