我可以通过外部SOAP调用启动Service Now工作流吗?
我想调用ServiceNow SOAP web服务来启动特定web服务的实例我可以通过外部SOAP调用启动Service Now工作流吗?,soap,workflow,servicenow,Soap,Workflow,Servicenow,我想调用ServiceNow SOAP web服务来启动特定web服务的实例 我可以找到像incident.do这样的函数的WSDL,但似乎缺少找到合适的表/端点以启动工作流所需的步骤 如果您想通过SOAP启动工作流,我认为唯一的方法是创建一个或一个 在那里,你必须定义一个脚本来启动你的工作流程 var w = new Workflow(); var context = w.startFlow(id, current, current.operation(), getVars()); 在wik
我可以找到像incident.do这样的函数的WSDL,但似乎缺少找到合适的表/端点以启动工作流所需的步骤 如果您想通过SOAP启动工作流,我认为唯一的方法是创建一个或一个 在那里,你必须定义一个脚本来启动你的工作流程
var w = new Workflow();
var context = w.startFlow(id, current, current.operation(), getVars());
在wiki文章中,您可以找到用于工作流的API方法。如果您想通过SOAP启动工作流,我认为唯一的方法是创建或 在那里,你必须定义一个脚本来启动你的工作流程
var w = new Workflow();
var context = w.startFlow(id, current, current.operation(), getVars());
在wiki文章中,您可以找到用于工作流的API方法。棘手的一点是将变量放入工作流中。 虽然这听起来很容易,但事实并非如此 如果您的工作流在表sc_req_项上运行(如果您正在处理请求实现,则可能会出现这种情况),则首先需要将属性(sys_properties)glide.workflow.enable_input_variables设置为true,否则,您将无法向工作流中添加正常的输入变量 然后,将输入变量添加到工作流中。注意,您有一些漂亮的数据类型。例如,请注意“数据结构”类型。 所有输入变量都被视为custome列(实际上它们是特定于workflw的表的列)。这就是为什么名字以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);
还请注意,工作流不一定需要在表上运行。
要实现这一点,请在定义工作流时选择“全局”作为表名。棘手的一点是将变量放入工作流中。 虽然这听起来很容易,但事实并非如此 如果您的工作流在表sc_req_项上运行(如果您正在处理请求实现,则可能会出现这种情况),则首先需要将属性(sys_properties)glide.workflow.enable_input_variables设置为true,否则,您将无法向工作流中添加正常的输入变量 然后,将输入变量添加到工作流中。注意,您有一些漂亮的数据类型。例如,请注意“数据结构”类型。 所有输入变量都被视为custome列(实际上它们是特定于workflw的表的列)。这就是为什么名字以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);
还请注意,工作流不一定需要在表上运行。
要实现这一点,请在定义工作流时选择“全局”作为表名。您可能需要在ServiceNow实例上设置自定义脚本web服务。在这里,您可以使用我的回答从脚本启动工作流:@Joey,这样您就无法进行SOAP调用,无法向任何表写入条目并提供节点数据?您可能需要在ServiceNow实例上设置自定义脚本web服务。在这里,您可以使用我的答案从脚本启动一个工作流:@Joey,所以您不能进行SOAP调用,向任何表写入条目,并提供节点数据?