NullPointerException after transformation [message #1782888] |
Sat, 03 March 2018 13:19 |
Gonzalo López Messages: 14 Registered: February 2018 |
Junior Member |
|
|
I'm having trouble making a simple transformation.
What I'm trying to do is copy a bpmn model.
I created a simple bpmn model using the bpmn2-modeler plugin, here is the model (I removed the Diagram part to make it simpler):
<?xml version="1.0" encoding="UTF-8"?>
<!-- origin at X=0.0 Y=0.0 -->
<bpmn2:definitions xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:ext="http://org.eclipse.bpmn2/ext" id="Definitions_1" exporter="org.eclipse.bpmn2.modeler.core" exporterVersion="1.4.2.Final-v20171109-1930-B1" targetNamespace="http://org.eclipse.bpmn2/default/process">
<bpmn2:process id="simple1" name="Default Process" isExecutable="false">
<bpmn2:startEvent id="StartEvent_1" name="Start Event 1">
<bpmn2:extensionElements>
<ext:style/>
</bpmn2:extensionElements>
<bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
</bpmn2:startEvent>
<bpmn2:sequenceFlow id="SequenceFlow_1" name="Sequence Flow 1" sourceRef="StartEvent_1" targetRef="EndEvent_1"/>
<bpmn2:endEvent id="EndEvent_1" name="End Event 1">
<bpmn2:extensionElements>
<ext:style/>
</bpmn2:extensionElements>
<bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
</bpmn2:endEvent>
</bpmn2:process>
</bpmn2:definitions>
Once I run my transformation it fails, this is the error I get:
java.lang.NullPointerException
at org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerResourceImpl$Bpmn2ModelerXMLSave.addNamespaceDeclarations(Bpmn2ModelerResourceImpl.java:1062)
at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.traverse(XMLSaveImpl.java:607)
at org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerResourceImpl$Bpmn2ModelerXMLSave.traverse(Bpmn2ModelerResourceImpl.java:1493)
at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.save(XMLSaveImpl.java:251)
at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doSave(XMLResourceImpl.java:389)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:1430)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:999)
at org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerResourceImpl.save(Bpmn2ModelerResourceImpl.java:296)
at org.eclipse.m2m.atl.core.emf.EMFExtractor.extract(EMFExtractor.java:65)
at org.eclipse.m2m.atl.core.service.LauncherService.launch(LauncherService.java:141)
at org.eclipse.m2m.atl.core.ui.launch.AtlLaunchConfigurationDelegate.launchOrDebug(AtlLaunchConfigurationDelegate.java:300)
at org.eclipse.m2m.atl.core.ui.launch.AtlLaunchConfigurationDelegate.launch(AtlLaunchConfigurationDelegate.java:237)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:885)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:739)
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1039)
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1256)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
I checked the code of that class, it seems that definitions is null:
line 1061 Definitions definitions = ModelUtil.getDefinitions(helper.getResource());
line 1062 String typeLanguage = definitions.getTypeLanguage();
I debug the rule "copyDefinitions" and I see it is copying elements correctly (see debug uploadad image).
Here is my transformation, I'd appreciate help to realize what I'm doing wrong.
-- @atlcompiler atl2010
-- @nsURI bpmn=http://www.omg.org/spec/BPMN/20100524/MODEL
module simpleCopy;
create out: bpmn from base: bpmn;
rule copyStartEvent {
from
se: bpmn!StartEvent in base
to
seOut: bpmn!StartEvent (
id <- se.id,
name <- se.name
)
do {
se.debug('copySE ' + se.anyAttribute);
}
}
rule copyEndEvent {
from
ee: bpmn!EndEvent in base
to
eeOut: bpmn!EndEvent (
id <- ee.id,
name <- ee.name
)
do {
ee.debug('copyEE ' + ee.anyAttribute);
}
}
rule copySequenceFlow {
from
sf: bpmn!SequenceFlow in base
to
sfOut: bpmn!SequenceFlow (
id <- sf.id,
name <- sf.name,
sourceRef <- thisModule.resolveTemp(sf.sourceRef, 'seOut'),
targetRef <- thisModule.resolveTemp(sf.targetRef, 'eeOut')
)
do {
sf.debug('copySF ' + sf.anyAttribute);
}
}
rule copyProcess {
from
process: bpmn!Process in base
to
prOut: bpmn!Process (
id <- process.id,
name <- process.name,
flowElements <- process.flowElements
)
do {
process.debug('copyProcess ' + process.anyAttribute);
}
}
--
rule copyDefinitions {
from
definition: bpmn!Definitions in base
to
defiOut: bpmn!Definitions (
name <- definition.name,
exporter <- definition.exporter,
exporterVersion <- definition.exporterVersion,
expressionLanguage <- definition.expressionLanguage,
targetNamespace <- definition.targetNamespace,
typeLanguage <- definition.typeLanguage,
id <- definition.id,
rootElements <- definition.rootElements
)
do {
definition.debug('copyDefinitions ' + definition.rootElements);
}
}
-
Attachment: process.PNG
(Size: 6.26KB, Downloaded 125 times) -
Attachment: debug.PNG
(Size: 32.39KB, Downloaded 119 times)
|
|
|
|
Powered by
FUDForum. Page generated in 0.01446 seconds