Ejemplo n.º 1
0
  @Override
  public void insertAndStageActivation(final AgendaItem activation) {
    if (activationObjectTypeConf == null) {
      EntryPointId ep = workingMemory.getEntryPoint();
      activationObjectTypeConf =
          ((InternalWorkingMemoryEntryPoint)
                  workingMemory.getWorkingMemoryEntryPoint(ep.getEntryPointId()))
              .getObjectTypeConfigurationRegistry()
              .getObjectTypeConf(ep, activation);
    }

    InternalFactHandle factHandle =
        workingMemory
            .getFactHandleFactory()
            .newFactHandle(activation, activationObjectTypeConf, workingMemory, workingMemory);
    workingMemory
        .getEntryPointNode()
        .assertActivation(factHandle, activation.getPropagationContext(), workingMemory);
    activation.setFactHandle(factHandle);

    if (!activation.isCanceled()
        && (activation.getBlockers() == null || activation.getBlockers().isEmpty())) {
      // All activations started off staged, they are unstaged if they are blocked or
      // allowed to move onto the actual agenda for firing.
      getStageActivationsGroup().addActivation(activation);
    }
  }