org.jbpm.simulation.util.BPMN2Utils Maven / Gradle / Ivy
/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jbpm.simulation.util;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import bpsim.impl.BpsimPackageImpl;
import org.eclipse.bpmn2.AdHocSubProcess;
import org.eclipse.bpmn2.Bpmn2Package;
import org.eclipse.bpmn2.Definitions;
import org.eclipse.bpmn2.DocumentRoot;
import org.eclipse.bpmn2.FlowElement;
import org.eclipse.bpmn2.FlowElementsContainer;
import org.eclipse.bpmn2.Process;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.Resource.Diagnostic;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.util.FeatureMap;
import org.jboss.drools.impl.DroolsPackageImpl;
public class BPMN2Utils {
public static Definitions getDefinitions(InputStream is) {
DroolsPackageImpl.init();
BpsimPackageImpl.init();
try {
ResourceSet resourceSet = new ResourceSetImpl();
resourceSet
.getResourceFactoryRegistry()
.getExtensionToFactoryMap()
.put(Resource.Factory.Registry.DEFAULT_EXTENSION,
new JBPMBpmn2ResourceFactoryImpl());
resourceSet.getPackageRegistry().put(
"http://www.omg.org/spec/BPMN/20100524/MODEL",
Bpmn2Package.eINSTANCE);
// resourceSet.getPackageRegistry().put(DroolsPackage.eNS_URI,
// DroolsPackage.eINSTANCE);
JBPMBpmn2ResourceImpl resource = (JBPMBpmn2ResourceImpl) resourceSet
.createResource(URI
.createURI("inputStream://dummyUriWithValidSuffix.xml"));
resource.getDefaultLoadOptions().put(
JBPMBpmn2ResourceImpl.OPTION_ENCODING, "UTF-8");
resource.setEncoding("UTF-8");
Map options = new HashMap();
options.put(JBPMBpmn2ResourceImpl.OPTION_ENCODING, "UTF-8");
resource.load(is, options);
EList warnings = resource.getWarnings();
if (warnings != null && !warnings.isEmpty()) {
for (Diagnostic diagnostic : warnings) {
System.out.println("Warning: " + diagnostic.getMessage());
}
}
EList errors = resource.getErrors();
if (errors != null && !errors.isEmpty()) {
for (Diagnostic diagnostic : errors) {
System.out.println("Error: " + diagnostic.getMessage());
}
throw new IllegalStateException(
"Error parsing process definition");
}
return ((DocumentRoot) resource.getContents().get(0))
.getDefinitions();
} catch (Throwable t) {
t.printStackTrace();
return null;
}
}
public static boolean isAdHoc(FlowElement element) {
if (element.eContainer() instanceof Process) {
Process process = (Process) element.eContainer();
Iterator iter = process.getAnyAttribute().iterator();
while(iter.hasNext()) {
FeatureMap.Entry entry = iter.next();
if(entry.getEStructuralFeature().getName().equals("adHoc")) {
return Boolean.parseBoolean(((String)entry.getValue()).trim());
}
}
} else if (element instanceof AdHocSubProcess) {
return true;
}
return false;
}
public static boolean isContainerAdHoc(FlowElementsContainer container) {
if (container instanceof Process) {
Process process = (Process) container;
Iterator iter = process.getAnyAttribute().iterator();
while(iter.hasNext()) {
FeatureMap.Entry entry = iter.next();
if(entry.getEStructuralFeature().getName().equals("adHoc")) {
return Boolean.parseBoolean(((String)entry.getValue()).trim());
}
}
} else if (container instanceof AdHocSubProcess) {
return true;
}
return false;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy