diff options
| author | abranson <andrew.branson@cern.ch> | 2012-03-16 16:56:45 +0100 |
|---|---|---|
| committer | abranson <andrew.branson@cern.ch> | 2012-03-16 16:56:45 +0100 |
| commit | 3c03e9fd00619e44dff85f9e523663b7323f3746 (patch) | |
| tree | dba2d9aef725f68f098708d87efa5cdfe5d9d61b /resources/boot/SC | |
| parent | 160f610b24ee3802a109bcd32e00bfa2dde31ec2 (diff) | |
Comments and changelog
Diffstat (limited to 'resources/boot/SC')
| -rw-r--r-- | resources/boot/SC/InstantiateItem.xml | 23 | ||||
| -rw-r--r-- | resources/boot/SC/LocalObjectDefCreator.xml | 19 | ||||
| -rw-r--r-- | resources/boot/SC/SetWorkflow.xml | 52 |
3 files changed, 55 insertions, 39 deletions
diff --git a/resources/boot/SC/InstantiateItem.xml b/resources/boot/SC/InstantiateItem.xml index 4cd84b5..0f16a65 100644 --- a/resources/boot/SC/InstantiateItem.xml +++ b/resources/boot/SC/InstantiateItem.xml @@ -2,19 +2,20 @@ <cristalscript>
<output name="errors" type="com.c2kernel.scripting.ErrorInfo"/>
<script language="javascript" name="InstantiateItem"><![CDATA[
+ importClass(Packages.com.c2kernel.lookup.DomainPath);
+ // Load contextual objects
var job = bsf.lookupBean("job");
var item = bsf.lookupBean("item");
var agent = bsf.lookupBean("agent");
var errorBuffer = bsf.lookupBean("errors");
- - var name = job.getOutcome().getDOM().getDocumentElement(). - getElementsByTagName("ObjectName").item(0).getFirstChild().getData(); - var folder = job.getOutcome().getDOM().getDocumentElement(). - getElementsByTagName("SubFolder").item(0).getFirstChild(); - var domPath = "/" + (folder != null?folder.getData():""); - -
var params = new Array(2); +
+ // Get parameters from outcome + var name = job.getOutcome().getField("ObjectName"); + var folder = job.getOutcome().getField("SubFolder"); + var domPath = "/" + (folder != null?folder:""); +
// Create new Item
+ var params = new Array(2); params[0] = name; params[1] = domPath; @@ -24,7 +25,11 @@ errorBuffer.addError("Could not create "+name+": "+e.message); errorBuffer.setFatal(); } - +
+ // If this script is running in the Cristal GUI, open the new item.
+ var tree = Packages.com.c2kernel.gui.MainFrame.treeBrowser;
+ if (tree != null)
+ tree.push(new DomainPath(domPath+"/"+name));
errorBuffer;
]]></script>
</cristalscript>
diff --git a/resources/boot/SC/LocalObjectDefCreator.xml b/resources/boot/SC/LocalObjectDefCreator.xml index cce559e..445a517 100644 --- a/resources/boot/SC/LocalObjectDefCreator.xml +++ b/resources/boot/SC/LocalObjectDefCreator.xml @@ -13,18 +13,17 @@ var agent = bsf.lookupBean("agent");
var errorBuffer = bsf.lookupBean("errors");
var type = job.getActPropString("NewType");
- var name = job.getOutcome().getDOM().getDocumentElement().
- getElementsByTagName("ObjectName").item(0).getFirstChild().getData();
- var folder = job.getOutcome().getDOM().getDocumentElement().
- getElementsByTagName("SubFolder").item(0).getFirstChild();
+ var name = job.getOutcome().getField("ObjectName");
+ var folder = job.getOutcome().getField("SubFolder");
+ // Find the root of that object type
var domPath = Bootstrap.getTypeRoot(type).toString();
if (folder != null) domPath = domPath + "/" + folder.getData();
var params = new Array(2);
params[0] = name;
-
params[1] = domPath;
+ // Create the new item
if (!(errorBuffer.getFatal())) {
try {
agent.execute(item, "CreateItemFromDescription", params);
@@ -34,20 +33,26 @@ }
}
- if (!(errorBuffer.getFatal())) { // store an outcome in the new desc
+ // Store a fresh one in the new item
+ if (!(errorBuffer.getFatal())) {
var newObj;
+ // Activities are serialized new instances
if (type.equals("EA") || type.equals("CA")) {
var newAct = type.equals("CA")?new CompositeActivityDef(): new ActivityDef();
newAct.setName(name);
newObj = CastorXMLUtility.marshall(newAct);
}
- else {
+ else {
+ // Empty schemas and scripts are stored as outcomes of the factory.
var fileType = type.equals("OD")?"Schema":"Script";
newObj = item.getObject("/ViewPoint/"+fileType+"/last").getOutcome().getData();
}
+ // Store the new object with the 'EditDefinition' activity
var newPath = new Packages.com.c2kernel.lookup.DomainPath(domPath+"/"+name);
var newItem = agent.getItem(newPath);
newItem.requestAction(agent.getSystemKey(), "workflow/domain/EditDefinition", 4, newObj);
+
+ // If this script is running in the Cristal GUI, open the new item.
var tree = Packages.com.c2kernel.gui.MainFrame.treeBrowser;
if (tree != null) // open new item in the gui
tree.push(newPath);
diff --git a/resources/boot/SC/SetWorkflow.xml b/resources/boot/SC/SetWorkflow.xml index 0fb2a30..5dbfa6d 100644 --- a/resources/boot/SC/SetWorkflow.xml +++ b/resources/boot/SC/SetWorkflow.xml @@ -9,37 +9,43 @@ var agent = bsf.lookupBean("agent");
var errorBuffer = bsf.lookupBean("errors");
+ // Fetch the requested name from the outcome field
var wfDefName = job.getOutcome().getField("WorkflowDefinitionName"); + // Look up the description
var root = new DomainPath("/desc/ActivityDesc"); var wfItem; try { - var wfPath = root.find(wfDefName); - wfItem = agent.getItem(wfPath); + var wfPath = root.find(wfDefName); + wfItem = agent.getItem(wfPath); } catch (e) { errorBuffer.addError(wfDefName+" is not a valid item"); errorBuffer.setFatal(); } - +
+ // Make sure it has the right properties to be a composite activity desc if (!errorBuffer.getFatal()) { - var itemType = wfItem.getProperty("Type"); - var complex = wfItem.getProperty("Complexity"); - if (!itemType.equals("ActivityDesc")) { - errorBuffer.addError(wfDefName+" is not an activity description"); - errorBuffer.setFatal(); - } - if (!complex.equals("Composite")) { - errorBuffer.addError(wfDefName+" is not a composite activity description"); - errorBuffer.setFatal(); - } + var itemType = wfItem.getProperty("Type"); + var complex = wfItem.getProperty("Complexity"); + if (!itemType.equals("ActivityDesc")) { + errorBuffer.addError(wfDefName+" is not an activity description"); + errorBuffer.setFatal(); + } + if (!complex.equals("Composite")) { + errorBuffer.addError(wfDefName+" is not a composite activity description"); + errorBuffer.setFatal(); + } } - +
if (!errorBuffer.getFatal()) { - var coll = item.getObject("/Collection/Workflow"); - if (coll.size() > 0) { - var member = coll.getMembers().list.get(0); - coll.removeMember(member.getID()); - } - coll.addMember(wfItem.getSystemKey()); - var params = new Array(1); - params[0] = agent.marshall(coll); - agent.execute(item, "AddC2KObject", params); + // Fetch the 'Workflow' collection
+ var coll = item.getObject("/Collection/Workflow"); + if (coll.size() > 0) { // if there's already a member, remove it + var member = coll.getMembers().list.get(0); + coll.removeMember(member.getID()); + } + // add the new member
+ coll.addMember(wfItem.getSystemKey()); + // save it back to the item + var params = new Array(1); + params[0] = agent.marshall(coll); + agent.execute(item, "AddC2KObject", params); } errorBuffer;
|
