xpdlobjectfactory.java
来自「jawe的最新版本,基于Java的图形化工作流编辑器。图形化工作流编辑器 。使用」· Java 代码 · 共 812 行 · 第 1/2 页
JAVA
812 行
package org.enhydra.jawe.base.xpdlobjectfactory;import java.lang.reflect.Method;import java.util.HashSet;import org.enhydra.jawe.JaWEComponent;import org.enhydra.jawe.JaWEConstants;import org.enhydra.jawe.JaWEEAHandler;import org.enhydra.jawe.JaWEManager;import org.enhydra.jawe.ResourceManager;import org.enhydra.jawe.Utils;import org.enhydra.jawe.base.controller.JaWETypes;import org.enhydra.jawe.base.xpdlhandler.XPDLHandler;import org.enhydra.shark.xpdl.XMLCollection;import org.enhydra.shark.xpdl.XMLCollectionElement;import org.enhydra.shark.xpdl.XMLElement;import org.enhydra.shark.xpdl.XMLUtil;import org.enhydra.shark.xpdl.elements.Activities;import org.enhydra.shark.xpdl.elements.Activity;import org.enhydra.shark.xpdl.elements.ActivitySet;import org.enhydra.shark.xpdl.elements.ActivitySets;import org.enhydra.shark.xpdl.elements.ActualParameter;import org.enhydra.shark.xpdl.elements.ActualParameters;import org.enhydra.shark.xpdl.elements.Application;import org.enhydra.shark.xpdl.elements.Applications;import org.enhydra.shark.xpdl.elements.DataField;import org.enhydra.shark.xpdl.elements.DataFields;import org.enhydra.shark.xpdl.elements.Deadline;import org.enhydra.shark.xpdl.elements.Deadlines;import org.enhydra.shark.xpdl.elements.EnumerationType;import org.enhydra.shark.xpdl.elements.EnumerationValue;import org.enhydra.shark.xpdl.elements.ExtendedAttribute;import org.enhydra.shark.xpdl.elements.ExtendedAttributes;import org.enhydra.shark.xpdl.elements.ExternalPackage;import org.enhydra.shark.xpdl.elements.ExternalPackages;import org.enhydra.shark.xpdl.elements.FormalParameter;import org.enhydra.shark.xpdl.elements.FormalParameters;import org.enhydra.shark.xpdl.elements.Member;import org.enhydra.shark.xpdl.elements.Namespace;import org.enhydra.shark.xpdl.elements.Namespaces;import org.enhydra.shark.xpdl.elements.Package;import org.enhydra.shark.xpdl.elements.PackageHeader;import org.enhydra.shark.xpdl.elements.Participant;import org.enhydra.shark.xpdl.elements.Participants;import org.enhydra.shark.xpdl.elements.RecordType;import org.enhydra.shark.xpdl.elements.Responsible;import org.enhydra.shark.xpdl.elements.Responsibles;import org.enhydra.shark.xpdl.elements.Tool;import org.enhydra.shark.xpdl.elements.Tools;import org.enhydra.shark.xpdl.elements.Transition;import org.enhydra.shark.xpdl.elements.TransitionRef;import org.enhydra.shark.xpdl.elements.TransitionRefs;import org.enhydra.shark.xpdl.elements.TransitionRestriction;import org.enhydra.shark.xpdl.elements.TransitionRestrictions;import org.enhydra.shark.xpdl.elements.Transitions;import org.enhydra.shark.xpdl.elements.TypeDeclaration;import org.enhydra.shark.xpdl.elements.TypeDeclarations;import org.enhydra.shark.xpdl.elements.UnionType;import org.enhydra.shark.xpdl.elements.WorkflowProcess;import org.enhydra.shark.xpdl.elements.WorkflowProcesses;/** * Factory for generating XPDL objects. * * @author Sasa Bojanic */public class XPDLObjectFactory { protected XPDLObjectFactorySettings settings; public XPDLObjectFactory() { settings = new XPDLObjectFactorySettings(); settings.init((JaWEComponent) null); } public XPDLObjectFactory(XPDLObjectFactorySettings settings) { this.settings = settings; this.settings.init((JaWEComponent) null); } public Package createPackage(String type) { Package pkg = new Package(); adjustType(pkg, type); XPDLHandler xpdlhandler = JaWEManager.getInstance().getXPDLHandler(); JaWETypes jts = JaWEManager.getInstance().getJaWEController().getJaWETypes(); boolean hasTemplate = jts.hasTemplateId(type); if (hasTemplate) { jts.fillFromTemplate(pkg, type); } String id = pkg.getId(); if (!hasTemplate || id.equals("") || xpdlhandler.getPackageById(id) != null) { int i = 0; while (id.equals("") || xpdlhandler.getPackageById(id) != null) { id = "newpkg" + String.valueOf(++i); } pkg.setId(id); } if (!hasTemplate || pkg.getName().equals("")) { pkg.setName(id); } PackageHeader ph = pkg.getPackageHeader(); if (!hasTemplate) { ph.setXPDLVersion("1.0"); ph.setVendor("Together"); } ph.setCreated(Utils.getCurrentDateAndTime()); Namespaces nss = pkg.getNamespaces(); Namespace ns = createXPDLObject(nss, "", true); ns.setName("xpdl"); ns.setLocation("http://www.wfmc.org/2002/XPDL1.0"); adjustXPDLObject(pkg,type); return pkg; } public ActivitySet createXPDLObject(ActivitySets ass, String type, boolean addToCollection) { ActivitySet as = (ActivitySet) ass.generateNewElement(); JaWETypes jts = JaWEManager.getInstance().getJaWEController().getJaWETypes(); boolean hasTemplate = jts.hasTemplateId(type); adjustType(as, type); if (hasTemplate) { jts.fillFromTemplate(as, type); } String id = as.getId(); if (!hasTemplate || id.equals("") || ass.getActivitySet(id) != null) { if (id.equals("")) { id = JaWEManager.getInstance().getIdFactory().generateUniqueId(ass); } else { id=JaWEManager.getInstance().getIdFactory().generateSimilarOrIdenticalUniqueId(ass,new HashSet(),id); } int i = 0; while (ass.getActivitySet(id) != null) { id = id + String.valueOf(++i); } as.setId(id); } adjustXPDLObject(as,type); if (addToCollection) { ass.add(as); } return as; } public Activity createXPDLObject(Activities acts, String type, boolean addToCollection) { Activity act = null; if (type == null || type.equals("")) { type = JaWEConstants.ACTIVITY_TYPE_TOOL; } if (type.equals(JaWEConstants.ACTIVITY_TYPE_BLOCK) || type.equals(JaWEConstants.ACTIVITY_TYPE_NO) || type.equals(JaWEConstants.ACTIVITY_TYPE_ROUTE) || type.equals(JaWEConstants.ACTIVITY_TYPE_SUBFLOW) || type.equals(JaWEConstants.ACTIVITY_TYPE_TOOL)) { act = createStandardActivity(acts, type); } else { act = createSpecialActivity(acts, type); } adjustXPDLObject(act,type); if (addToCollection) { acts.add(act); } return act; } protected Activity createStandardActivity(Activities acts, String type) { Activity act = createXPDLActivity(acts,type); if (type.equals(JaWEConstants.ACTIVITY_TYPE_BLOCK)) { act.getActivityTypes().setBlockActivity(); } else if (type.equals(JaWEConstants.ACTIVITY_TYPE_ROUTE)) { act.getActivityTypes().setRoute(); } else if (type.equals(JaWEConstants.ACTIVITY_TYPE_SUBFLOW)) { act.getActivityTypes().setImplementation(); act.getActivityTypes().getImplementation().getImplementationTypes().setSubFlow(); } else if (type.equals(JaWEConstants.ACTIVITY_TYPE_TOOL)) { act.getActivityTypes().setImplementation(); act.getActivityTypes().getImplementation().getImplementationTypes().setTools(); } else if (type.equals(JaWEConstants.ACTIVITY_TYPE_NO)) { act.getActivityTypes().setImplementation(); act.getActivityTypes().getImplementation().getImplementationTypes().setNo(); } return act; } protected Activity createSpecialActivity(Activities acts, String type) { Activity act = createXPDLActivity(acts,type); JaWETypes jts = JaWEManager.getInstance().getJaWEController().getJaWETypes(); boolean hasTemplate = jts.hasTemplateId(type); if (!hasTemplate) { act.getActivityTypes().getImplementation().getImplementationTypes().setTools(); act.getActivityTypes().setImplementation(); // JaWEEAHandler.setActivityType(act, type); } return act; } protected Activity createXPDLActivity(Activities acts,String type) { Activity act = (Activity) acts.generateNewElement(); JaWETypes jts = JaWEManager.getInstance().getJaWEController().getJaWETypes(); boolean hasTemplate = jts.hasTemplateId(type); if (hasTemplate) { jts.fillFromTemplate(act, type); } String id = act.getId(); if (!hasTemplate || id.equals("") || acts.getActivity(id) != null) { if (id.equals("")) { id=JaWEManager.getInstance().getIdFactory().generateUniqueId(acts); } else { id = JaWEManager.getInstance().getIdFactory().generateSimilarOrIdenticalUniqueId(acts,new HashSet(),id); } int i = 0; while (acts.getActivity(id) != null) { id = id + String.valueOf(++i); } act.setId(id); } return act; } public ActualParameter createXPDLObject(ActualParameters aps, String type, boolean addToCollection) { ActualParameter ap = (ActualParameter) aps.generateNewElement(); adjustType(ap, type); JaWETypes jts = JaWEManager.getInstance().getJaWEController().getJaWETypes(); boolean hasTemplate = jts.hasTemplateId(type); if (hasTemplate) { jts.fillFromTemplate(ap, type); } adjustXPDLObject(ap,type); if (addToCollection) { aps.add(ap); } return ap; } public Application createXPDLObject(Applications apps, String type, boolean addToCollection) { Application app = (Application) apps.generateNewElement(); adjustType(app, type); JaWETypes jts = JaWEManager.getInstance().getJaWEController().getJaWETypes(); boolean hasTemplate = jts.hasTemplateId(type); if (hasTemplate) { jts.fillFromTemplate(app, type); } String id = app.getId(); if (!hasTemplate || id.equals("") || apps.getApplication(id) != null) { if (id.equals("")) { id=JaWEManager.getInstance().getIdFactory().generateUniqueId(apps); } else { id = JaWEManager.getInstance().getIdFactory().generateSimilarOrIdenticalUniqueId(apps,new HashSet(),id); } int i = 0; while (apps.getApplication(id) != null) { id = id + String.valueOf(++i); } app.setId(id); } adjustXPDLObject(app,type); if (addToCollection) { apps.add(app); } return app; } public DataField createXPDLObject(DataFields dfs, String type, boolean addToCollection) { DataField df = (DataField) dfs.generateNewElement(); adjustType(df, type); JaWETypes jts = JaWEManager.getInstance().getJaWEController().getJaWETypes(); boolean hasTemplate = jts.hasTemplateId(type); if (hasTemplate) { jts.fillFromTemplate(df, type); } String id = df.getId(); if (!hasTemplate || id.equals("") || dfs.getDataField(id) != null) { if (id.equals("")) { id=JaWEManager.getInstance().getIdFactory().generateUniqueId(dfs); } else { id = JaWEManager.getInstance().getIdFactory().generateSimilarOrIdenticalUniqueId(dfs,new HashSet(),id); } int i = 0; while (dfs.getDataField(id) != null) { id = id + String.valueOf(++i); } df.setId(id); } adjustXPDLObject(df,type); if (addToCollection) { dfs.add(df); } return df; } public Deadline createXPDLObject(Deadlines dls, String type, boolean addToCollection) { Deadline dl = (Deadline) dls.generateNewElement(); adjustType(dl, type); JaWETypes jts = JaWEManager.getInstance().getJaWEController().getJaWETypes(); boolean hasTemplate = jts.hasTemplateId(type); if (hasTemplate) { jts.fillFromTemplate(dl, type); } adjustXPDLObject(dl,type); if (addToCollection) { dls.add(dl); } return dl; } public EnumerationValue createXPDLObject(EnumerationType et, String type, boolean addToCollection) { EnumerationValue ev = (EnumerationValue) et.generateNewElement(); adjustType(ev, type); JaWETypes jts = JaWEManager.getInstance().getJaWEController().getJaWETypes(); boolean hasTemplate = jts.hasTemplateId(type); if (hasTemplate) { jts.fillFromTemplate(ev, type); } adjustXPDLObject(ev,type); if (addToCollection) { et.add(ev); } return ev; } public ExtendedAttribute createXPDLObject(ExtendedAttributes eas, String type, boolean addToCollection) { ExtendedAttribute ea = (ExtendedAttribute) eas.generateNewElement(); adjustType(ea, type); JaWETypes jts = JaWEManager.getInstance().getJaWEController().getJaWETypes(); boolean hasTemplate = jts.hasTemplateId(type); if (hasTemplate) { jts.fillFromTemplate(ea, type); } adjustXPDLObject(ea,type); if (addToCollection) { eas.add(ea); } return ea; } public ExternalPackage createXPDLObject(ExternalPackages eps, String type, boolean addToCollection) { ExternalPackage ep = (ExternalPackage) eps.generateNewElement(); adjustType(ep, type); JaWETypes jts = JaWEManager.getInstance().getJaWEController().getJaWETypes(); boolean hasTemplate = jts.hasTemplateId(type); if (hasTemplate) { jts.fillFromTemplate(ep, type); } adjustXPDLObject(ep,type); if (addToCollection) { eps.add(ep); } return ep; } public FormalParameter createXPDLObject(FormalParameters fps, String type, boolean addToCollection) { FormalParameter fp = (FormalParameter) fps.generateNewElement(); adjustType(fp, type); JaWETypes jts = JaWEManager.getInstance().getJaWEController().getJaWETypes(); boolean hasTemplate = jts.hasTemplateId(type); if (hasTemplate) { jts.fillFromTemplate(fp, type); } String id = fp.getId(); if (!hasTemplate || id.equals("") || fps.getFormalParameter(id) != null) { if (id.equals("")) { id=JaWEManager.getInstance().getIdFactory().generateUniqueId(fps); } else { id = JaWEManager.getInstance().getIdFactory().generateSimilarOrIdenticalUniqueId(fps,new HashSet(),id);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?