summaryrefslogtreecommitdiff
path: root/resources/boot/SC/SetWorkflow.xml
blob: 5dbfa6d6acd841317bd3c02f2f192ceb2a123a97 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?xml version="1.0" encoding="UTF-8"?>
<cristalscript>
	<output name="errors" type="com.c2kernel.scripting.ErrorInfo"/>
	<script language="javascript" name=""><![CDATA[

		importClass(Packages.com.c2kernel.lookup.DomainPath);

		var job = bsf.lookupBean("job");
		var item = bsf.lookupBean("item");
		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);
		} 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();
			}
		}

		if (!errorBuffer.getFatal()) {
			// 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;
		]]></script>
</cristalscript>