我需要创建一个JS-Library,它可以使用适用于Dynamics CRM 2016的新WebApi运行工作流程:
我需要从我的代码启动工作流程。 (工作流程应该是“实时”)而不是异步。我将在表单上构建我的函数调用到Ribbon。 如果有人可以帮助我,我会更感恩,因为我搜索了所有的互联网,但是找不到如何解决这个问题,除了从我发现这种方法的上述链接
但我不确定如何使用这种方法?一旦agin它必须是“实时” 我找到了解决方案,例如:
-https://processjs.codeplex.com /
但这对我不起作用,因为它以异步方式运行工作流。它必须使用上面提供的链接中的Web API。我认为此Web API仅适用于Microsoft Dynamics 2016
答案 0 :(得分:2)
既然我们已经采取了行动,那么就不再需要从javascript启动工作流了。我过去常常使用使用SOAP api的javascript库,但web api操作更容易使用。并且以与工作流相同的方式创建操作。要创建操作,请转到创建工作流,而不是从下拉选择操作中选择工作流。你最终会得到一个这样的表格。 记住您将对其运行的唯一名称和实体。在这个例子中,我将使用图中所示的工作流程,该工作流程针对联系人记录运行。 从javascript我现在可以发布POST到
https://<your-crm-server>/api/data/v8.0/contacts(<contact-id>)/Microsoft.Dynamics.CRM.wa_GetContactSyncStatus
这是一个针对联系人并运行wa_GetContactSyncStatus操作的操作,将值更改为您需要的值。另外作为旁注,这是针对2016服务器的任何东西,以后将有一个不同的api版本供您使用。请参阅crm实例中的开发人员资源页面,找出您的web api的网址。
操作将异步运行,只要您的javascript请求设置为同步,您的请求将在操作完成后返回。
另一方面注意,如果你有动作调用另一个非同步的工作流程,它很可能会在异步后台工作流程之前返回。
答案 1 :(得分:1)
我经常这样做:将流程设为close
,它们是专为此目的而设计的(单击功能区按钮并通过WebAP调用 工作流程;它们也是成为插件注册的自定义消息,这在某些情况下很好。)
要进行同步调用,您只需通过调整Action
语句使XmlHttpRequest
同步:
open
我从不使用库来调用webapi,所以不幸的是我无法建议任何特定于库的代码片段,但我认为任何合适的库都允许您使XHR请求同步。
(强制警告:同步请求不是最理想的,浏览器会抱怨它们,我希望Chrome特别会在将来某个时候开始破坏同步代码。)
答案 2 :(得分:1)
JS中的Soap Request:
RunWorkflow(Xrm.Page.data.entity.getId(),"21E95262-5A36-46CA-B5B5-3F5AA539A9AF","https://org.dynamics.com");
示例:
{{1}}