if (signalEventSubscriptionEntity.isGlobalScoped()) { ActivitiEventBuilder.createSignalEvent(ActivitiEventType.ACTIVITY_SIGNALED, signalEventSubscriptionEntity.getActivityId(), eventName, payload, signalEventSubscriptionEntity.getExecutionId(), signalEventSubscriptionEntity.getProcessInstanceId(), signalEventSubscriptionEntity.getProcessDefinitionId()));
protected void restoreSignalStartEvent(ProcessDefinition previousProcessDefinition, BpmnModel bpmnModel, StartEvent startEvent, EventDefinition eventDefinition) { SignalEventDefinition signalEventDefinition = (SignalEventDefinition) eventDefinition; SignalEventSubscriptionEntity subscriptionEntity = getEventSubscriptionEntityManager().createSignalEventSubscription(); Signal signal = bpmnModel.getSignal(signalEventDefinition.getSignalRef()); if (signal != null) { subscriptionEntity.setEventName(signal.getName()); } else { subscriptionEntity.setEventName(signalEventDefinition.getSignalRef()); } subscriptionEntity.setActivityId(startEvent.getId()); subscriptionEntity.setProcessDefinitionId(previousProcessDefinition.getId()); if (previousProcessDefinition.getTenantId() != null) { subscriptionEntity.setTenantId(previousProcessDefinition.getTenantId()); } getEventSubscriptionEntityManager().insert(subscriptionEntity); }
@Override public SignalEventSubscriptionEntity insertSignalEvent(String signalName, Signal signal, ExecutionEntity execution) { SignalEventSubscriptionEntity subscriptionEntity = createSignalEventSubscription(); subscriptionEntity.setExecution(execution); if (signal != null) { subscriptionEntity.setEventName(signal.getName()); if (signal.getScope() != null) { subscriptionEntity.setConfiguration(signal.getScope()); } } else { subscriptionEntity.setEventName(signalName); } subscriptionEntity.setActivityId(execution.getCurrentActivityId()); subscriptionEntity.setProcessDefinitionId(execution.getProcessDefinitionId()); if (execution.getTenantId() != null) { subscriptionEntity.setTenantId(execution.getTenantId()); } insert(subscriptionEntity); execution.getEventSubscriptions().add(subscriptionEntity); return subscriptionEntity; }
@Override public Void execute(CommandContext commandContext) { org.activiti.engine.impl.persistence.entity.SignalEventSubscriptionEntity activiti5SignalEvent = new org.activiti.engine.impl.persistence.entity.SignalEventSubscriptionEntity(); activiti5SignalEvent.setId(signalEventSubscriptionEntity.getId()); activiti5SignalEvent.setExecutionId(signalEventSubscriptionEntity.getExecutionId()); activiti5SignalEvent.setActivityId(signalEventSubscriptionEntity.getActivityId()); activiti5SignalEvent.setEventName(signalEventSubscriptionEntity.getEventName()); activiti5SignalEvent.setEventType(signalEventSubscriptionEntity.getEventType()); activiti5SignalEvent.setConfiguration(signalEventSubscriptionEntity.getConfiguration()); activiti5SignalEvent.setProcessDefinitionId(signalEventSubscriptionEntity.getProcessDefinitionId()); activiti5SignalEvent.setProcessInstanceId(signalEventSubscriptionEntity.getProcessInstanceId()); activiti5SignalEvent.setTenantId(signalEventSubscriptionEntity.getTenantId()); activiti5SignalEvent.setRevision(signalEventSubscriptionEntity.getRevision()); activiti5SignalEvent.eventReceived(payload, async); return null; } });
@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 (signalEventSubscriptionEntity.isGlobalScoped()) { signalEventSubscriptionEntity.eventReceived(payload, false);
@SuppressWarnings("unchecked") public List<SignalEventSubscriptionEntity> findSignalEventSubscriptionsByNameAndExecution(String name, String executionId) { final String query = "selectSignalEventSubscriptionsByNameAndExecution"; Map<String,String> params = new HashMap<String, String>(); params.put("executionId", executionId); params.put("eventName", name); 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(executionId.equals(entity.getExecutionId()) && name.equals(entity.getEventName())) { selectList.add((SignalEventSubscriptionEntity) entity); } } return new ArrayList<SignalEventSubscriptionEntity>(selectList); }
ProcessDefinition processDefinition = ProcessDefinitionUtil.getProcessDefinition(signalEventSubscriptionEntity.getProcessDefinitionId()); if (Flowable5Util.isVersion5Tag(processDefinition.getEngineVersion())) { signalEventSubscriptionEntity.eventReceived(null, signalDefinition.isAsync()); EventSubscriptionEntity flowable6EventSubscription = eventSubScriptionEntityManager.findById(signalEventSubscriptionEntity.getId()); eventSubScriptionEntityManager.eventReceived(flowable6EventSubscription, null, signalDefinition.isAsync());
@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); }
@SuppressWarnings("unchecked") public List<SignalEventSubscriptionEntity> findSignalEventSubscriptionsByExecution(String executionId) { final String query = "selectSignalEventSubscriptionsByExecution"; Set<SignalEventSubscriptionEntity> selectList = new HashSet<SignalEventSubscriptionEntity>( getDbSqlSession().selectList(query, executionId)); // add events created in this command (not visible yet in query) for (SignalEventSubscriptionEntity entity : createdSignalSubscriptions) { if(executionId.equals(entity.getExecutionId())) { selectList.add((SignalEventSubscriptionEntity) entity); } } return new ArrayList<SignalEventSubscriptionEntity>(selectList); }
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); }
public EventSubscriptionEntity prepareEventSubscriptionEntity(ExecutionEntity execution) { EventSubscriptionEntity eventSubscriptionEntity = null; if (eventType.equals("message")) { eventSubscriptionEntity = new MessageEventSubscriptionEntity(execution); } else if (eventType.equals("signal")) { eventSubscriptionEntity = new SignalEventSubscriptionEntity(execution); } else { throw new ActivitiIllegalArgumentException("Found event definition of unknown type: " + eventType); } eventSubscriptionEntity.setEventName(eventName); if (activityId != null) { ActivityImpl activity = execution.getProcessDefinition().findActivity(activityId); eventSubscriptionEntity.setActivity(activity); } if (configuration != null) { eventSubscriptionEntity.setConfiguration(configuration); } return eventSubscriptionEntity; }
public boolean isProcessInstanceScoped() { String scope = extractScopeFormConfiguration(); return (scope != null) && (Signal.SCOPE_PROCESS_INSTANCE.equals(scope)); }
@SuppressWarnings("unchecked") public List<SignalEventSubscriptionEntity> findSignalEventSubscriptionsByEventName(String eventName) { final String query = "selectSignalEventSubscriptionsByEventName"; Set<SignalEventSubscriptionEntity> selectList = new HashSet<SignalEventSubscriptionEntity>( getDbSqlSession().selectList(query, eventName)); // add events created in this command (not visible yet in query) for (SignalEventSubscriptionEntity entity : createdSignalSubscriptions) { if(eventName.equals(entity.getEventName())) { selectList.add(entity); } } return new ArrayList<SignalEventSubscriptionEntity>(selectList); }
if (eventDefinition.getEventType().equals("signal") && eventDefinition.isStartEvent()) { SignalEventSubscriptionEntity subscriptionEntity = new SignalEventSubscriptionEntity(); subscriptionEntity.setEventName(eventDefinition.getEventName()); subscriptionEntity.setActivityId(eventDefinition.getActivityId()); subscriptionEntity.setProcessDefinitionId(previousProcessDefinition.getId()); subscriptionEntity.setTenantId(previousProcessDefinition.getTenantId()); subscriptionEntity.insert();
@Override public SignalEventSubscriptionEntity insertSignalEvent(String signalName, Signal signal, ExecutionEntity execution) { SignalEventSubscriptionEntity subscriptionEntity = createSignalEventSubscription(); subscriptionEntity.setExecution(execution); if (signal != null) { subscriptionEntity.setEventName(signal.getName()); if (signal.getScope() != null) { subscriptionEntity.setConfiguration(signal.getScope()); } } else { subscriptionEntity.setEventName(signalName); } subscriptionEntity.setActivityId(execution.getCurrentActivityId()); subscriptionEntity.setProcessDefinitionId(execution.getProcessDefinitionId()); if (execution.getTenantId() != null) { subscriptionEntity.setTenantId(execution.getTenantId()); } insert(subscriptionEntity); execution.getEventSubscriptions().add(subscriptionEntity); return subscriptionEntity; }
@Override public Void execute(CommandContext commandContext) { List<SignalEventSubscriptionEntity> signalEvents = null; if (executionId == null) { signalEvents = commandContext.getEventSubscriptionEntityManager().findSignalEventSubscriptionsByEventName(eventName, tenantId); } else { ExecutionEntity execution = commandContext.getExecutionEntityManager().findExecutionById(executionId); if (execution == null) { throw new ActivitiObjectNotFoundException("Cannot find execution with id '" + executionId + "'", Execution.class); } if (execution.isSuspended()) { throw new ActivitiException("Cannot throw signal event '" + eventName + "' because execution '" + executionId + "' is suspended"); } signalEvents = commandContext.getEventSubscriptionEntityManager().findSignalEventSubscriptionsByNameAndExecution(eventName, executionId); if (signalEvents.isEmpty()) { throw new ActivitiException("Execution '" + executionId + "' has not subscribed to a signal event with name '" + eventName + "'."); } } for (SignalEventSubscriptionEntity signalEventSubscriptionEntity : signalEvents) { // We only throw the event to globally scoped signals. // Process instance scoped signals must be thrown within the process itself if (signalEventSubscriptionEntity.isGlobalScoped()) { signalEventSubscriptionEntity.eventReceived(payload, async); } } return null; }
@SuppressWarnings("unchecked") public List<SignalEventSubscriptionEntity> findSignalEventSubscriptionsByNameAndExecution(String name, String executionId) { final String query = "selectSignalEventSubscriptionsByNameAndExecution"; Map<String, String> params = new HashMap<>(); params.put("executionId", executionId); params.put("eventName", name); 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 (executionId.equals(entity.getExecutionId()) && name.equals(entity.getEventName())) { selectList.add(entity); } } return new ArrayList<>(selectList); }
@SuppressWarnings("unchecked") public List<SignalEventSubscriptionEntity> findSignalEventSubscriptionsByExecution(String executionId) { final String query = "selectSignalEventSubscriptionsByExecution"; Set<SignalEventSubscriptionEntity> selectList = new HashSet<SignalEventSubscriptionEntity>(getDbSqlSession().selectList(query, executionId)); // add events created in this command (not visible yet in query) for (SignalEventSubscriptionEntity entity : createdSignalSubscriptions) { if (executionId.equals(entity.getExecutionId())) { selectList.add(entity); } } return new ArrayList<>(selectList); }
@Override public void onEvent(FlowableEvent event) { if (isValidEvent(event) && event instanceof FlowableEngineEvent) { FlowableEngineEvent engineEvent = (FlowableEngineEvent) event; if (engineEvent.getProcessInstanceId() == null && processInstanceScope) { throw new ActivitiIllegalArgumentException( "Cannot throw process-instance scoped signal, since the dispatched event is not part of an ongoing process instance"); } CommandContext commandContext = Context.getCommandContext(); List<SignalEventSubscriptionEntity> subscriptionEntities = null; if (processInstanceScope) { subscriptionEntities = commandContext.getEventSubscriptionEntityManager() .findSignalEventSubscriptionsByProcessInstanceAndEventName(engineEvent.getProcessInstanceId(), signalName); } else { String tenantId = null; if (engineEvent.getProcessDefinitionId() != null) { ProcessDefinition processDefinition = commandContext.getProcessEngineConfiguration() .getDeploymentManager().findDeployedProcessDefinitionById(engineEvent.getProcessDefinitionId()); tenantId = processDefinition.getTenantId(); } subscriptionEntities = commandContext.getEventSubscriptionEntityManager() .findSignalEventSubscriptionsByEventName(signalName, tenantId); } for (SignalEventSubscriptionEntity signalEventSubscriptionEntity : subscriptionEntities) { signalEventSubscriptionEntity.eventReceived(null, false); } } }