public void setValues(MessageEventDefinition otherDefinition) { super.setValues(otherDefinition); setMessageRef(otherDefinition.getMessageRef()); setMessageExpression(otherDefinition.getMessageExpression()); } }
return; MessageEventDefinition eventDefinition = new MessageEventDefinition(); BpmnXMLUtil.addXMLLocation(eventDefinition, xtr); eventDefinition.setMessageRef(xtr.getAttributeValue(null, ATTRIBUTE_MESSAGE_REF)); eventDefinition.setMessageExpression(BpmnXMLUtil.getAttributeValue(ATTRIBUTE_MESSAGE_EXPRESSION, xtr)); if (!StringUtils.isEmpty(eventDefinition.getMessageRef())) { int indexOfP = eventDefinition.getMessageRef().indexOf(':'); if (indexOfP != -1) { String prefix = eventDefinition.getMessageRef().substring(0, indexOfP); String resolvedNamespace = model.getNamespace(prefix); String messageRef = eventDefinition.getMessageRef().substring(indexOfP + 1); eventDefinition.setMessageRef(messageRef); } else { eventDefinition.setMessageRef(eventDefinition.getMessageRef());
protected MessageEventDefinition fillMessageRef(BpmnParse bpmnParse, EventDefinition eventDefinition) { 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()); } return messageDefinition; }
@Override public MessageEventDefinition clone() { MessageEventDefinition clone = new MessageEventDefinition(); clone.setValues(this); return clone; }
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"); } }
protected void writeMessageDefinition(Event parentEvent, MessageEventDefinition messageDefinition, BpmnModel model, XMLStreamWriter xtw) throws Exception { xtw.writeStartElement(ELEMENT_EVENT_MESSAGEDEFINITION); String messageRef = messageDefinition.getMessageRef(); if (StringUtils.isNotEmpty(messageRef)) { // remove the namespace from the message id if set if (messageRef.startsWith(model.getTargetNamespace())) { messageRef = messageRef.replace(model.getTargetNamespace(), ""); messageRef = messageRef.replaceFirst(":", ""); } else { for (String prefix : model.getNamespaces().keySet()) { String namespace = model.getNamespace(prefix); if (messageRef.startsWith(namespace)) { messageRef = messageRef.replace(model.getTargetNamespace(), ""); messageRef = prefix + messageRef; } } } } writeDefaultAttribute(ATTRIBUTE_MESSAGE_REF, messageRef, xtw); boolean didWriteExtensionStartElement = BpmnXMLUtil.writeExtensionElements(messageDefinition, false, xtw); if (didWriteExtensionStartElement) { xtw.writeEndElement(); } xtw.writeEndElement(); }
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, MessageEventDefinition messageDefinition) { BpmnModel bpmnModel = bpmnParse.getBpmnModel(); String messageRef = messageDefinition.getMessageRef(); if (bpmnModel.containsMessageId(messageRef)) { Message message = bpmnModel.getMessage(messageRef); messageDefinition.setMessageRef(message.getName()); for(List<ExtensionElement> extensionElementList : message.getExtensionElements().values()) { for(ExtensionElement extensionElement : extensionElementList) { messageDefinition.addExtensionElement(extensionElement); } } } 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 convertJsonToMessageDefinition(JsonNode objectNode, Event event) { String messageRef = getPropertyValueAsString(PROPERTY_MESSAGEREF, objectNode); MessageEventDefinition eventDefinition = new MessageEventDefinition(); eventDefinition.setMessageRef(messageRef); event.getEventDefinitions().add(eventDefinition); }
protected ExecutionEntity deleteMessageEventSubScription(DelegateExecution execution) { ExecutionEntity executionEntity = (ExecutionEntity) execution; EventSubscriptionEntityManager eventSubscriptionEntityManager = CommandContextUtil.getEventSubscriptionEntityManager(); List<EventSubscriptionEntity> eventSubscriptions = executionEntity.getEventSubscriptions(); for (EventSubscriptionEntity eventSubscription : eventSubscriptions) { if (eventSubscription instanceof MessageEventSubscriptionEntity && eventSubscription.getEventName().equals(messageEventDefinition.getMessageRef())) { eventSubscriptionEntityManager.delete(eventSubscription); } } return executionEntity; } }
MessageEventDefinition messageEventDefinition = (MessageEventDefinition) eventDefinition; BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(eventSubProcessExecution.getProcessDefinitionId()); if (bpmnModel.containsMessageId(messageEventDefinition.getMessageRef())) { messageEventDefinition.setMessageRef(bpmnModel.getMessage(messageEventDefinition.getMessageRef()).getName()); messageExecution.setEventScope(true); messageExecution.setActive(false); MessageEventSubscriptionEntity messageSubscription = CommandContextUtil.getEventSubscriptionEntityManager(commandContext).insertMessageEvent(messageEventDefinition.getMessageRef(), messageExecution); CommandContextUtil.getProcessEngineConfiguration(commandContext).getEventDispatcher() .dispatchEvent(FlowableEventBuilder.createMessageEvent(FlowableEngineEventType.ACTIVITY_MESSAGE_WAITING, messageSubscription.getActivityId(),
@Override public void execute(DelegateExecution execution) { CommandContext commandContext = Context.getCommandContext(); ExecutionEntity executionEntity = (ExecutionEntity) execution; String messageName = null; if (StringUtils.isNotEmpty(messageEventDefinition.getMessageRef())) { messageName = messageEventDefinition.getMessageRef(); } else { Expression messageExpression = CommandContextUtil.getProcessEngineConfiguration(commandContext).getExpressionManager() .createExpression(messageEventDefinition.getMessageExpression()); messageName = messageExpression.getValue(execution).toString(); } CommandContextUtil.getEventSubscriptionEntityManager(commandContext).insertMessageEvent(messageName, executionEntity); if (CommandContextUtil.getProcessEngineConfiguration(commandContext).getEventDispatcher().isEnabled()) { CommandContextUtil.getProcessEngineConfiguration(commandContext).getEventDispatcher() .dispatchEvent(FlowableEventBuilder.createMessageEvent(FlowableEngineEventType.ACTIVITY_MESSAGE_WAITING, executionEntity.getActivityId(), messageName, null, executionEntity.getId(), executionEntity.getProcessInstanceId(), executionEntity.getProcessDefinitionId())); } }
@Override public MessageEventDefinition clone() { MessageEventDefinition clone = new MessageEventDefinition(); clone.setValues(this); return clone; }
MessageEventDefinition messageDef = (MessageEventDefinition) eventDef; eventNode.put("type", "message"); if (StringUtils.isNotEmpty(messageDef.getMessageRef())) { eventNode.put("messageRef", messageDef.getMessageRef());
public void setValues(MessageEventDefinition otherDefinition) { super.setValues(otherDefinition); setMessageRef(otherDefinition.getMessageRef()); setMessageExpression(otherDefinition.getMessageExpression()); } }
MessageEventDefinition messageEventDefinition = (MessageEventDefinition) eventDefinition; BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(parentExecution.getProcessDefinitionId()); if (bpmnModel.containsMessageId(messageEventDefinition.getMessageRef())) { messageEventDefinition.setMessageRef(bpmnModel.getMessage(messageEventDefinition.getMessageRef()).getName()); messageExecution.setActive(false); messageEventSubscriptions.add(CommandContextUtil.getEventSubscriptionEntityManager(commandContext).insertMessageEvent(messageEventDefinition.getMessageRef(), messageExecution));
String messageRef = messageDefinition.getMessageRef(); if (bpmnModel.containsMessageId(messageRef)) { Message message = bpmnModel.getMessage(messageRef); messageDefinition.setMessageRef(message.getName()); messageDefinition.setExtensionElements(message.getExtensionElements()); EventSubscriptionDeclaration eventSubscription = new EventSubscriptionDeclaration(messageDefinition.getMessageRef(), "message"); EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(messageDefinition.getMessageRef(), "message"); eventSubscriptionDeclaration.setActivityId(activity.getId()); eventSubscriptionDeclaration.setStartEvent(false); EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(messageDefinition.getMessageRef(), "message"); eventSubscriptionDeclaration.setActivityId(activity.getId()); addEventSubscriptionDeclaration(bpmnParse, eventSubscriptionDeclaration, messageDefinition, activity.getParent());
@Override public void execute(DelegateExecution execution) { CommandContext commandContext = Context.getCommandContext(); ExecutionEntity executionEntity = (ExecutionEntity) execution; String messageName = null; if (StringUtils.isNotEmpty(messageEventDefinition.getMessageRef())) { messageName = messageEventDefinition.getMessageRef(); } else { Expression messageExpression = CommandContextUtil.getProcessEngineConfiguration(commandContext).getExpressionManager() .createExpression(messageEventDefinition.getMessageExpression()); messageName = messageExpression.getValue(execution).toString(); } CommandContextUtil.getEventSubscriptionEntityManager(commandContext).insertMessageEvent(messageName, executionEntity); if (CommandContextUtil.getProcessEngineConfiguration(commandContext).getEventDispatcher().isEnabled()) { CommandContextUtil.getProcessEngineConfiguration(commandContext).getEventDispatcher() .dispatchEvent(FlowableEventBuilder.createMessageEvent(FlowableEngineEventType.ACTIVITY_MESSAGE_WAITING, executionEntity.getActivityId(), messageName, null, executionEntity.getId(), executionEntity.getProcessInstanceId(), executionEntity.getProcessDefinitionId())); } }
MessageEventDefinition messageDef = (MessageEventDefinition) eventDef; eventNode.put("type", "message"); if (StringUtils.isNotEmpty(messageDef.getMessageRef())) { eventNode.put("messageRef", messageDef.getMessageRef());
if (StringUtils.isNotEmpty(messageDefinition.getMessageRef())) { propertiesNode.put(PROPERTY_MESSAGEREF, messageDefinition.getMessageRef());