我需要创建一个JS-Library,它可以使用适用于Dynamics CRM 2016的新WebApi运行工作流程:
我需要从我的代码启动工作流程 . (工作流程应该是“实时”)而不是异步 . 我将在表单上构建我的函数调用到Ribbon . 如果有人可以帮助我,我会更感恩,因为我搜索了所有的互联网,但无法找到如何解决这个问题,除了从上面的链接,我发现这个方法
但我不确定如何使用这种方法?一旦agin必须“实时”,我找到了解决方案,例如:
-https://processjs.codeplex.com/
但这对我不起作用,因为它以异步方式运行工作流 . 它必须使用上面提供的链接中的Web API . 我认为此Web API仅适用于Microsoft Dynamics 2016
3 回答
既然我们已经采取行动,那么就不再需要从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的URL是什么 .
该操作将异步运行,只要您的javascript请求设置为同步,您的请求将在操作完成时返回 .
另一方面注意,如果您的操作调用另一个非同步的工作流程,它很可能会在您的异步后台工作流程之前返回 .
我经常这样做:将流程设置为
Action
,它们是专门为此目的而设计的(单击功能区按钮并通过WebAP调用本质上是工作流程;它们也成为插件注册的自定义消息,这在某些情况下很好) .要进行同步调用,您需要做的就是通过调整
open
语句使XmlHttpRequest
同步:我从不使用库来调用webapi,所以很遗憾我无法建议任何特定于库的代码片段,但我认为任何像样的库都可以让你使XHR请求同步 .
(强制警告:同步请求不是最理想的,浏览器会抱怨它们,我希望Chrome特别会在未来的某个时刻开始打破同步代码) .
JS中的肥皂请求:
例: