Ejemplo n.º 1
0
  @Test
  public void checkMoreThan20DependenciesAreDeletedWhenProcessIsDeleted() throws Exception {
    final TenantServiceAccessor tenantAccessor = getTenantAccessor();
    final DependencyService dependencyService = tenantAccessor.getDependencyService();
    final UserTransactionService transactionService = tenantAccessor.getUserTransactionService();
    final ProcessDefinitionBuilder processDef =
        new ProcessDefinitionBuilder().createNewInstance("processToTestTransitions", "1.0");
    processDef.addStartEvent("start").addUserTask("step1", ACTOR_NAME).addEndEvent("end");
    processDef.addTransition("start", "step1").addTransition("step1", "end");
    processDef.addActor(ACTOR_NAME);
    final BusinessArchiveBuilder businessArchiveBuilder =
        new BusinessArchiveBuilder()
            .createNewBusinessArchive()
            .setProcessDefinition(processDef.done());
    for (int i = 0; i < 25; i++) {
      final byte[] content =
          new byte[] {
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            (byte) (i >>> 24),
            (byte) (i >> 16 & 0xff),
            (byte) (i >> 8 & 0xff),
            (byte) (i & 0xff)
          };
      businessArchiveBuilder.addClasspathResource(new BarResource("myDep" + i, content));
    }
    final ProcessDefinition definition =
        deployAndEnableProcessWithActor(businessArchiveBuilder.done(), ACTOR_NAME, john);
    final ProcessInstance processInstance = getProcessAPI().startProcess(definition.getId());
    final Long step1Id = waitForUserTask(processInstance, "step1");
    setSessionInfo(getSession()); // the session was cleaned by api call. This must be improved
    List<Long> dependencyIds =
        transactionService.executeInTransaction(
            new GetDependenciesIds(getSession(), definition.getId(), dependencyService, 0, 100));
    assertEquals(25, dependencyIds.size());
    final SDependency dependency =
        transactionService.executeInTransaction(
            new GetSDependency(dependencyIds.get(0), dependencyService));
    assertNotNull(dependency);

    assignAndExecuteStep(step1Id, john.getId());
    waitForProcessToFinish(processInstance);
    disableAndDeleteProcess(definition);
    setSessionInfo(getSession()); // the session was cleaned by api call. This must be improved
    dependencyIds =
        transactionService.executeInTransaction(
            new GetDependenciesIds(getSession(), definition.getId(), dependencyService, 0, 100));
    assertEquals(0, dependencyIds.size());
  }