protected boolean matchesSubscription(EventSubscriptionEntity subscription, String type, String eventName) { EnsureUtil.ensureNotNull("event type", type); String subscriptionEventName = subscription.getEventName(); return type.equals(subscription.getEventType()) && ((eventName == null && subscriptionEventName == null) || (eventName != null && eventName.equals(subscriptionEventName))); }
protected boolean matchesSubscription(EventSubscriptionEntity subscription, String type, String eventName) { EnsureUtil.ensureNotNull("event type", type); String subscriptionEventName = subscription.getEventName(); return type.equals(subscription.getEventType()) && ((eventName == null && subscriptionEventName == null) || (eventName != null && eventName.equals(subscriptionEventName))); }
public void handleConditionalEventOnVariableChange(VariableEvent variableEvent) { List<EventSubscriptionEntity> subScriptions = getEventSubscriptions(); for (EventSubscriptionEntity subscription : subScriptions) { if (EventType.CONDITONAL.name().equals(subscription.getEventType())) { subscription.processEventSync(variableEvent); } } }
protected void removeEventSubscriptionsExceptCompensation() { // remove event subscriptions which are not compensate event subscriptions List<EventSubscriptionEntity> eventSubscriptions = getEventSubscriptions(); for (EventSubscriptionEntity eventSubscriptionEntity : eventSubscriptions) { if (!EventType.COMPENSATE.name().equals(eventSubscriptionEntity.getEventType())) { eventSubscriptionEntity.delete(); } } }
public void handleConditionalEventOnVariableChange(VariableEvent variableEvent) { List<EventSubscriptionEntity> subScriptions = getEventSubscriptions(); for (EventSubscriptionEntity subscription : subScriptions) { if (EventType.CONDITONAL.name().equals(subscription.getEventType())) { subscription.processEventSync(variableEvent); } } }
/** * Assumes that an activity has at most one declaration of a certain eventType. */ public static EventSubscriptionJobDeclaration findDeclarationForSubscription(EventSubscriptionEntity eventSubscription) { List<EventSubscriptionJobDeclaration> declarations = getDeclarationsForActivity(eventSubscription.getActivity()); for (EventSubscriptionJobDeclaration declaration : declarations) { if (declaration.getEventType().equals(eventSubscription.getEventType())) { return declaration; } } return null; }
protected void removeEventSubscriptionsExceptCompensation() { // remove event subscriptions which are not compensate event subscriptions List<EventSubscriptionEntity> eventSubscriptions = getEventSubscriptions(); for (EventSubscriptionEntity eventSubscriptionEntity : eventSubscriptions) { if (!EventType.COMPENSATE.name().equals(eventSubscriptionEntity.getEventType())) { eventSubscriptionEntity.delete(); } } }
/** * Assumes that an activity has at most one declaration of a certain eventType. */ public static EventSubscriptionJobDeclaration findDeclarationForSubscription(EventSubscriptionEntity eventSubscription) { List<EventSubscriptionJobDeclaration> declarations = getDeclarationsForActivity(eventSubscription.getActivity()); for (EventSubscriptionJobDeclaration declaration : declarations) { if (declaration.getEventType().equals(eventSubscription.getEventType())) { return declaration; } } return null; }
/** * 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()); }
/** * 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()); }
@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); } }
@Test @Deployment(resources = SINGLE_CONDITIONAL_START_EVENT_XML) public void testDeploymentCreatesSubscriptions() { // given a deployed process String processDefinitionId = repositoryService.createProcessDefinitionQuery().processDefinitionKey(CONDITIONAL_EVENT_PROCESS).singleResult().getId(); // when List<EventSubscription> eventSubscriptions = runtimeService.createEventSubscriptionQuery().list(); // then assertEquals(1, eventSubscriptions.size()); EventSubscriptionEntity conditionalEventSubscription = (EventSubscriptionEntity) eventSubscriptions.get(0); assertEquals(EventType.CONDITONAL.name(), conditionalEventSubscription.getEventType()); assertEquals(processDefinitionId, conditionalEventSubscription.getConfiguration()); assertNull(conditionalEventSubscription.getEventName()); assertNull(conditionalEventSubscription.getExecutionId()); assertNull(conditionalEventSubscription.getProcessInstanceId()); }
protected boolean matchesSubscription(EventSubscriptionEntity subscription, String type, String eventName) { EnsureUtil.ensureNotNull("event type", type); String subscriptionEventName = subscription.getEventName(); return type.equals(subscription.getEventType()) && ((eventName == null && subscriptionEventName == null) || (eventName != null && eventName.equals(subscriptionEventName))); }
protected void removeEventSubscriptionsExceptCompensation() { // remove event subscriptions which are not compensate event subscriptions List<EventSubscriptionEntity> eventSubscriptions = getEventSubscriptions(); for (EventSubscriptionEntity eventSubscriptionEntity : eventSubscriptions) { if (!EventType.COMPENSATE.name().equals(eventSubscriptionEntity.getEventType())) { eventSubscriptionEntity.delete(); } } }
/** * Assumes that an activity has at most one declaration of a certain eventType. */ public static EventSubscriptionJobDeclaration findDeclarationForSubscription(EventSubscriptionEntity eventSubscription) { List<EventSubscriptionJobDeclaration> declarations = getDeclarationsForActivity(eventSubscription.getActivity()); for (EventSubscriptionJobDeclaration declaration : declarations) { if (declaration.getEventType().equals(eventSubscription.getEventType())) { return declaration; } } return null; }
public void handleConditionalEventOnVariableChange(VariableEvent variableEvent) { List<EventSubscriptionEntity> subScriptions = getEventSubscriptions(); for (EventSubscriptionEntity subscription : subScriptions) { if (EventType.CONDITONAL.name().equals(subscription.getEventType())) { subscription.processEventSync(variableEvent); } } }
@Statement public List<EventSubscriptionEntity> selectEventSubscriptionsByNameAndExecution(OPersistenceSession session, final ListQueryParameterObject parameter) { Map<String, String> map=((Map<String, String>)parameter.getParameter()); List<EventSubscriptionEntity> result=new ArrayList<EventSubscriptionEntity>(); ExecutionEntity entity = HandlersManager.get().getHandler(ExecutionEntity.class).read(map.get("executionId"), session); if(entity==null){ return result; } for(EventSubscriptionEntity eventSubscriptionEntity:entity.getEventSubscriptions()){ if((!map.containsKey("eventType") || Objects.equals(eventSubscriptionEntity.getEventType(), map.get("eventType"))) && (!map.containsKey("eventName") || Objects.equals(eventSubscriptionEntity.getEventName(), map.get("eventName")))) { result.add(eventSubscriptionEntity); } } return result; }
/** * 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()); }
@Test @Deployment(resources = SINGLE_CONDITIONAL_START_EVENT_XML) public void testDeploymentCreatesSubscriptions() { // given a deployed process String processDefinitionId = repositoryService.createProcessDefinitionQuery().processDefinitionKey(CONDITIONAL_EVENT_PROCESS).singleResult().getId(); // when List<EventSubscription> eventSubscriptions = runtimeService.createEventSubscriptionQuery().list(); // then assertEquals(1, eventSubscriptions.size()); EventSubscriptionEntity conditionalEventSubscription = (EventSubscriptionEntity) eventSubscriptions.get(0); assertEquals(EventType.CONDITONAL.name(), conditionalEventSubscription.getEventType()); assertEquals(processDefinitionId, conditionalEventSubscription.getConfiguration()); assertNull(conditionalEventSubscription.getEventName()); assertNull(conditionalEventSubscription.getExecutionId()); assertNull(conditionalEventSubscription.getProcessInstanceId()); }