棘手的一点是将变量放入工作流程。
虽然这听起来很容易,但实际上并非如此。
如果您的工作流在表 sc_req_item 上运行(如果您正在处理 Request Fulfillment,这很可能),您首先需要将 Property (sys_properties) glide.workflow.enable_input_variables 设置为 true,因为否则,您将无法将正常的输入变量添加到您的工作流程中。
然后,将输入变量添加到工作流。请注意,您有一些漂亮的数据类型available there。例如,请注意“数据结构”类型。
所有输入变量都被视为自定义列(实际上它们是特定于工作流的表的列)。这就是名称以 u_ 开头的原因。
假设您定义了一个名为 u_dynamic_vars 的输入变量(数据类型“数据结构”)。
这里是如何调用工作流:
var wf_name = "Name of your workflow";
// Instantiate JSON machinery
var parser = new JSON();
//Declare an instance of workflow.js
var wf = new Workflow ();
//Get the workflow id
var wfId = wf.getWorkflowFromName (wf_name) ;
//Start workflow, passing along object containing name/value pairs mapping to inputs expected by the workflow
var vars = { } ;
// Prepare the JSON Datastructure
var obj ={"name":"George",
"lastname":"Washington"};
// Encode the data
vars.u_dynamic_vars = parser.encode(obj);
vars.u_new_email = "inject@new.com";
// Get a specific RITM
var gr = GlideRecord("sc_req_item");
gr.get("18d8e9740f4013002f504c6be1050e48");
gs.print(gr.number);
// Start the Workflow with a "current" record
wf.startFlow(wfId , gr , "update" , vars ) ;
// You may also pass null, then current is null.
wf.startFlow(wfId , null , "update" , vars ) ;
在工作流程中,您可以像这样解压缩数据:
// Let's unpack it. For some reason, intantiating the parse won't work here...
payload = JSON.parse(workflow.variables.u_dynamic_vars);
gs.print("payload.first_name:" + payload.name);
另请注意,工作流不一定需要在表上运行。
为此,请在定义工作流时选择“全局”作为表名。