WorkflowScript class: Difference between revisions
From Catglobe Wiki
More actions
CGHelpdesk (talk | contribs) No edit summary  | 
				CGHelpdesk (talk | contribs) No edit summary  | 
				||
| Line 32: | Line 32: | ||
{{CGscriptProperties_Template|ReturnType=number|Name=UniqueId|HasGetter=1|Description=The resource id of the workflow.}}  | {{CGscriptProperties_Template|ReturnType=number|Name=UniqueId|HasGetter=1|Description=The resource id of the workflow.}}  | ||
}}  | }}  | ||
=== '''Examples''' ===  | === '''Examples''' ===  | ||
'''Ex 1:''' <source lang="javascript">  | '''Ex 1:'''  | ||
<source lang="javascript">  | |||
/*  | /*  | ||
  * MAKE A COPY OF A SPECIFIED WORKFLOW  |   * MAKE A COPY OF A SPECIFIED WORKFLOW  | ||
| Line 132: | Line 134: | ||
  return dest;  |   return dest;  | ||
}  | }  | ||
</source>  | |||
'''Ex 2:'''  | |||
<source lang="javascript">  | |||
ProfilingResult pr;  | |||
WorkflowScript wf = new WorkflowScript(11951195);  | |||
pr = wf.ProfilingResult;  | |||
pr.EnableProfiling = true;  | |||
wf.Call();  | |||
print(pr.Script); 			// {print("hello world");}  | |||
print(pr.CompileTime);			// 0.0595  | |||
print(pr.CountResult);		 	// {"1": {"4": 1}}   | |||
print(pr.DependecyGraphTime);  	        // 0  | |||
print(pr.TimeResult); 			// {"1": {"-1": 0.0034, "4": 0.0034}}  | |||
print(pr.WhereExpTime);  		// 0  | |||
</source>  | </source>  | ||
Revision as of 11:03, 17 October 2013
WorkflowScript
Class to manipulate workflows.
Constructors
- (number resourceId "Resource id of the script to load") - Load existing workflow
 - (string script "The script to use.", bool isTabulation "Set if this is a tabulation script or not") - Make new workflow
 
Methods
- AnyType Call(params AnyType) - Run the script with the given arguments
 - AnyType Invoke(array arguments "The arguments to the script") - Run the script with the given arguments
 - Empty Save(string name "Name of the resource. If empty it will not change the existing name. Required for new scripts.", number parentResourceId "Parent of the resource. If 0 it will not change the existing. Required for new scripts.") - Save the current workflowscript.
 - Empty Save() - Save the current workflowscript using the existing name and parent.
 - string ToString() - The string representation of the object.
 
Properties
- bool BatchMode { get; set; } - Get/Set the if the non-tabulation script should run in batch mode.
 - string CgScript { get; set; } - The script.
 - number DataCache { get; set; } - Get/Set the DataCache under which to run the script under. 0 means clear setting. Only for tabulation scripts.
 - bool EnableProfiling { get; set; } - Set to true to enable profiling.
 - number ImpersonatedUser { get; set; } - Get/Set the user under which to run the script under. Must have Full access to the user to set as impersonation. 0 means clear impersonation.
 - string ObjectTypeName { get;  } - The name of the type of object.
 - ProfilingResult ProfilingResult { get;  } - Returns the result of the Profiling.
 - number Questionnaire { get; set; } - Get/Set the Questionnaire under which to run the script under. 0 means clear setting. Only for non-tabulation scripts.
 - TypeInformation TypeInformation { get;  } - Get information about this class.
 - number UniqueId { get;  } - The resource id of the workflow.
 
Examples
Ex 1:
/*
 * MAKE A COPY OF A SPECIFIED WORKFLOW
 */
/* Input Parameters for this workflow */
// Required - Set values here
number sourceWorkflowRID;
string nameOfCopy;
number parentResourceId; 
/* Other variables */
bool isTabulation;
string CgScript;
bool BatchMode;
number ImpersonatedUser;
number Questionnaire;
number DataCache;
object error;
/* Checking the required parameters */
if(sourceWorkflowRID == empty) {
 print("Please set value for parameter: sourceWorkflowRID. Workflow failed.");
 return;
}
if(nameOfCopy == empty) {
 print("Please set value for parameter: nameOfCopy. Workflow failed.");
 return;
}
if(parentResourceId == empty) {
 print("Please set value for parameter: parentResourceId. Workflow failed.");
 return;
}
/* Now doing the job: Making the copy */
object source = new WorkflowScript(sourceWorkflowRID);
object dest;
// Check that the source is Tabulation Script or non-Tabulation Script
try {
 if(source.DataCache != empty) // if throw error then the source is non-tabulation script
 isTabulation = true;
}
catch(error){
 // so the source is non-tabulation script
 isTabulation = false;
}
if(isTabulation == true) 
// The source is Tabulation Script
{
 // Get all properties of this Tabulation Script
 CgScript = source.CgScript;
 DataCache = source.DataCache;
 try 
 // because this property is not available for Tabulation Script in 581 version
 ImpersonatedUser = source.ImpersonatedUser;
 catch(error) {}
 
 dest = new WorkflowScript(CgScript, true);
 dest.DataCache = DataCache;
 
 try 
 // because this property is not available for Tabulation Script in 581 version
 dest.ImpersonatedUser = ImpersonatedUser;
 catch(error) {}
 
 // Save the copied one
 dest.Save(nameOfCopy, parentResourceId);
 
 print("Completed! The resource id of new copied one: " + dest.UniqueId); 
 
 return dest;
} 
// The source is non-Tabulation Script
else {
 // Get all properties of this non-Tabulation Script
 CgScript = source.CgScript;
 Questionnaire = source.Questionnaire;
 BatchMode = source.BatchMode;
 ImpersonatedUser = source.ImpersonatedUser;
 
 dest = new WorkflowScript(CgScript, false);
 dest.Questionnaire = Questionnaire;
 dest.BatchMode = BatchMode;
 dest.ImpersonatedUser = ImpersonatedUser;
 // Save the copied one
 dest.Save(nameOfCopy, parentResourceId);
 
 print("Completed! The resource id of new copied one: " + dest.UniqueId); 
 
 return dest;
}
Ex 2:
ProfilingResult pr;
WorkflowScript wf = new WorkflowScript(11951195);
pr = wf.ProfilingResult;
pr.EnableProfiling = true;
wf.Call();
print(pr.Script); 			// {print("hello world");}
print(pr.CompileTime);			// 0.0595
print(pr.CountResult);		 	// {"1": {"4": 1}} 
print(pr.DependecyGraphTime);  	        // 0
print(pr.TimeResult); 			// {"1": {"-1": 0.0034, "4": 0.0034}}
print(pr.WhereExpTime);  		// 0