summaryrefslogtreecommitdiff
path: root/src/main/resources/boot/SC
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/resources/boot/SC')
-rw-r--r--src/main/resources/boot/SC/CreateNewNumberedVersionFromLast.xml27
-rw-r--r--src/main/resources/boot/SC/InstantiateItem.xml28
-rw-r--r--src/main/resources/boot/SC/LocalObjectDefCreator.xml54
-rw-r--r--src/main/resources/boot/SC/New.xml7
-rw-r--r--src/main/resources/boot/SC/SetWorkflow.xml41
5 files changed, 157 insertions, 0 deletions
diff --git a/src/main/resources/boot/SC/CreateNewNumberedVersionFromLast.xml b/src/main/resources/boot/SC/CreateNewNumberedVersionFromLast.xml
new file mode 100644
index 0000000..321855a
--- /dev/null
+++ b/src/main/resources/boot/SC/CreateNewNumberedVersionFromLast.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cristalscript>
+ <output name="errors" type="com.c2kernel.scripting.ErrorInfo"/>
+ <script language="javascript" name="CreateNewNumberedVersionFromLast"><![CDATA[
+
+ var viewName = job.getActPropString("ViewName");
+
+ if (viewName.equals(""))
+ throw "ViewName not specified. Cannot create new version.";
+
+ var lastView = -1;
+ var existingViews = item.getContents("/ViewPoint/"+viewName);
+ for (i=0; i<existingViews.length; i++) {
+ var thisView = parseInt(existingViews[i]);
+ if (thisView!=NaN && lastView < thisView) lastView = thisView;
+ }
+ lastView++;
+ try {
+ var existingLast = agent.unmarshall(item.queryData("/ViewPoint/"+viewName+"/last"));
+ } catch (e) {
+ throw "No data found. You must submit at least one version before executing this activity.";
+ }
+ existingLast.setName(lastView);
+ agent.execute(item, "AddC2KObject", existingLast);
+
+ ]]></script>
+</cristalscript>
diff --git a/src/main/resources/boot/SC/InstantiateItem.xml b/src/main/resources/boot/SC/InstantiateItem.xml
new file mode 100644
index 0000000..4e80e9d
--- /dev/null
+++ b/src/main/resources/boot/SC/InstantiateItem.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cristalscript>
+ <output name="errors" type="com.c2kernel.scripting.ErrorInfo"/>
+ <script language="javascript" name="InstantiateItem"><![CDATA[
+ importClass(Packages.com.c2kernel.lookup.DomainPath);
+
+ // 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;
+
+ try {
+ agent.execute(item, "CreateItemFromDescription", params);
+ } catch (e) {
+ throw "Could not create "+name+": "+e.message;
+ }
+
+ // 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));
+
+ ]]></script>
+</cristalscript>
diff --git a/src/main/resources/boot/SC/LocalObjectDefCreator.xml b/src/main/resources/boot/SC/LocalObjectDefCreator.xml
new file mode 100644
index 0000000..32b154c
--- /dev/null
+++ b/src/main/resources/boot/SC/LocalObjectDefCreator.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cristalscript>
+ <output name="errors" type="com.c2kernel.scripting.ErrorInfo"/>
+ <script language="javascript" name="LocalObjectDefCreator"><![CDATA[
+ importClass(Packages.com.c2kernel.utils.CastorXMLUtility);
+ importClass(Packages.com.c2kernel.utils.Resource);
+ importClass(Packages.com.c2kernel.process.Bootstrap);
+ importClass(Packages.com.c2kernel.lifecycle.CompositeActivityDef);
+ importClass(Packages.com.c2kernel.lifecycle.ActivityDef);
+
+ var type = job.getActPropString("NewType");
+ 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
+ try {
+ agent.execute(item, "CreateItemFromDescription", params);
+ } catch (e) {
+ throw "Could not create "+name+": "+e.message;
+ }
+
+ // Store a fresh one in the new item
+
+ 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 {
+ // 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);
+
+ ]]></script>
+</cristalscript>
diff --git a/src/main/resources/boot/SC/New.xml b/src/main/resources/boot/SC/New.xml
new file mode 100644
index 0000000..a07a7b9
--- /dev/null
+++ b/src/main/resources/boot/SC/New.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cristalscript>
+ <output name="errors" type="com.c2kernel.scripting.ErrorInfo"/>
+ <script language="javascript" name=""><![CDATA[
+
+ ]]></script>
+</cristalscript>
diff --git a/src/main/resources/boot/SC/SetWorkflow.xml b/src/main/resources/boot/SC/SetWorkflow.xml
new file mode 100644
index 0000000..88a061f
--- /dev/null
+++ b/src/main/resources/boot/SC/SetWorkflow.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cristalscript>
+ <output name="errors" type="com.c2kernel.scripting.ErrorInfo"/>
+ <script language="javascript" name="SetWorkflow"><![CDATA[
+ importClass(Packages.com.c2kernel.lookup.DomainPath);
+
+ // 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);
+ } catch (e) {
+ throw wfDefName+" is not a valid item";
+ }
+
+ // Make sure it has the right properties to be a composite activity desc
+ var itemType = wfItem.getProperty("Type");
+ var complex = wfItem.getProperty("Complexity");
+ if (!itemType.equals("ActivityDesc"))
+ throw wfDefName+" is not an activity description";
+ if (!complex.equals("Composite"))
+ throw wfDefName+" is not a composite activity description";
+
+ // 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);
+
+ ]]></script>
+</cristalscript>