payload, signalEventSubscriptionEntity.getExecutionId(), signalEventSubscriptionEntity.getProcessInstanceId(), signalEventSubscriptionEntity.getProcessDefinitionId()));
null, signalEventSubscriptionEntity.getExecutionId(), signalEventSubscriptionEntity.getProcessInstanceId(), signalEventSubscriptionEntity.getProcessDefinitionId()));
@SuppressWarnings("unchecked") public List<SignalEventSubscriptionEntity> findSignalEventSubscriptionsByProcessInstanceAndEventName(String processInstanceId, String eventName) { final String query = "selectSignalEventSubscriptionsByProcessInstanceAndEventName"; Map<String, String> params = new HashMap<>(); params.put("processInstanceId", processInstanceId); params.put("eventName", eventName); Set<SignalEventSubscriptionEntity> selectList = new HashSet<SignalEventSubscriptionEntity>(getDbSqlSession().selectList(query, params)); // add events created in this command (not visible yet in query) for (SignalEventSubscriptionEntity entity : createdSignalSubscriptions) { if (processInstanceId.equals(entity.getProcessInstanceId()) && eventName.equals(entity.getEventName())) { selectList.add(entity); } } return new ArrayList<>(selectList); }
public void execute(DelegateExecution execution) { CommandContext commandContext = Context.getCommandContext(); String eventSubscriptionName = null; if (signalEventName != null) { eventSubscriptionName = signalEventName; } else { Expression expressionObject = commandContext.getProcessEngineConfiguration().getExpressionManager().createExpression(signalExpression); eventSubscriptionName = expressionObject.getValue(execution).toString(); } EventSubscriptionEntityManager eventSubscriptionEntityManager = commandContext.getEventSubscriptionEntityManager(); List<SignalEventSubscriptionEntity> subscriptionEntities = null; if (processInstanceScope) { subscriptionEntities = eventSubscriptionEntityManager .findSignalEventSubscriptionsByProcessInstanceAndEventName(execution.getProcessInstanceId(), eventSubscriptionName); } else { subscriptionEntities = eventSubscriptionEntityManager .findSignalEventSubscriptionsByEventName(eventSubscriptionName, execution.getTenantId()); } for (SignalEventSubscriptionEntity signalEventSubscriptionEntity : subscriptionEntities) { Context.getProcessEngineConfiguration().getEventDispatcher().dispatchEvent( ActivitiEventBuilder.createSignalEvent(ActivitiEventType.ACTIVITY_SIGNALED, signalEventSubscriptionEntity.getActivityId(), eventSubscriptionName, null, signalEventSubscriptionEntity.getExecutionId(), signalEventSubscriptionEntity.getProcessInstanceId(), signalEventSubscriptionEntity.getProcessDefinitionId())); eventSubscriptionEntityManager.eventReceived(signalEventSubscriptionEntity, null, signalEventDefinition.isAsync()); } Context.getAgenda().planTakeOutgoingSequenceFlowsOperation((ExecutionEntity) execution, true); }
Context.getProcessEngineConfiguration().getEventDispatcher().dispatchEvent( ActivitiEventBuilder.createSignalEvent(ActivitiEventType.ACTIVITY_SIGNALED, signalEventSubscriptionEntity.getActivityId(), eventName, payload, signalEventSubscriptionEntity.getExecutionId(), signalEventSubscriptionEntity.getProcessInstanceId(), signalEventSubscriptionEntity.getProcessDefinitionId()));