From 0f892332b19ba8741a7db66a5c4daa386b2b5c1e Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Fri, 25 Oct 2013 17:27:29 +0200 Subject: Changes and refactoring to gui requirements Used descriptions must use an integer version. --- .../com/c2kernel/lifecycle/instance/Activity.java | 8 +++--- .../predefined/CreateItemFromDescription.java | 6 ++--- .../lifecycle/instance/predefined/Import.java | 2 +- .../predefined/entitycreation/NewItem.java | 7 ++--- .../instance/stateMachine/StateMachine.java | 6 ++--- .../instance/stateMachine/Transition.java | 30 ++++++++++++++++++++-- 6 files changed, 44 insertions(+), 15 deletions(-) (limited to 'src/main/java/com/c2kernel/lifecycle/instance') diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java index 49541ad..182882c 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java @@ -78,7 +78,7 @@ public class Activity extends WfVertex String name = (String)getProperties().get("StateMachineName"); String version = (String)getProperties().get("StateMachineVersion"); try { - machine = LocalObjectLoader.getStateMachine(name, version); + machine = LocalObjectLoader.getStateMachine(name, Integer.parseInt(version)); } catch (ObjectNotFoundException ex) { Logger.error(ex); throw new InvalidDataException("Error loading state machine '"+name+"' v"+version); @@ -148,9 +148,11 @@ public class Activity extends WfVertex try { History hist = (History) Gateway.getStorage().get(itemSysKey, ClusterStorage.HISTORY, this); if (storeOutcome) - newEvent = hist.addEvent(agent.getAgentName(), usedRole, transitionID, getName(), getPath(), getType(), schema.docType, schema.docVersion, viewName, state); + newEvent = hist.addEvent(agent.getAgentName(), usedRole, getName(), getPath(), getType(), schema.docType, schema.docVersion, + getStateMachine().getName(), getStateMachine().getVersion(), transition, viewName); else - newEvent = hist.addEvent(agent.getAgentName(), usedRole, transitionID, getName(), getPath(), getType(), state); + newEvent = hist.addEvent(agent.getAgentName(), usedRole, getName(), getPath(), getType(), + getStateMachine().getName(), getStateMachine().getVersion(), transition); Logger.msg(7, "Activity::auditEvent() - Event:" + newEvent.getName() + " was added to the AuditTrail"); diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java index 5c600e2..2e3d652 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java @@ -60,7 +60,7 @@ public class CreateItemFromDescription extends PredefinedStep String domPath = input[1]; CompositeActivityDef wfDef; String wfDefName = null; - String wfDefVer = null; + int wfDefVer = -1; if (input.length > 2) // override wf wfDefName = input[2]; @@ -93,14 +93,14 @@ public class CreateItemFromDescription extends PredefinedStep // get the first member from the wf collection CollectionMember wfMember = members.get(0); wfDefName = wfMember.resolveEntity().getName(); - wfDefVer = (String)wfMember.getProperties().get("Version"); + wfDefVer = (Integer)wfMember.getProperties().get("Version"); } } // load workflow def if (wfDefName == null) throw new InvalidDataException("No workflow given or defined", ""); - if (wfDefVer == null) + if (wfDefVer == -1) throw new InvalidDataException("No workflow def version given",""); try { diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java index 44ab041..5c7dc0e 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java @@ -73,7 +73,7 @@ public class Import extends PredefinedStep TransactionManager storage = Gateway.getStorage(); History hist = new History(itemSysKey, this); - Event event = hist.addEvent(agent.getAgentName(), getCurrentAgentRole(), transitionID, getName(), getPath(), getType(), schemaName, schemaVersion, viewpoint, getState(), timestamp); + Event event = hist.addEvent(agent.getAgentName(), getCurrentAgentRole(), getName(), getPath(), getType(), schemaName, schemaVersion, getStateMachine().getName(), getStateMachine().getVersion(), getStateMachine().getTransition(transitionID), viewpoint, timestamp); try { storage.put(itemSysKey, new Outcome(event.getID(), requestData, schemaName, schemaVersion), this); 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 f089a83..dacb1a3 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 @@ -16,7 +16,7 @@ import com.c2kernel.entity.TraceableEntity; import com.c2kernel.events.Event; import com.c2kernel.events.History; import com.c2kernel.lifecycle.CompositeActivityDef; -import com.c2kernel.lifecycle.instance.predefined.PredefinedStep; +import com.c2kernel.lifecycle.instance.stateMachine.Transition; import com.c2kernel.lookup.DomainPath; import com.c2kernel.lookup.EntityPath; import com.c2kernel.persistency.ClusterStorage; @@ -86,7 +86,7 @@ public class NewItem extends ModuleImport { try { // find workflow def - CompositeActivityDef compact = (CompositeActivityDef)LocalObjectLoader.getActDef(workflow, "0"); + CompositeActivityDef compact = (CompositeActivityDef)LocalObjectLoader.getActDef(workflow, 0); newItem.initialise( agentId, Gateway.getMarshaller().marshall(new PropertyArrayList(properties)), @@ -129,7 +129,8 @@ public class NewItem extends ModuleImport { } // write new view/outcome/event - Event newEvent = hist.addEvent("system", "Admin", PredefinedStep.DONE, "Import", "Import", "Import", thisOutcome.schema, thisOutcome.version, thisOutcome.viewname, PredefinedStep.AVAILABLE); + Transition predefDone = new Transition(0, "Done", 0, 0); + Event newEvent = hist.addEvent("system", "Admin", "Import", "Import", "Import", thisOutcome.schema, thisOutcome.version, "PredefinedStep", 0, predefDone, thisOutcome.viewname); newOutcome.setID(newEvent.getID()); impView.setEventId(newEvent.getID()); try { diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java index f9cf144..1506701 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java @@ -16,7 +16,7 @@ import com.c2kernel.utils.Logger; public class StateMachine implements DescriptionObject { public String name; - public String version; + public int version; private ArrayList states; private ArrayList transitions; @@ -92,7 +92,7 @@ public class StateMachine implements DescriptionObject } @Override - public String getVersion() { + public int getVersion() { return version; } @@ -100,7 +100,7 @@ public class StateMachine implements DescriptionObject this.name = name; } - public void setVersion(String version) { + public void setVersion(int version) { this.version = version; } diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java index 9815889..01ede5a 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java @@ -40,6 +40,16 @@ public class Transition implements Serializable { public Transition() { } + + public Transition(int id, String name, int originStateId, int targetStateId) { + super(); + this.id = id; + this.name = name; + this.originStateId = originStateId; + this.targetStateId = targetStateId; + } + + public String getName() { return name; } @@ -234,7 +244,9 @@ public class Transition implements Serializable { } public boolean hasOutcome() { - return outcome.schemaName!=null && outcome.schemaName.length()>0; + return outcome!=null + && outcome.schemaName!=null && outcome.schemaName.length()>0 + && outcome.schemaVersion!=null && outcome.schemaVersion.length()>0; } public Schema getSchema(CastorHashMap actProps) throws InvalidDataException, ObjectNotFoundException { @@ -249,7 +261,21 @@ public class Transition implements Serializable { return null; } + public String getScriptName(CastorHashMap actProps) { + return resolveValue(script.scriptName, actProps); + } + + public int getScriptVersion(CastorHashMap actProps) throws InvalidDataException { + try { + return Integer.parseInt(resolveValue(script.scriptVersion, actProps)); + } catch (NumberFormatException ex) { + throw new InvalidDataException("Bad Script version number: "+script.scriptVersion+" ("+resolveValue(script.scriptVersion, actProps)); + } + } + public boolean hasScript() { - return script!=null && script.getScriptName() != null; + return script!=null + && script.scriptName!=null && script.scriptName.length()>0 + && script.scriptVersion!=null && script.scriptVersion.length()>0; } } -- cgit v1.2.3