JSONObject eventDefinitionJSON = new JSONObject(); if (eventDefinition.getActivityId() != null) eventDefinitionJSON.put("activityId", eventDefinition.getActivityId()); eventDefinitionJSON.put("eventName", eventDefinition.getEventName()); eventDefinitionJSON.put("eventType", eventDefinition.getEventType()); eventDefinitionJSON.put("isAsync", eventDefinition.isAsync()); eventDefinitionJSON.put("isStartEvent", eventDefinition.isStartEvent()); eventDefinitionsArray.add(eventDefinitionJSON);
@SuppressWarnings("unchecked") protected void addEventSubscriptionDeclaration(BpmnParse bpmnParse, EventSubscriptionDeclaration subscription, EventDefinition parsedEventDefinition, ScopeImpl scope) { List<EventSubscriptionDeclaration> eventDefinitions = (List<EventSubscriptionDeclaration>) scope.getProperty(PROPERTYNAME_EVENT_SUBSCRIPTION_DECLARATION); if (eventDefinitions == null) { eventDefinitions = new ArrayList<>(); scope.setProperty(PROPERTYNAME_EVENT_SUBSCRIPTION_DECLARATION, eventDefinitions); } else { // if this is a message event, validate that it is the only one with the provided name for this scope if (subscription.getEventType().equals("message")) { for (EventSubscriptionDeclaration eventDefinition : eventDefinitions) { if (eventDefinition.getEventType().equals("message") && eventDefinition.getEventName().equals(subscription.getEventName()) && eventDefinition.isStartEvent() == subscription.isStartEvent()) { LOGGER.warn("Cannot have more than one message event subscription with name '{}' for scope '{}'", subscription.getEventName(), scope.getId()); } } } } eventDefinitions.add(subscription); }
if(messageEventDefinitions != null) { for (EventSubscriptionDeclaration messageEventDefinition : messageEventDefinitions) { if(messageEventDefinition.isStartEvent()) { .findEventSubscriptionsByName(MessageEventHandler.EVENT_HANDLER_TYPE, messageEventDefinition.getEventName()); .findInCache(MessageEventSubscriptionEntity.class); for (MessageEventSubscriptionEntity cachedSubscription : cachedSubscriptions) { if(messageEventDefinition.getEventName().equals(cachedSubscription.getEventName()) && !subscriptionsForSameMessageName.contains(cachedSubscription)) { subscriptionsForSameMessageName.add(cachedSubscription); + "': there already is a message event subscription for the message with name '" + messageEventDefinition.getEventName() + "'."); newSubscription.setEventName(messageEventDefinition.getEventName()); newSubscription.setActivityId(messageEventDefinition.getActivityId()); newSubscription.setConfiguration(processDefinition.getId());
public void execute(ActivityExecution execution) throws Exception { CommandContext commandContext = Context.getCommandContext(); List<SignalEventSubscriptionEntity> subscriptionEntities = null; if (processInstanceScope) { subscriptionEntities = commandContext .getEventSubscriptionEntityManager() .findSignalEventSubscriptionsByProcessInstanceAndEventName(execution.getProcessInstanceId(), signalDefinition.getEventName()); } else { subscriptionEntities = commandContext .getEventSubscriptionEntityManager() .findSignalEventSubscriptionsByEventName(signalDefinition.getEventName()); } for (SignalEventSubscriptionEntity signalEventSubscriptionEntity : subscriptionEntities) { signalEventSubscriptionEntity.eventReceived(null, signalDefinition.isAsync()); } leave(execution); }
if (bpmnParse.getCurrentFlowElement() instanceof StartEvent) { EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(signalDefinition.getSignalRef(), "signal"); eventSubscriptionDeclaration.setActivityId(activity.getId()); eventSubscriptionDeclaration.setStartEvent(false); addEventSubscriptionDeclaration(bpmnParse, eventSubscriptionDeclaration, signalDefinition, bpmnParse.getCurrentScope()); EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(signalDefinition.getSignalRef(), "signal"); eventSubscriptionDeclaration.setConfiguration(signal.getScope()); eventSubscriptionDeclaration.setActivityId(activity.getId()); addEventSubscriptionDeclaration(bpmnParse, eventSubscriptionDeclaration, signalDefinition, activity.getParent()); } else { EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(signalDefinition.getSignalRef(), "signal"); eventSubscriptionDeclaration.setAsync(signalDefinition.isAsync()); EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(signalDefinition.getSignalRef(), "signal"); eventSubscriptionDeclaration.setActivityId(activity.getId()); eventSubscriptionDeclaration.setConfiguration(signal.getScope());
if(eventSubscriptionDeclarations != null) { for (EventSubscriptionDeclaration eventSubscriptionDeclaration : eventSubscriptionDeclarations) { if(!eventSubscriptionDeclaration.isStartEvent()) { EventSubscriptionEntity eventSubscriptionEntity = eventSubscriptionDeclaration.prepareEventSubscriptionEntity(this); eventSubscriptionEntity.insert();
EventSubscriptionDeclaration eventSubscription = new EventSubscriptionDeclaration(messageDefinition.getMessageRef(), "message"); EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(messageDefinition.getMessageRef(), "message"); eventSubscriptionDeclaration.setActivityId(activity.getId()); eventSubscriptionDeclaration.setStartEvent(false); addEventSubscriptionDeclaration(bpmnParse, eventSubscriptionDeclaration, messageDefinition, catchingScope); eventSubscription.setStartEvent(true); eventSubscription.setActivityId(activity.getId()); addEventSubscriptionDeclaration(bpmnParse, eventSubscription, messageDefinition, bpmnParse.getCurrentProcessDefinition()); eventSubscription.setActivityId(activity.getId()); addEventSubscriptionDeclaration(bpmnParse, eventSubscription, messageDefinition, activity.getParent()); } else { EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(messageDefinition.getMessageRef(), "message"); eventSubscriptionDeclaration.setActivityId(activity.getId()); addEventSubscriptionDeclaration(bpmnParse, eventSubscriptionDeclaration, messageDefinition, activity.getParent());
@SuppressWarnings("unchecked") protected void addEventSubscriptionDeclaration(BpmnParse bpmnParse, EventSubscriptionDeclaration subscription, EventDefinition parsedEventDefinition, ScopeImpl scope) { List<EventSubscriptionDeclaration> eventDefinitions = (List<EventSubscriptionDeclaration>) scope.getProperty(PROPERTYNAME_EVENT_SUBSCRIPTION_DECLARATION); if(eventDefinitions == null) { eventDefinitions = new ArrayList<EventSubscriptionDeclaration>(); scope.setProperty(PROPERTYNAME_EVENT_SUBSCRIPTION_DECLARATION, eventDefinitions); } else { // if this is a message event, validate that it is the only one with the provided name for this scope if(subscription.getEventType().equals("message")) { for (EventSubscriptionDeclaration eventDefinition : eventDefinitions) { if(eventDefinition.getEventType().equals("message") && eventDefinition.getEventName().equals(subscription.getEventName()) && eventDefinition.isStartEvent() == subscription.isStartEvent()) { bpmnParse.getBpmnModel().addProblem("Cannot have more than one message event subscription with name '" + subscription.getEventName() + "' for scope '"+scope.getId()+"'", parsedEventDefinition); } } } } eventDefinitions.add(subscription); }
subscriptionEntities = commandContext .getEventSubscriptionEntityManager() .findSignalEventSubscriptionsByProcessInstanceAndEventName(execution.getProcessInstanceId(), signalDefinition.getEventName()); } else { subscriptionEntities = commandContext .getEventSubscriptionEntityManager() .findSignalEventSubscriptionsByEventName(signalDefinition.getEventName(), execution.getTenantId()); ProcessDefinition processDefinition = ProcessDefinitionUtil.getProcessDefinition(signalEventSubscriptionEntity.getProcessDefinitionId()); if (Flowable5Util.isVersion5Tag(processDefinition.getEngineVersion())) { signalEventSubscriptionEntity.eventReceived(null, signalDefinition.isAsync()); EventSubscriptionEntityManager eventSubScriptionEntityManager = flowable6ProcessEngineConfigurationImpl.getEventSubscriptionEntityManager(); EventSubscriptionEntity flowable6EventSubscription = eventSubScriptionEntityManager.findById(signalEventSubscriptionEntity.getId()); eventSubScriptionEntityManager.eventReceived(flowable6EventSubscription, null, signalDefinition.isAsync());
EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(signalDefinition.getSignalRef(), "signal"); eventSubscriptionDeclaration.setActivityId(activity.getId()); eventSubscriptionDeclaration.setStartEvent(true); addEventSubscriptionDeclaration(bpmnParse, eventSubscriptionDeclaration, signalDefinition, bpmnParse.getCurrentScope()); EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(signalDefinition.getSignalRef(), "signal"); eventSubscriptionDeclaration.setConfiguration(signal.getScope()); eventSubscriptionDeclaration.setActivityId(activity.getId()); addEventSubscriptionDeclaration(bpmnParse, eventSubscriptionDeclaration, signalDefinition, activity.getParent()); } else { EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(signalDefinition.getSignalRef(), "signal"); eventSubscriptionDeclaration.setAsync(signalDefinition.isAsync()); EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(signalDefinition.getSignalRef(), "signal"); eventSubscriptionDeclaration.setActivityId(activity.getId()); eventSubscriptionDeclaration.setConfiguration(signal.getScope());
if (eventSubscriptionDeclarations != null) { for (EventSubscriptionDeclaration eventSubscriptionDeclaration : eventSubscriptionDeclarations) { if (!eventSubscriptionDeclaration.isStartEvent()) { EventSubscriptionEntity eventSubscriptionEntity = eventSubscriptionDeclaration.prepareEventSubscriptionEntity(this); if (getTenantId() != null) { eventSubscriptionEntity.setTenantId(getTenantId());
EventSubscriptionDeclaration eventSubscription = new EventSubscriptionDeclaration(messageDefinition.getMessageRef(), "message"); EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(messageDefinition.getMessageRef(), "message"); eventSubscriptionDeclaration.setActivityId(activity.getId()); eventSubscriptionDeclaration.setStartEvent(false); addEventSubscriptionDeclaration(bpmnParse, eventSubscriptionDeclaration, messageDefinition, catchingScope); eventSubscription.setStartEvent(true); eventSubscription.setActivityId(activity.getId()); addEventSubscriptionDeclaration(bpmnParse, eventSubscription, messageDefinition, bpmnParse.getCurrentProcessDefinition()); eventSubscription.setActivityId(activity.getId()); addEventSubscriptionDeclaration(bpmnParse, eventSubscription, messageDefinition, activity.getParent()); } else { EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(messageDefinition.getMessageRef(), "message"); eventSubscriptionDeclaration.setActivityId(activity.getId()); addEventSubscriptionDeclaration(bpmnParse, eventSubscriptionDeclaration, messageDefinition, activity.getParent());
@SuppressWarnings("unchecked") protected void addSignalEventSubscriptions(ProcessDefinitionEntity processDefinition) { List<EventSubscriptionDeclaration> eventDefinitions = (List<EventSubscriptionDeclaration>) processDefinition.getProperty(BpmnParse.PROPERTYNAME_EVENT_SUBSCRIPTION_DECLARATION); if (eventDefinitions != null) { for (EventSubscriptionDeclaration eventDefinition : eventDefinitions) { if (eventDefinition.getEventType().equals("signal") && eventDefinition.isStartEvent()) { SignalEventSubscriptionEntity subscriptionEntity = new SignalEventSubscriptionEntity(); subscriptionEntity.setEventName(eventDefinition.getEventName()); subscriptionEntity.setActivityId(eventDefinition.getActivityId()); subscriptionEntity.setProcessDefinitionId(processDefinition.getId()); if (processDefinition.getTenantId() != null) { subscriptionEntity.setTenantId(processDefinition.getTenantId()); } subscriptionEntity.insert(); } } } }
if (eventDefinition.getEventType().equals("message") && eventDefinition.isStartEvent()) { if (!messageNames.contains(eventDefinition.getEventName())) { messageNames.add(eventDefinition.getEventName()); } else { throw new ActivitiException("Cannot deploy process definition '" + processDefinition.getResourceName() + "': there multiple message event subscriptions for the message with name '" + eventDefinition.getEventName() + "'."); eventDefinition.getEventName(), processDefinition.getTenantId()); .findInCache(MessageEventSubscriptionEntity.class); for (MessageEventSubscriptionEntity cachedSubscription : cachedSubscriptions) { if (eventDefinition.getEventName().equals(cachedSubscription.getEventName()) && !subscriptionsForSameMessageName.contains(cachedSubscription)) { subscriptionsForSameMessageName.add(cachedSubscription); + "': there already is a message event subscription for the message with name '" + eventDefinition.getEventName() + "'."); newSubscription.setEventName(eventDefinition.getEventName()); newSubscription.setActivityId(eventDefinition.getActivityId()); newSubscription.setConfiguration(processDefinition.getId()); newSubscription.setProcessDefinitionId(processDefinition.getId());
ObjectNode eventDefinitionJSON = new ObjectMapper().createObjectNode(); if (eventDefinition.getActivityId() != null) eventDefinitionJSON.put("activityId",eventDefinition.getActivityId()); eventDefinitionJSON.put("eventName", eventDefinition.getEventName()); eventDefinitionJSON.put("eventType", eventDefinition.getEventType()); eventDefinitionJSON.put("isAsync", eventDefinition.isAsync()); eventDefinitionJSON.put("isStartEvent", eventDefinition.isStartEvent()); eventDefinitionsArray.add(eventDefinitionJSON);
ObjectNode eventDefinitionJSON = new ObjectMapper().createObjectNode(); if (eventDefinition.getActivityId() != null) eventDefinitionJSON.put("activityId",eventDefinition.getActivityId()); eventDefinitionJSON.put("eventName", eventDefinition.getEventName()); eventDefinitionJSON.put("eventType", eventDefinition.getEventType()); eventDefinitionJSON.put("isAsync", eventDefinition.isAsync()); eventDefinitionJSON.put("isStartEvent", eventDefinition.isStartEvent()); eventDefinitionsArray.add(eventDefinitionJSON);
JSONObject eventDefinitionJSON = new JSONObject(); if (eventDefinition.getActivityId() != null) eventDefinitionJSON.put("activityId", eventDefinition.getActivityId()); eventDefinitionJSON.put("eventName", eventDefinition.getEventName()); eventDefinitionJSON.put("eventType", eventDefinition.getEventType()); eventDefinitionJSON.put("isAsync", eventDefinition.isAsync()); eventDefinitionJSON.put("isStartEvent", eventDefinition.isStartEvent()); eventDefinitionsArray.add(eventDefinitionJSON);
if (signalEventDefinitions != null) { for (EventSubscriptionDeclaration eventDefinition : signalEventDefinitions) { if (eventDefinition.getEventType().equals("signal") && eventDefinition.isStartEvent()) { subscriptionEntity.setEventName(eventDefinition.getEventName()); subscriptionEntity.setActivityId(eventDefinition.getActivityId()); subscriptionEntity.setProcessDefinitionId(previousProcessDefinition.getId()); subscriptionEntity.setTenantId(previousProcessDefinition.getTenantId()); subscriptionEntity.insert(); } else if (eventDefinition.getEventType().equals("message") && eventDefinition.isStartEvent()) { MessageEventSubscriptionEntity newSubscription = new MessageEventSubscriptionEntity(); newSubscription.setEventName(eventDefinition.getEventName()); newSubscription.setActivityId(eventDefinition.getActivityId()); newSubscription.setConfiguration(previousProcessDefinition.getId()); newSubscription.setProcessDefinitionId(previousProcessDefinition.getId());