diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2014-04-04 17:26:10 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2014-04-04 17:26:10 +0200 |
| commit | 11e7a9aaed7c22ec93a791ea752e159b4b120e4e (patch) | |
| tree | 8d8870aeeca417c3989312214ccf99818d143d65 | |
| parent | c672fa9d426beb92d9149ebc32c9cdf9bece7845 (diff) | |
Module XML now supports a workflowVer attribute for the Item element. If
not given, it assumed version 0, as per the previous behaviour. Fixes
#180
5 files changed, 26 insertions, 8 deletions
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewItem.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewItem.java index 5f8cf12..07b8462 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewItem.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewItem.java @@ -39,6 +39,7 @@ public class NewItem extends ModuleImport { public String initialPath;
public String workflow;
+ public Integer workflowVer;
public ArrayList<Property> properties = new ArrayList<Property>();
public ArrayList<Aggregation> aggregationList = new ArrayList<Aggregation>();
public ArrayList<Dependency> dependencyList = new ArrayList<Dependency>();
@@ -48,11 +49,12 @@ public class NewItem extends ModuleImport { public NewItem() {
}
- public NewItem(String name, String initialPath, String wf) {
+ public NewItem(String name, String initialPath, String wf, int wfVer) {
this();
this.name = name;
this.initialPath = initialPath;
this.workflow = wf;
+ this.workflowVer = wfVer;
}
public void setNamespace(String ns) {
@@ -82,11 +84,22 @@ public class NewItem extends ModuleImport { // set the name property
properties.add(new Property("Name", name, true));
- // init the new item
+ // find workflow def
+ CompositeActivityDef compact;
+ // default workflow version is 0 if not given
+ int usedWfVer;
+ if (workflowVer == null) usedWfVer = 0;
+ else usedWfVer = workflowVer.intValue();
try {
-
- // find workflow def
- CompositeActivityDef compact = (CompositeActivityDef)LocalObjectLoader.getActDef(workflow, 0);
+ compact = (CompositeActivityDef)LocalObjectLoader.getActDef(workflow, usedWfVer);
+ } catch (ObjectNotFoundException ex) {
+ throw new CannotManageException("Could not find workflow "+workflow+"v"+usedWfVer+" for item "+domPath, "");
+ } catch (InvalidDataException e) {
+ throw new CannotManageException("Workflow def "+workflow+" v"+usedWfVer+" for item "+domPath+" was not valid", "");
+ }
+
+ try {
+ // initialise the new item with workflow and properties
newItem.initialise(
agentId,
Gateway.getMarshaller().marshall(new PropertyArrayList(properties)),
diff --git a/src/main/java/com/c2kernel/process/Bootstrap.java b/src/main/java/com/c2kernel/process/Bootstrap.java index df8ced7..a750b3f 100644 --- a/src/main/java/com/c2kernel/process/Bootstrap.java +++ b/src/main/java/com/c2kernel/process/Bootstrap.java @@ -183,7 +183,7 @@ public class Bootstrap }
// data was missing or doesn't match
- Logger.msg("Bootstrap.verifyResource() - Writing new "+newOutcome.getSchemaType()+"version "+version+" to "+typeImpHandler.getName()+" "+itemName);
+ Logger.msg("Bootstrap.verifyResource() - Writing new "+newOutcome.getSchemaType()+" v"+version+" to "+typeImpHandler.getName()+" "+itemName);
History hist = new History(thisProxy.getSystemKey(), thisProxy);
Transition predefDone = new Transition(0, "Done", 0, 0);
Event newEvent = hist.addEvent("system", "Admin", "Bootstrap", "Bootstrap", "Bootstrap", newOutcome.getSchemaType(), 0, "PredefinedStep", 0, predefDone, String.valueOf(version));
diff --git a/src/main/java/com/c2kernel/process/module/Module.java b/src/main/java/com/c2kernel/process/module/Module.java index a7c707e..3e8ab2a 100644 --- a/src/main/java/com/c2kernel/process/module/Module.java +++ b/src/main/java/com/c2kernel/process/module/Module.java @@ -51,7 +51,7 @@ public class Module { }
public void addModuleItem(String moduleXML) {
- NewItem moduleItem = new NewItem(name, "/desc/modules/", "ModuleWorkflow");
+ NewItem moduleItem = new NewItem(name, "/desc/modules/", "ModuleWorkflow", 0);
// Module properties
moduleItem.properties.add(new com.c2kernel.property.Property("Namespace", ns, false));
moduleItem.properties.add(new com.c2kernel.property.Property("Name", name, false));
diff --git a/src/main/resources/boot/OD/Module.xsd b/src/main/resources/boot/OD/Module.xsd index 882b374..d25352e 100644 --- a/src/main/resources/boot/OD/Module.xsd +++ b/src/main/resources/boot/OD/Module.xsd @@ -150,7 +150,9 @@ </xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="workflow" type="xs:string"
- use="optional" />
+ use="required" />
+ <xs:attribute name="workflowVer" type="xs:int"
+ use="optional" />
<xs:attribute name="initialPath" type="xs:string"
use="optional" />
</xs:complexType>
diff --git a/src/main/resources/mapFiles/NewEntityMap.xml b/src/main/resources/mapFiles/NewEntityMap.xml index 239fa21..84c4ce7 100644 --- a/src/main/resources/mapFiles/NewEntityMap.xml +++ b/src/main/resources/mapFiles/NewEntityMap.xml @@ -11,6 +11,9 @@ <field name="workflow" type="string" direct="true">
<bind-xml name="workflow" node="attribute"/>
</field>
+ <field name="workflowVer" type="integer" direct="true">
+ <bind-xml name="workflowVer" node="attribute"/>
+ </field>
<field name="properties" collection="arraylist" direct="true" type="com.c2kernel.property.Property">
<bind-xml name="Property" node="element"/>
</field>
|
