我可以通过外部SOAP调用启动Service Now工作流吗?

我可以通过外部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

我想调用ServiceNow SOAP web服务来启动特定web服务的实例


我可以找到像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调用,向任何表写入条目,并提供节点数据?