public List<EventSubscriptionEntity> getCompensateEventSubscriptions(String activityId) { List<EventSubscriptionEntity> eventSubscriptions = getEventSubscriptionsInternal(); List<EventSubscriptionEntity> result = new ArrayList<>(eventSubscriptions.size()); for (EventSubscriptionEntity eventSubscriptionEntity : eventSubscriptions) { if (eventSubscriptionEntity.isSubscriptionForEventType(EventType.COMPENSATE) && activityId.equals(eventSubscriptionEntity.getActivityId())) { result.add(eventSubscriptionEntity); } } return result; }
public List<EventSubscriptionEntity> getCompensateEventSubscriptions(String activityId) { List<EventSubscriptionEntity> eventSubscriptions = getEventSubscriptionsInternal(); List<EventSubscriptionEntity> result = new ArrayList<>(eventSubscriptions.size()); for (EventSubscriptionEntity eventSubscriptionEntity : eventSubscriptions) { if (eventSubscriptionEntity.isSubscriptionForEventType(EventType.COMPENSATE) && activityId.equals(eventSubscriptionEntity.getActivityId())) { result.add(eventSubscriptionEntity); } } return result; }
/** * Collect all compensate event subscriptions for activity on the scope of * given execution. */ public static List<EventSubscriptionEntity> collectCompensateEventSubscriptionsForActivity(ActivityExecution execution, String activityRef) { final List<EventSubscriptionEntity> eventSubscriptions = collectCompensateEventSubscriptionsForScope(execution); final String subscriptionActivityId = getSubscriptionActivityId(execution, activityRef); List<EventSubscriptionEntity> eventSubscriptionsForActivity = new ArrayList<EventSubscriptionEntity>(); for (EventSubscriptionEntity subscription : eventSubscriptions) { if (subscriptionActivityId.equals(subscription.getActivityId())) { eventSubscriptionsForActivity.add(subscription); } } return eventSubscriptionsForActivity; }
/** * Collect all compensate event subscriptions for activity on the scope of * given execution. */ public static List<EventSubscriptionEntity> collectCompensateEventSubscriptionsForActivity(ActivityExecution execution, String activityRef) { final List<EventSubscriptionEntity> eventSubscriptions = collectCompensateEventSubscriptionsForScope(execution); final String subscriptionActivityId = getSubscriptionActivityId(execution, activityRef); List<EventSubscriptionEntity> eventSubscriptionsForActivity = new ArrayList<EventSubscriptionEntity>(); for (EventSubscriptionEntity subscription : eventSubscriptions) { if (subscriptionActivityId.equals(subscription.getActivityId())) { eventSubscriptionsForActivity.add(subscription); } } return eventSubscriptionsForActivity; }
/** * Checks if the parameters are the same apart from the execution id */ protected static boolean areEqualEventSubscriptions(EventSubscriptionEntity subscription1, EventSubscriptionEntity subscription2) { return valuesEqual(subscription1.getEventType(), subscription2.getEventType()) && valuesEqual(subscription1.getEventName(), subscription2.getEventName()) && valuesEqual(subscription1.getActivityId(), subscription2.getActivityId()); }
private void startProcessInstances(List<EventSubscriptionEntity> startSignalEventSubscriptions, Map<String, ProcessDefinitionEntity> processDefinitions) { for (EventSubscriptionEntity signalStartEventSubscription : startSignalEventSubscriptions) { ProcessDefinitionEntity processDefinition = processDefinitions.get(signalStartEventSubscription.getId()); if (processDefinition != null) { ActivityImpl signalStartEvent = processDefinition.findActivity(signalStartEventSubscription.getActivityId()); PvmProcessInstance processInstance = processDefinition.createProcessInstanceForInitial(signalStartEvent); processInstance.start(builder.getVariables()); } } }
private void startProcessInstances(List<EventSubscriptionEntity> startSignalEventSubscriptions, Map<String, ProcessDefinitionEntity> processDefinitions) { for (EventSubscriptionEntity signalStartEventSubscription : startSignalEventSubscriptions) { ProcessDefinitionEntity processDefinition = processDefinitions.get(signalStartEventSubscription.getId()); if (processDefinition != null) { ActivityImpl signalStartEvent = processDefinition.findActivity(signalStartEventSubscription.getActivityId()); PvmProcessInstance processInstance = processDefinition.createProcessInstanceForInitial(signalStartEvent); processInstance.start(builder.getVariables()); } } }
/** * Checks if the parameters are the same apart from the execution id */ protected static boolean areEqualEventSubscriptions(EventSubscriptionEntity subscription1, EventSubscriptionEntity subscription2) { return valuesEqual(subscription1.getEventType(), subscription2.getEventType()) && valuesEqual(subscription1.getEventName(), subscription2.getEventName()) && valuesEqual(subscription1.getActivityId(), subscription2.getActivityId()); }
protected List<CorrelationHandlerResult> correlateStartMessageByEventSubscription(CommandContext commandContext, String messageName, CorrelationSet correlationSet) { List<CorrelationHandlerResult> results = new ArrayList<CorrelationHandlerResult>(); DeploymentCache deploymentCache = commandContext.getProcessEngineConfiguration().getDeploymentCache(); List<EventSubscriptionEntity> messageEventSubscriptions = findMessageStartEventSubscriptions(commandContext, messageName, correlationSet); for (EventSubscriptionEntity messageEventSubscription : messageEventSubscriptions) { if (messageEventSubscription.getConfiguration() != null) { String processDefinitionId = messageEventSubscription.getConfiguration(); ProcessDefinitionEntity processDefinition = deploymentCache.findDeployedProcessDefinitionById(processDefinitionId); // only an active process definition will be returned if (processDefinition != null && !processDefinition.isSuspended()) { CorrelationHandlerResult result = CorrelationHandlerResult.matchedProcessDefinition(processDefinition, messageEventSubscription.getActivityId()); results.add(result); } else { LOG.couldNotFindProcessDefinitionForEventSubscription(messageEventSubscription, processDefinitionId); } } } return results; }
protected List<CorrelationHandlerResult> correlateStartMessageByEventSubscription(CommandContext commandContext, String messageName, CorrelationSet correlationSet) { List<CorrelationHandlerResult> results = new ArrayList<CorrelationHandlerResult>(); DeploymentCache deploymentCache = commandContext.getProcessEngineConfiguration().getDeploymentCache(); List<EventSubscriptionEntity> messageEventSubscriptions = findMessageStartEventSubscriptions(commandContext, messageName, correlationSet); for (EventSubscriptionEntity messageEventSubscription : messageEventSubscriptions) { if (messageEventSubscription.getConfiguration() != null) { String processDefinitionId = messageEventSubscription.getConfiguration(); ProcessDefinitionEntity processDefinition = deploymentCache.findDeployedProcessDefinitionById(processDefinitionId); // only an active process definition will be returned if (processDefinition != null && !processDefinition.isSuspended()) { CorrelationHandlerResult result = CorrelationHandlerResult.matchedProcessDefinition(processDefinition, messageEventSubscription.getActivityId()); results.add(result); } else { LOG.couldNotFindProcessDefinitionForEventSubscription(messageEventSubscription, processDefinitionId); } } } return results; }
protected MigratingProcessElementInstance createMigratingEventSubscriptionInstance(MigratingInstanceParseContext parseContext, EventSubscriptionEntity element) { ActivityImpl compensationHandler = parseContext.getSourceProcessDefinition().findActivity(element.getActivityId()); MigrationInstruction migrationInstruction = getMigrationInstruction(parseContext, compensationHandler); ActivityImpl targetScope = null; if (migrationInstruction != null) { ActivityImpl targetEventScope = (ActivityImpl) parseContext.getTargetActivity(migrationInstruction).getEventScope(); targetScope = targetEventScope.findCompensationHandler(); } MigratingCompensationEventSubscriptionInstance migratingCompensationInstance = parseContext.getMigratingProcessInstance().addCompensationSubscriptionInstance( migrationInstruction, element, compensationHandler, targetScope); parseContext.consume(element); return migratingCompensationInstance; }
protected MigratingProcessElementInstance createMigratingEventSubscriptionInstance(MigratingInstanceParseContext parseContext, EventSubscriptionEntity element) { ActivityImpl compensationHandler = parseContext.getSourceProcessDefinition().findActivity(element.getActivityId()); MigrationInstruction migrationInstruction = getMigrationInstruction(parseContext, compensationHandler); ActivityImpl targetScope = null; if (migrationInstruction != null) { ActivityImpl targetEventScope = (ActivityImpl) parseContext.getTargetActivity(migrationInstruction).getEventScope(); targetScope = targetEventScope.findCompensationHandler(); } MigratingCompensationEventSubscriptionInstance migratingCompensationInstance = parseContext.getMigratingProcessInstance().addCompensationSubscriptionInstance( migrationInstruction, element, compensationHandler, targetScope); parseContext.consume(element); return migratingCompensationInstance; }
protected void handleStartEvent(EventSubscriptionEntity eventSubscription, Map<String, Object> payload, String businessKey, CommandContext commandContext) { String processDefinitionId = eventSubscription.getConfiguration(); ensureNotNull("Configuration of signal start event subscription '" + eventSubscription.getId() + "' contains no process definition id.", processDefinitionId); DeploymentCache deploymentCache = Context.getProcessEngineConfiguration().getDeploymentCache(); ProcessDefinitionEntity processDefinition = deploymentCache.findDeployedProcessDefinitionById(processDefinitionId); if (processDefinition == null || processDefinition.isSuspended()) { // ignore event subscription LOG.debugIgnoringEventSubscription(eventSubscription, processDefinitionId); } else { ActivityImpl signalStartEvent = processDefinition.findActivity(eventSubscription.getActivityId()); PvmProcessInstance processInstance = processDefinition.createProcessInstance(businessKey, signalStartEvent); processInstance.start(payload); } }
protected void handleStartEvent(EventSubscriptionEntity eventSubscription, Map<String, Object> payload, String businessKey, CommandContext commandContext) { String processDefinitionId = eventSubscription.getConfiguration(); ensureNotNull("Configuration of signal start event subscription '" + eventSubscription.getId() + "' contains no process definition id.", processDefinitionId); DeploymentCache deploymentCache = Context.getProcessEngineConfiguration().getDeploymentCache(); ProcessDefinitionEntity processDefinition = deploymentCache.findDeployedProcessDefinitionById(processDefinitionId); if (processDefinition == null || processDefinition.isSuspended()) { // ignore event subscription LOG.debugIgnoringEventSubscription(eventSubscription, processDefinitionId); } else { ActivityImpl signalStartEvent = processDefinition.findActivity(eventSubscription.getActivityId()); PvmProcessInstance processInstance = processDefinition.createProcessInstance(businessKey, signalStartEvent); processInstance.start(payload); } }
@Override public void handle(MigratingInstanceParseContext parseContext, MigratingActivityInstance owningInstance, List<EventSubscriptionEntity> elements) { Map<String, EventSubscriptionDeclaration> targetDeclarations = getDeclarationsByTriggeringActivity(owningInstance.getTargetScope()); for (EventSubscriptionEntity eventSubscription : elements) { if (!getSupportedEventTypes().contains(eventSubscription.getEventType())) { // ignore unsupported event subscriptions continue; } MigrationInstruction migrationInstruction = parseContext.findSingleMigrationInstruction(eventSubscription.getActivityId()); ActivityImpl targetActivity = parseContext.getTargetActivity(migrationInstruction); if (targetActivity != null && owningInstance.migratesTo(targetActivity.getEventScope())) { // the event subscription is migrated EventSubscriptionDeclaration targetDeclaration = targetDeclarations.remove(targetActivity.getId()); owningInstance.addMigratingDependentInstance( new MigratingEventSubscriptionInstance(eventSubscription, targetActivity, migrationInstruction.isUpdateEventTrigger(), targetDeclaration)); } else { // the event subscription will be removed owningInstance.addRemovingDependentInstance(new MigratingEventSubscriptionInstance(eventSubscription)); } parseContext.consume(eventSubscription); } if (owningInstance.migrates()) { addEmergingEventSubscriptions(owningInstance, targetDeclarations); } }
@Override public void handle(MigratingInstanceParseContext parseContext, MigratingActivityInstance owningInstance, List<EventSubscriptionEntity> elements) { Map<String, EventSubscriptionDeclaration> targetDeclarations = getDeclarationsByTriggeringActivity(owningInstance.getTargetScope()); for (EventSubscriptionEntity eventSubscription : elements) { if (!getSupportedEventTypes().contains(eventSubscription.getEventType())) { // ignore unsupported event subscriptions continue; } MigrationInstruction migrationInstruction = parseContext.findSingleMigrationInstruction(eventSubscription.getActivityId()); ActivityImpl targetActivity = parseContext.getTargetActivity(migrationInstruction); if (targetActivity != null && owningInstance.migratesTo(targetActivity.getEventScope())) { // the event subscription is migrated EventSubscriptionDeclaration targetDeclaration = targetDeclarations.remove(targetActivity.getId()); owningInstance.addMigratingDependentInstance( new MigratingEventSubscriptionInstance(eventSubscription, targetActivity, migrationInstruction.isUpdateEventTrigger(), targetDeclaration)); } else { // the event subscription will be removed owningInstance.addRemovingDependentInstance(new MigratingEventSubscriptionInstance(eventSubscription)); } parseContext.consume(eventSubscription); } if (owningInstance.migrates()) { addEmergingEventSubscriptions(owningInstance, targetDeclarations); } }
protected MessageEntity newJobInstance(EventSubscriptionEntity eventSubscription) { MessageEntity message = new MessageEntity(); // initialize job message.setActivityId(eventSubscription.getActivityId()); message.setExecutionId(eventSubscription.getExecutionId()); message.setProcessInstanceId(eventSubscription.getProcessInstanceId()); ProcessDefinitionEntity processDefinition = eventSubscription.getProcessDefinition(); if (processDefinition != null) { message.setProcessDefinitionId(processDefinition.getId()); message.setProcessDefinitionKey(processDefinition.getKey()); } // TODO: support payload // if(payload != null) { // message.setEventPayload(payload); // } return message; }
protected MessageEntity newJobInstance(EventSubscriptionEntity eventSubscription) { MessageEntity message = new MessageEntity(); // initialize job message.setActivityId(eventSubscription.getActivityId()); message.setExecutionId(eventSubscription.getExecutionId()); message.setProcessInstanceId(eventSubscription.getProcessInstanceId()); ProcessDefinitionEntity processDefinition = eventSubscription.getProcessDefinition(); if (processDefinition != null) { message.setProcessDefinitionId(processDefinition.getId()); message.setProcessDefinitionKey(processDefinition.getKey()); } // TODO: support payload // if(payload != null) { // message.setEventPayload(payload); // } return message; }
protected MigratingProcessElementInstance createMigratingEventScopeInstance(MigratingInstanceParseContext parseContext, EventSubscriptionEntity element) { ActivityImpl compensatingActivity = parseContext.getSourceProcessDefinition().findActivity(element.getActivityId());
protected MigratingProcessElementInstance createMigratingEventScopeInstance(MigratingInstanceParseContext parseContext, EventSubscriptionEntity element) { ActivityImpl compensatingActivity = parseContext.getSourceProcessDefinition().findActivity(element.getActivityId());