Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.
activiti-bpmn-converter的是一个非常常见的需求。
public interface BpmnXMLConstants {public static final String BPMN2_NAMESPACE = "http://www.omg.org/spec/BPMN/20100524/MODEL";public static final String BPMN2_PREFIX = "bpmn2";public static final String XSI_NAMESPACE = "http://www.w3.org/2001/XMLSchema-instance";public static final String XSI_PREFIX = "xsi";public static final String SCHEMA_NAMESPACE = "http://www.w3.org/2001/XMLSchema";public static final String XSD_PREFIX = "xsd";public static final String TYPE_LANGUAGE_ATTRIBUTE = "typeLanguage";public static final String XPATH_NAMESPACE = "http://www.w3.org/1999/XPath";public static final String EXPRESSION_LANGUAGE_ATTRIBUTE = "expressionLanguage";public static final String PROCESS_NAMESPACE = "http://www.activiti.org/test";public static final String TARGET_NAMESPACE_ATTRIBUTE = "targetNamespace";public static final String ACTIVITI_EXTENSIONS_NAMESPACE = "http://activiti.org/bpmn";public static final String ACTIVITI_EXTENSIONS_PREFIX = "activiti";public static final String BPMNDI_NAMESPACE = "http://www.omg.org/spec/BPMN/20100524/DI";public static final String BPMNDI_PREFIX = "bpmndi";public static final String OMGDC_NAMESPACE = "http://www.omg.org/spec/DD/20100524/DC";public static final String OMGDC_PREFIX = "omgdc";public static final String OMGDI_NAMESPACE = "http://www.omg.org/spec/DD/20100524/DI";public static final String OMGDI_PREFIX = "omgdi";
public class BpmnXMLConverter implements BpmnXMLConstants {protected static final Logger LOGGER = LoggerFactory.getLogger(BpmnXMLConverter.class);protected static final String BPMN_XSD = "org/activiti/impl/bpmn/parser/BPMN20.xsd";protected static final String DEFAULT_ENCODING = "UTF-8";protected static Map convertersToBpmnMap = new HashMap();protected static Map, BaseBpmnXMLConverter> convertersToXMLMap = new HashMap, BaseBpmnXMLConverter>();protected ClassLoader classloader;protected List userTaskFormTypes;protected List startEventFormTypes;protected BpmnEdgeParser bpmnEdgeParser = new BpmnEdgeParser();protected BpmnShapeParser bpmnShapeParser = new BpmnShapeParser();protected DefinitionsParser definitionsParser = new DefinitionsParser();protected DocumentationParser documentationParser = new DocumentationParser();protected ExtensionElementsParser extensionElementsParser = new ExtensionElementsParser();protected ImportParser importParser = new ImportParser();protected InterfaceParser interfaceParser = new InterfaceParser();protected ItemDefinitionParser itemDefinitionParser = new ItemDefinitionParser();protected IOSpecificationParser ioSpecificationParser = new IOSpecificationParser();protected DataStoreParser dataStoreParser = new DataStoreParser();protected LaneParser laneParser = new LaneParser();protected MessageParser messageParser = new MessageParser();protected MessageFlowParser messageFlowParser = new MessageFlowParser();protected MultiInstanceParser multiInstanceParser = new MultiInstanceParser();protected ParticipantParser participantParser = new ParticipantParser();protected PotentialStarterParser potentialStarterParser = new PotentialStarterParser();protected ProcessParser processParser = new ProcessParser();protected ResourceParser resourceParser = new ResourceParser();protected SignalParser signalParser = new SignalParser();protected SubProcessParser subProcessParser = new SubProcessParser();static {// eventsaddConverter(new EndEventXMLConverter());addConverter(new StartEventXMLConverter());// tasksaddConverter(new BusinessRuleTaskXMLConverter());addConverter(new ManualTaskXMLConverter());addConverter(new ReceiveTaskXMLConverter());addConverter(new ScriptTaskXMLConverter());addConverter(new ServiceTaskXMLConverter());addConverter(new SendTaskXMLConverter());addConverter(new UserTaskXMLConverter());addConverter(new TaskXMLConverter());addConverter(new CallActivityXMLConverter());// gatewaysaddConverter(new EventGatewayXMLConverter());addConverter(new ExclusiveGatewayXMLConverter());addConverter(new InclusiveGatewayXMLConverter());addConverter(new ParallelGatewayXMLConverter());addConverter(new ComplexGatewayXMLConverter());// connectorsaddConverter(new SequenceFlowXMLConverter());// catch, throw and boundary eventaddConverter(new CatchEventXMLConverter());addConverter(new ThrowEventXMLConverter());addConverter(new BoundaryEventXMLConverter());// artifactsaddConverter(new TextAnnotationXMLConverter());addConverter(new AssociationXMLConverter());// data store referenceaddConverter(new DataStoreReferenceXMLConverter());// data objectsaddConverter(new ValuedDataObjectXMLConverter(), StringDataObject.class);addConverter(new ValuedDataObjectXMLConverter(), BooleanDataObject.class);addConverter(new ValuedDataObjectXMLConverter(), IntegerDataObject.class);addConverter(new ValuedDataObjectXMLConverter(), LongDataObject.class);addConverter(new ValuedDataObjectXMLConverter(), DoubleDataObject.class);addConverter(new ValuedDataObjectXMLConverter(), DateDataObject.class);// Alfresco typesaddConverter(new AlfrescoStartEventXMLConverter());addConverter(new AlfrescoUserTaskXMLConverter());}public static void addConverter(BaseBpmnXMLConverter converter) {addConverter(converter, converter.getBpmnElementType());}public static void addConverter(BaseBpmnXMLConverter converter, Class extends BaseElement> elementType) {convertersToBpmnMap.put(converter.getXMLElementName(), converter);convertersToXMLMap.put(elementType, converter);}
convertToBpmnModel流程如下
public class StartEventXMLConverter extends BaseBpmnXMLConverter {@Overridepublic Class extends BaseElement> getBpmnElementType() {return StartEvent.class;}@Overrideprotected String getXMLElementName() {return ELEMENT_EVENT_START;}@Overrideprotected BaseElement convertXMLToElement(XMLStreamReader xtr,BpmnModel model) throws Exception {String formKey = xtr.getAttributeValue(ACTIVITI_EXTENSIONS_NAMESPACE,ATTRIBUTE_FORM_FORMKEY);StartEvent startEvent = null;if (StringUtils.isNotEmpty(formKey) && model.getStartEventFormTypes() != null && model.getStartEventFormTypes().contains(formKey)) {startEvent = new AlfrescoStartEvent();}if (startEvent == null) {startEvent = new StartEvent();}BpmnXMLUtil.addXMLLocation(startEvent,xtr);startEvent.setInitiator(xtr.getAttributeValue(ACTIVITI_EXTENSIONS_NAMESPACE,ATTRIBUTE_EVENT_START_INITIATOR));boolean interrupting = true;String interruptingAttribute = xtr.getAttributeValue(null,ATTRIBUTE_EVENT_START_INTERRUPTING);if (ATTRIBUTE_VALUE_FALSE.equalsIgnoreCase(interruptingAttribute)) {interrupting = false;}startEvent.setInterrupting(interrupting);startEvent.setFormKey(formKey);parseChildElements(getXMLElementName(),startEvent,model,xtr);return startEvent;}@Overrideprotected void writeAdditionalAttributes(BaseElement element,BpmnModel model,XMLStreamWriter xtw) throws Exception {StartEvent startEvent = (StartEvent) element;writeQualifiedAttribute(ATTRIBUTE_EVENT_START_INITIATOR,startEvent.getInitiator(),xtw);writeQualifiedAttribute(ATTRIBUTE_FORM_FORMKEY,startEvent.getFormKey(),xtw);if (startEvent.getEventDefinitions() != null && startEvent.getEventDefinitions().size() > 0) {writeDefaultAttribute(ATTRIBUTE_EVENT_START_INTERRUPTING,String.valueOf(startEvent.isInterrupting()),xtw);}}@Overrideprotected boolean writeExtensionChildElements(BaseElement element,boolean didWriteExtensionStartElement,XMLStreamWriter xtw) throws Exception {StartEvent startEvent = (StartEvent) element;didWriteExtensionStartElement = writeFormProperties(startEvent,didWriteExtensionStartElement,xtw);return didWriteExtensionStartElement;}@Overrideprotected void writeAdditionalChildElements(BaseElement element,BpmnModel model,XMLStreamWriter xtw) throws Exception {StartEvent startEvent = (StartEvent) element;writeEventDefinitions(startEvent,startEvent.getEventDefinitions(),model,xtw);}}
convertXMLToElement项目流程如下:
public class EndEventXMLConverter extends BaseBpmnXMLConverter {@Overridepublic Class extends BaseElement> getBpmnElementType() {return EndEvent.class;}@Overrideprotected String getXMLElementName() {return ELEMENT_EVENT_END;}@Overrideprotected BaseElement convertXMLToElement(XMLStreamReader xtr, BpmnModel model) throws Exception {EndEvent endEvent = new EndEvent();BpmnXMLUtil.addXMLLocation(endEvent, xtr);parseChildElements(getXMLElementName(), endEvent, model, xtr);return endEvent;}@Overrideprotected void writeAdditionalAttributes(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception {}@Overrideprotected void writeAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception {EndEvent endEvent = (EndEvent) element;writeEventDefinitions(endEvent, endEvent.getEventDefinitions(), model, xtw);}
类图;
[1]. https://www.activiti.org/
欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~