protected void handleMessageEventDefinition(BpmnModel bpmnModel, Process process, Event event, EventDefinition eventDefinition, List<ValidationError> errors) { MessageEventDefinition messageEventDefinition = (MessageEventDefinition) eventDefinition; if (StringUtils.isEmpty(messageEventDefinition.getMessageRef())) { if (StringUtils.isEmpty(messageEventDefinition.getMessageExpression())) { // message ref should be filled in addError(errors, Problems.MESSAGE_EVENT_MISSING_MESSAGE_REF, process, event, "attribute 'messageRef' is required"); } } else if (!bpmnModel.containsMessageId(messageEventDefinition.getMessageRef())) { // message ref should exist addError(errors, Problems.MESSAGE_EVENT_INVALID_MESSAGE_REF, process, event, "Invalid 'messageRef': no message with that id can be found in the model"); } }
MessageEventDefinition messageEvent = (MessageEventDefinition) eventDefinition; if (StringUtils.isNotEmpty(messageEvent.getMessageRef())) { if (!model.containsMessageId(messageEvent.getMessageRef())) { Message message = new Message(messageEvent.getMessageRef(), messageEvent.getMessageRef(),
protected void executeParse(BpmnParse bpmnParse, MessageEventDefinition messageDefinition) { BpmnModel bpmnModel = bpmnParse.getBpmnModel(); String messageRef = messageDefinition.getMessageRef(); if (bpmnModel.containsMessageId(messageRef)) { Message message = bpmnModel.getMessage(messageRef); messageDefinition.setMessageRef(message.getName()); messageDefinition.setExtensionElements(message.getExtensionElements()); } if (bpmnParse.getCurrentFlowElement() instanceof IntermediateCatchEvent) { IntermediateCatchEvent intermediateCatchEvent = (IntermediateCatchEvent) bpmnParse.getCurrentFlowElement(); intermediateCatchEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createIntermediateCatchMessageEventActivityBehavior(intermediateCatchEvent, messageDefinition)); } else if (bpmnParse.getCurrentFlowElement() instanceof BoundaryEvent) { BoundaryEvent boundaryEvent = (BoundaryEvent) bpmnParse.getCurrentFlowElement(); boundaryEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createBoundaryMessageEventActivityBehavior(boundaryEvent, messageDefinition, boundaryEvent.isCancelActivity())); } else { // What to do here? } }
MessageEventDefinition messageEventDefinition = (MessageEventDefinition) eventDefinition; BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(processInstance.getProcessDefinitionId()); if (bpmnModel.containsMessageId(messageEventDefinition.getMessageRef())) { messageEventDefinition.setMessageRef(bpmnModel.getMessage(messageEventDefinition.getMessageRef()).getName());
protected void restoreMessageStartEvent(ProcessDefinition previousProcessDefinition, BpmnModel bpmnModel, StartEvent startEvent, EventDefinition eventDefinition) { MessageEventDefinition messageEventDefinition = (MessageEventDefinition) eventDefinition; if (bpmnModel.containsMessageId(messageEventDefinition.getMessageRef())) { Message message = bpmnModel.getMessage(messageEventDefinition.getMessageRef()); messageEventDefinition.setMessageRef(message.getName()); } MessageEventSubscriptionEntity newSubscription = getEventSubscriptionEntityManager().createMessageEventSubscription(); newSubscription.setEventName(messageEventDefinition.getMessageRef()); newSubscription.setActivityId(startEvent.getId()); newSubscription.setConfiguration(previousProcessDefinition.getId()); newSubscription.setProcessDefinitionId(previousProcessDefinition.getId()); if (previousProcessDefinition.getTenantId() != null) { newSubscription.setTenantId(previousProcessDefinition.getTenantId()); } getEventSubscriptionEntityManager().insert(newSubscription); }
@Override protected void executeParse(BpmnParse bpmnParse, StartEvent element) { if (element.getSubProcess() != null && element.getSubProcess() instanceof EventSubProcess) { if (CollectionUtil.isNotEmpty(element.getEventDefinitions())) { EventDefinition eventDefinition = element.getEventDefinitions().get(0); if (eventDefinition instanceof MessageEventDefinition) { MessageEventDefinition messageDefinition = (MessageEventDefinition) eventDefinition; BpmnModel bpmnModel = bpmnParse.getBpmnModel(); String messageRef = messageDefinition.getMessageRef(); if (bpmnModel.containsMessageId(messageRef)) { Message message = bpmnModel.getMessage(messageRef); messageDefinition.setMessageRef(message.getName()); messageDefinition.setExtensionElements(message.getExtensionElements()); } element.setBehavior(bpmnParse.getActivityBehaviorFactory().createEventSubProcessMessageStartEventActivityBehavior(element, messageDefinition)); } else if (eventDefinition instanceof ErrorEventDefinition) { element.setBehavior(bpmnParse.getActivityBehaviorFactory().createEventSubProcessErrorStartEventActivityBehavior(element)); } } } else if (CollectionUtil.isEmpty(element.getEventDefinitions())) { element.setBehavior(bpmnParse.getActivityBehaviorFactory().createNoneStartEventActivityBehavior(element)); } if (element.getSubProcess() == null && (CollectionUtil.isEmpty(element.getEventDefinitions()) || bpmnParse.getCurrentProcess().getInitialFlowElement() == null)) { bpmnParse.getCurrentProcess().setInitialFlowElement(element); } }
BpmnModel bpmnModel) { CommandContext commandContext = Context.getCommandContext(); if (bpmnModel.containsMessageId(messageEventDefinition.getMessageRef())) { Message message = bpmnModel.getMessage(messageEventDefinition.getMessageRef()); messageEventDefinition.setMessageRef(message.getName());
protected void handleMessageEventDefinition(BpmnModel bpmnModel, Process process, Event event, EventDefinition eventDefinition, List<ValidationError> errors) { MessageEventDefinition messageEventDefinition = (MessageEventDefinition) eventDefinition; if (StringUtils.isEmpty(messageEventDefinition.getMessageRef())) { if (StringUtils.isEmpty(messageEventDefinition.getMessageExpression())) { // message ref should be filled in addError(errors, Problems.MESSAGE_EVENT_MISSING_MESSAGE_REF, process, event, "attribute 'messageRef' is required"); } } else if (!bpmnModel.containsMessageId(messageEventDefinition.getMessageRef())) { // message ref should exist addError(errors, Problems.MESSAGE_EVENT_INVALID_MESSAGE_REF, process, event, "Invalid 'messageRef': no message with that id can be found in the model"); } }
public void parseChildElement(XMLStreamReader xtr, BaseElement parentElement, BpmnModel model) throws Exception { if (parentElement instanceof Event == false) return; MessageEventDefinition eventDefinition = new MessageEventDefinition(); BpmnXMLUtil.addXMLLocation(eventDefinition, xtr); eventDefinition.setMessageRef(xtr.getAttributeValue(null, ATTRIBUTE_MESSAGE_REF)); if(StringUtils.isEmpty(eventDefinition.getMessageRef())) { model.addProblem("attribute 'messageRef' is required", xtr); } else { int indexOfP = eventDefinition.getMessageRef().indexOf(':'); if (indexOfP != -1) { String prefix = eventDefinition.getMessageRef().substring(0, indexOfP); String resolvedNamespace = model.getNamespace(prefix); eventDefinition.setMessageRef(resolvedNamespace + ":" + eventDefinition.getMessageRef().substring(indexOfP + 1)); } else { eventDefinition.setMessageRef(model.getTargetNamespace() + ":" + eventDefinition.getMessageRef()); } if(model.containsMessageId(eventDefinition.getMessageRef()) == false) { model.addProblem("Invalid 'messageRef': no message with id '" + eventDefinition.getMessageRef() + "' found.", xtr); } } ((Event) parentElement).getEventDefinitions().add(eventDefinition); } }
MessageEventDefinition messageEvent = (MessageEventDefinition) eventDefinition; if (StringUtils.isNotEmpty(messageEvent.getMessageRef())) { if (model.containsMessageId(messageEvent.getMessageRef()) == false) { Message message = new Message(messageEvent.getMessageRef(), messageEvent.getMessageRef(), null); model.addMessage(message);
if (model.containsMessageId(messageEvent.getMessageRef()) == false) { Message message = new Message(messageEvent.getMessageRef(), messageEvent.getMessageRef(), null); model.addMessage(message);
protected void executeParse(BpmnParse bpmnParse, MessageEventDefinition messageDefinition) { BpmnModel bpmnModel = bpmnParse.getBpmnModel(); String messageRef = messageDefinition.getMessageRef(); if (bpmnModel.containsMessageId(messageRef)) { Message message = bpmnModel.getMessage(messageRef); messageDefinition.setMessageRef(message.getName()); messageDefinition.setExtensionElements(message.getExtensionElements()); } if (bpmnParse.getCurrentFlowElement() instanceof IntermediateCatchEvent) { IntermediateCatchEvent intermediateCatchEvent = (IntermediateCatchEvent) bpmnParse.getCurrentFlowElement(); intermediateCatchEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createIntermediateCatchMessageEventActivityBehavior(intermediateCatchEvent, messageDefinition)); } else if (bpmnParse.getCurrentFlowElement() instanceof BoundaryEvent) { BoundaryEvent boundaryEvent = (BoundaryEvent) bpmnParse.getCurrentFlowElement(); boundaryEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createBoundaryMessageEventActivityBehavior(boundaryEvent, messageDefinition, boundaryEvent.isCancelActivity())); } else { // What to do here? } }
protected void restoreMessageStartEvent(ProcessDefinition previousProcessDefinition, BpmnModel bpmnModel, StartEvent startEvent, EventDefinition eventDefinition) { MessageEventDefinition messageEventDefinition = (MessageEventDefinition) eventDefinition; if (bpmnModel.containsMessageId(messageEventDefinition.getMessageRef())) { Message message = bpmnModel.getMessage(messageEventDefinition.getMessageRef()); messageEventDefinition.setMessageRef(message.getName()); } MessageEventSubscriptionEntity newSubscription = getEventSubscriptionEntityManager().createMessageEventSubscription(); newSubscription.setEventName(messageEventDefinition.getMessageRef()); newSubscription.setActivityId(startEvent.getId()); newSubscription.setConfiguration(previousProcessDefinition.getId()); newSubscription.setProcessDefinitionId(previousProcessDefinition.getId()); if (previousProcessDefinition.getTenantId() != null) { newSubscription.setTenantId(previousProcessDefinition.getTenantId()); } getEventSubscriptionEntityManager().insert(newSubscription); }
MessageEventDefinition messageEventDefinition = (MessageEventDefinition) eventDefinition; BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(processInstance.getProcessDefinitionId()); if (bpmnModel.containsMessageId(messageEventDefinition.getMessageRef())) { messageEventDefinition.setMessageRef(bpmnModel.getMessage(messageEventDefinition.getMessageRef()).getName());
protected void insertMessageEvent(MessageEventDefinition messageEventDefinition, StartEvent startEvent, ProcessDefinitionEntity processDefinition, BpmnModel bpmnModel) { CommandContext commandContext = Context.getCommandContext(); if (bpmnModel.containsMessageId(messageEventDefinition.getMessageRef())) { Message message = bpmnModel.getMessage(messageEventDefinition.getMessageRef()); messageEventDefinition.setMessageRef(message.getName()); } // look for subscriptions for the same name in db: List<EventSubscriptionEntity> subscriptionsForSameMessageName = commandContext.getEventSubscriptionEntityManager() .findEventSubscriptionsByName(MessageEventHandler.EVENT_HANDLER_TYPE, messageEventDefinition.getMessageRef(), processDefinition.getTenantId()); for (EventSubscriptionEntity eventSubscriptionEntity : subscriptionsForSameMessageName) { // throw exception only if there's already a subscription as start event if (eventSubscriptionEntity.getProcessInstanceId() == null || eventSubscriptionEntity.getProcessInstanceId().isEmpty()) { // processInstanceId != null or not empty -> it's a message related to an execution // the event subscription has no instance-id, so it's a message start event throw new ActivitiException("Cannot deploy process definition '" + processDefinition.getResourceName() + "': there already is a message event subscription for the message with name '" + messageEventDefinition.getMessageRef() + "'."); } } MessageEventSubscriptionEntity newSubscription = commandContext.getEventSubscriptionEntityManager().createMessageEventSubscription(); newSubscription.setEventName(messageEventDefinition.getMessageRef()); newSubscription.setActivityId(startEvent.getId()); newSubscription.setConfiguration(processDefinition.getId()); newSubscription.setProcessDefinitionId(processDefinition.getId()); if (processDefinition.getTenantId() != null) { newSubscription.setTenantId(processDefinition.getTenantId()); } commandContext.getEventSubscriptionEntityManager().insert(newSubscription); }
@Override protected void executeParse(BpmnParse bpmnParse, StartEvent element) { if (element.getSubProcess() != null && element.getSubProcess() instanceof EventSubProcess) { if (CollectionUtil.isNotEmpty(element.getEventDefinitions())) { EventDefinition eventDefinition = element.getEventDefinitions().get(0); if (eventDefinition instanceof MessageEventDefinition) { MessageEventDefinition messageDefinition = (MessageEventDefinition) eventDefinition; BpmnModel bpmnModel = bpmnParse.getBpmnModel(); String messageRef = messageDefinition.getMessageRef(); if (bpmnModel.containsMessageId(messageRef)) { Message message = bpmnModel.getMessage(messageRef); messageDefinition.setMessageRef(message.getName()); messageDefinition.setExtensionElements(message.getExtensionElements()); } element.setBehavior(bpmnParse.getActivityBehaviorFactory().createEventSubProcessMessageStartEventActivityBehavior(element, messageDefinition)); } else if (eventDefinition instanceof ErrorEventDefinition) { element.setBehavior(bpmnParse.getActivityBehaviorFactory().createEventSubProcessErrorStartEventActivityBehavior(element)); } } } else if (CollectionUtil.isEmpty(element.getEventDefinitions())) { element.setBehavior(bpmnParse.getActivityBehaviorFactory().createNoneStartEventActivityBehavior(element)); } if (element.getSubProcess() == null && (CollectionUtil.isEmpty(element.getEventDefinitions()) || bpmnParse.getCurrentProcess().getInitialFlowElement() == null)) { bpmnParse.getCurrentProcess().setInitialFlowElement(element); } }
protected void executeParse(BpmnParse bpmnParse, MessageEventDefinition messageDefinition) { if (bpmnParse.getBpmnModel().containsMessageId(messageDefinition.getMessageRef())) { String messageName = bpmnParse.getBpmnModel().getMessage(messageDefinition.getMessageRef()).getName(); if (StringUtils.isEmpty(messageName)) {