protected internal override void WriteAdditionalAttributes(BaseElement element, BpmnModel model, XMLStreamWriter xtw) { DataStoreReference dataStoreRef = (DataStoreReference)element; if (!string.IsNullOrWhiteSpace(dataStoreRef.DataStoreRef)) { xtw.WriteAttribute(BpmnXMLConstants.ATTRIBUTE_DATA_STORE_REF, dataStoreRef.DataStoreRef); } if (!string.IsNullOrWhiteSpace(dataStoreRef.ItemSubjectRef)) { xtw.WriteAttribute(BpmnXMLConstants.ATTRIBUTE_ITEM_SUBJECT_REF, dataStoreRef.ItemSubjectRef); } }
protected internal override void WriteAdditionalAttributes(BaseElement element, BpmnModel model, XMLStreamWriter xtw) { CallActivity callActivity = (CallActivity)element; if (!string.IsNullOrWhiteSpace(callActivity.CalledElement)) { xtw.WriteAttribute(BpmnXMLConstants.ATTRIBUTE_CALL_ACTIVITY_CALLEDELEMENT, callActivity.CalledElement); } if (!string.IsNullOrWhiteSpace(callActivity.BusinessKey)) { WriteQualifiedAttribute(BpmnXMLConstants.ATTRIBUTE_CALL_ACTIVITY_BUSINESS_KEY, callActivity.BusinessKey, xtw); } if (callActivity.InheritBusinessKey) { WriteQualifiedAttribute(BpmnXMLConstants.ATTRIBUTE_CALL_ACTIVITY_INHERIT_BUSINESS_KEY, "true", xtw); } xtw.WriteAttribute(BpmnXMLConstants.ACTIVITI_EXTENSIONS_NAMESPACE, BpmnXMLConstants.ATTRIBUTE_CALL_ACTIVITY_INHERITVARIABLES, callActivity.InheritVariables.ToString()); }
protected internal override void WriteAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) { SequenceFlow sequenceFlow = (SequenceFlow)element; if (!string.IsNullOrWhiteSpace(sequenceFlow.ConditionExpression)) { xtw.WriteStartElement(BpmnXMLConstants.BPMN_PREFIX, BpmnXMLConstants.ELEMENT_FLOW_CONDITION, BpmnXMLConstants.BPMN2_NAMESPACE); xtw.WriteAttribute(BpmnXMLConstants.XSI_PREFIX, BpmnXMLConstants.XSI_NAMESPACE, "type", "bpmn2:tFormalExpression"); xtw.WriteCharacters(sequenceFlow.ConditionExpression); xtw.WriteEndElement(); } }
protected internal virtual void WriteTimerDefinition(Event parentEvent, TimerEventDefinition timerDefinition, XMLStreamWriter xtw) { xtw.WriteStartElement(BpmnXMLConstants.BPMN_PREFIX, BpmnXMLConstants.ELEMENT_EVENT_TIMERDEFINITION, BpmnXMLConstants.BPMN2_NAMESPACE); if (!string.IsNullOrWhiteSpace(timerDefinition.CalendarName)) { WriteQualifiedAttribute(BpmnXMLConstants.ATTRIBUTE_CALENDAR_NAME, timerDefinition.CalendarName, xtw); } bool didWriteExtensionStartElement = BpmnXMLUtil.WriteExtensionElements(timerDefinition, false, xtw); if (didWriteExtensionStartElement) { xtw.WriteEndElement(); } if (!string.IsNullOrWhiteSpace(timerDefinition.TimeDate)) { xtw.WriteStartElement(BpmnXMLConstants.BPMN_PREFIX, BpmnXMLConstants.ATTRIBUTE_TIMER_DATE, BpmnXMLConstants.BPMN2_NAMESPACE); xtw.WriteCharacters(timerDefinition.TimeDate); xtw.WriteEndElement(); } else if (!string.IsNullOrWhiteSpace(timerDefinition.TimeCycle)) { xtw.WriteStartElement(BpmnXMLConstants.BPMN_PREFIX, BpmnXMLConstants.ATTRIBUTE_TIMER_CYCLE, BpmnXMLConstants.BPMN2_NAMESPACE); if (!string.IsNullOrWhiteSpace(timerDefinition.EndDate)) { xtw.WriteAttribute(BpmnXMLConstants.ACTIVITI_EXTENSIONS_PREFIX, BpmnXMLConstants.ACTIVITI_EXTENSIONS_NAMESPACE, BpmnXMLConstants.ATTRIBUTE_END_DATE, timerDefinition.EndDate); } xtw.WriteCharacters(timerDefinition.TimeCycle); xtw.WriteEndElement(); } else if (!string.IsNullOrWhiteSpace(timerDefinition.TimeDuration)) { xtw.WriteStartElement(BpmnXMLConstants.BPMN_PREFIX, BpmnXMLConstants.ATTRIBUTE_TIMER_DURATION, BpmnXMLConstants.BPMN2_NAMESPACE); xtw.WriteCharacters(timerDefinition.TimeDuration); xtw.WriteEndElement(); } xtw.WriteEndElement(); }
protected internal override bool WriteExtensionChildElements(BaseElement element, bool didWriteExtensionStartElement, XMLStreamWriter xtw) { ServiceTask serviceTask = (ServiceTask)element; if (serviceTask.CustomProperties.Count > 0) { foreach (CustomProperty customProperty in serviceTask.CustomProperties) { if (string.IsNullOrWhiteSpace(customProperty.SimpleValue)) { continue; } if (!didWriteExtensionStartElement) { xtw.WriteStartElement(BpmnXMLConstants.BPMN_PREFIX, BpmnXMLConstants.ELEMENT_EXTENSIONS, BpmnXMLConstants.BPMN2_NAMESPACE); didWriteExtensionStartElement = true; } xtw.WriteStartElement(BpmnXMLConstants.ACTIVITI_EXTENSIONS_PREFIX, BpmnXMLConstants.ELEMENT_FIELD, BpmnXMLConstants.ACTIVITI_EXTENSIONS_NAMESPACE); xtw.WriteAttribute(BpmnXMLConstants.ATTRIBUTE_FIELD_NAME, customProperty.Name); if ((customProperty.SimpleValue.Contains("${") || customProperty.SimpleValue.Contains("#{")) && customProperty.SimpleValue.Contains("}")) { xtw.WriteStartElement(BpmnXMLConstants.ACTIVITI_EXTENSIONS_PREFIX, BpmnXMLConstants.ATTRIBUTE_FIELD_EXPRESSION, BpmnXMLConstants.ACTIVITI_EXTENSIONS_NAMESPACE); } else { xtw.WriteStartElement(BpmnXMLConstants.ACTIVITI_EXTENSIONS_PREFIX, BpmnXMLConstants.ELEMENT_FIELD_STRING, BpmnXMLConstants.ACTIVITI_EXTENSIONS_NAMESPACE); } xtw.WriteCharacters(customProperty.SimpleValue); xtw.WriteEndElement(); xtw.WriteEndElement(); } } else { didWriteExtensionStartElement = FieldExtensionExport.WriteFieldExtensions(serviceTask.FieldExtensions, didWriteExtensionStartElement, xtw); } return(didWriteExtensionStartElement); }
protected internal virtual bool WriteFormProperties(FlowElement flowElement, bool didWriteExtensionStartElement, XMLStreamWriter xtw) { IList <FormProperty> propertyList = null; if (flowElement is UserTask) { propertyList = ((UserTask)flowElement).FormProperties; } else if (flowElement is StartEvent) { propertyList = ((StartEvent)flowElement).FormProperties; } if (propertyList != null) { foreach (FormProperty property in propertyList) { if (!string.IsNullOrWhiteSpace(property.Id)) { if (!didWriteExtensionStartElement) { xtw.WriteStartElement(BpmnXMLConstants.BPMN_PREFIX, BpmnXMLConstants.ELEMENT_EXTENSIONS, BpmnXMLConstants.BPMN2_NAMESPACE); didWriteExtensionStartElement = true; } xtw.WriteStartElement(BpmnXMLConstants.ACTIVITI_EXTENSIONS_PREFIX, BpmnXMLConstants.ELEMENT_FORMPROPERTY, BpmnXMLConstants.ACTIVITI_EXTENSIONS_NAMESPACE); WriteDefaultAttribute(BpmnXMLConstants.ATTRIBUTE_FORM_ID, property.Id, xtw); WriteDefaultAttribute(BpmnXMLConstants.ATTRIBUTE_FORM_NAME, property.Name, xtw); WriteDefaultAttribute(BpmnXMLConstants.ATTRIBUTE_FORM_TYPE, property.Type, xtw); WriteDefaultAttribute(BpmnXMLConstants.ATTRIBUTE_FORM_EXPRESSION, property.Expression, xtw); WriteDefaultAttribute(BpmnXMLConstants.ATTRIBUTE_FORM_VARIABLE, property.Variable, xtw); WriteDefaultAttribute(BpmnXMLConstants.ATTRIBUTE_FORM_DEFAULT, property.DefaultExpression, xtw); WriteDefaultAttribute(BpmnXMLConstants.ATTRIBUTE_FORM_DATEPATTERN, property.DatePattern, xtw); if (!property.Readable) { WriteDefaultAttribute(BpmnXMLConstants.ATTRIBUTE_FORM_READABLE, BpmnXMLConstants.ATTRIBUTE_VALUE_FALSE, xtw); } if (!property.Writeable) { WriteDefaultAttribute(BpmnXMLConstants.ATTRIBUTE_FORM_WRITABLE, BpmnXMLConstants.ATTRIBUTE_VALUE_FALSE, xtw); } if (property.Required) { WriteDefaultAttribute(BpmnXMLConstants.ATTRIBUTE_FORM_REQUIRED, BpmnXMLConstants.ATTRIBUTE_VALUE_TRUE, xtw); } foreach (FormValue formValue in property.FormValues) { if (!string.IsNullOrWhiteSpace(formValue.Id)) { xtw.WriteStartElement(BpmnXMLConstants.ACTIVITI_EXTENSIONS_PREFIX, BpmnXMLConstants.ELEMENT_VALUE, BpmnXMLConstants.ACTIVITI_EXTENSIONS_NAMESPACE); xtw.WriteAttribute(BpmnXMLConstants.ATTRIBUTE_ID, formValue.Id); xtw.WriteAttribute(BpmnXMLConstants.ATTRIBUTE_NAME, formValue.Name); xtw.WriteEndElement(); } } xtw.WriteEndElement(); } } } return(didWriteExtensionStartElement); }
public virtual void CreateXML(FlowElement flowElement, BpmnModel model, XMLStreamWriter xtw) { if (flowElement is SubProcess subProcess) { if (flowElement is Transaction) { xtw.WriteStartElement(BpmnXMLConstants.BPMN_PREFIX, BpmnXMLConstants.ELEMENT_TRANSACTION, BpmnXMLConstants.BPMN2_NAMESPACE); } else if (flowElement is AdhocSubProcess) { xtw.WriteStartElement(BpmnXMLConstants.BPMN_PREFIX, BpmnXMLConstants.ELEMENT_ADHOC_SUBPROCESS, BpmnXMLConstants.BPMN2_NAMESPACE); } else { xtw.WriteStartElement(BpmnXMLConstants.BPMN_PREFIX, BpmnXMLConstants.ELEMENT_SUBPROCESS, BpmnXMLConstants.BPMN2_NAMESPACE); } xtw.WriteAttribute(BpmnXMLConstants.ATTRIBUTE_ID, subProcess.Id); if (!string.IsNullOrWhiteSpace(subProcess.Name)) { xtw.WriteAttribute(BpmnXMLConstants.ATTRIBUTE_NAME, subProcess.Name); } else { xtw.WriteAttribute(BpmnXMLConstants.ATTRIBUTE_NAME, "subProcess"); } if (subProcess is EventSubProcess) { xtw.WriteAttribute(BpmnXMLConstants.ATTRIBUTE_TRIGGERED_BY, BpmnXMLConstants.ATTRIBUTE_VALUE_TRUE); } else if (!(subProcess is Transaction)) { if (subProcess.Asynchronous) { BpmnXMLUtil.WriteQualifiedAttribute(BpmnXMLConstants.ATTRIBUTE_ACTIVITY_ASYNCHRONOUS, BpmnXMLConstants.ATTRIBUTE_VALUE_TRUE, xtw); if (subProcess.NotExclusive) { BpmnXMLUtil.WriteQualifiedAttribute(BpmnXMLConstants.ATTRIBUTE_ACTIVITY_EXCLUSIVE, BpmnXMLConstants.ATTRIBUTE_VALUE_FALSE, xtw); } } } else if (subProcess is AdhocSubProcess hocSubProcess) { BpmnXMLUtil.WriteDefaultAttribute(BpmnXMLConstants.ATTRIBUTE_CANCEL_REMAINING_INSTANCES, hocSubProcess.CancelRemainingInstances.ToString(), xtw); if (!string.IsNullOrWhiteSpace(hocSubProcess.Ordering)) { BpmnXMLUtil.WriteDefaultAttribute(BpmnXMLConstants.ATTRIBUTE_ORDERING, hocSubProcess.Ordering, xtw); } } if (!string.IsNullOrWhiteSpace(subProcess.Documentation)) { xtw.WriteStartElement(BpmnXMLConstants.BPMN_PREFIX, BpmnXMLConstants.ELEMENT_DOCUMENTATION, BpmnXMLConstants.BPMN2_NAMESPACE); xtw.WriteCharacters(subProcess.Documentation); xtw.WriteEndElement(); } bool didWriteExtensionStartElement = ActivitiListenerExport.WriteListeners(subProcess, false, xtw); didWriteExtensionStartElement = BpmnXMLUtil.WriteExtensionElements(subProcess, didWriteExtensionStartElement, model.Namespaces, xtw); if (didWriteExtensionStartElement) { // closing extensions element xtw.WriteEndElement(); } MultiInstanceExport.WriteMultiInstance(subProcess, xtw); if (subProcess is AdhocSubProcess adhocSubProcess) { if (!string.IsNullOrWhiteSpace(adhocSubProcess.CompletionCondition)) { xtw.WriteStartElement(BpmnXMLConstants.BPMN_PREFIX, BpmnXMLConstants.ELEMENT_COMPLETION_CONDITION, BpmnXMLConstants.BPMN2_NAMESPACE); xtw.WriteCData(adhocSubProcess.CompletionCondition); xtw.WriteEndElement(); } } foreach (FlowElement subElement in subProcess.FlowElements) { CreateXML(subElement, model, xtw); } foreach (Artifact artifact in subProcess.Artifacts) { CreateXML(artifact, model, xtw); } xtw.WriteEndElement(); } else { BaseBpmnXMLConverter converter = convertersToXMLMap[flowElement.GetType()]; if (converter == null) { throw new XMLException("No converter for " + flowElement.GetType() + " found"); } converter.ConvertToXML(xtw, flowElement, model); } }