summaryrefslogtreecommitdiff
path: root/src/main/resources/boot/SC/LocalObjectDefCreator.xml
blob: b30037b2184b85ed65a3d6849fc5cadc7c200e46 (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
<?xml version="1.0" encoding="UTF-8"?>
<cristalscript>
	<output name="errors" type="org.cristalise.kernel.scripting.ErrorInfo" />
	<script language="javascript" name="LocalObjectDefCreator"><![CDATA[
		importClass(org.cristalise.kernel.process.Gateway);
		importClass(org.cristalise.kernel.process.Bootstrap);
		importClass(org.cristalise.kernel.lifecycle.CompositeActivityDef);
		importClass(org.cristalise.kernel.lifecycle.ActivityDef);
		importClass(org.cristalise.kernel.lookup.DomainPath);
		importClass(org.cristalise.kernel.process.resource.DefaultResourceImportHandler);
	
		var name = job.getOutcome().getField("ObjectName");
		var folder = job.getOutcome().getField("SubFolder");
		var handler = new DefaultResourceImportHandler(job.getActPropString("NewType"));
		// Find the root of that object type
		var domPath = handler.getTypeRoot();
		if (folder != null) domPath = domPath + "/" + folder;
		
		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;
		}
				
		// If this script is running in the Cristal GUI, open the new item.
		try {
			var tree = Packages.org.cristalise.gui.MainFrame.treeBrowser;
			if (tree != null) // open new item in the gui
				tree.push(new DomainPath(domPath+"/"+name));
		} catch (e) { // hopefully catch any classloading errors on headless systems. hopefully.
		}
			
		]]></script>
</cristalscript>