我们当前正在使用SSIS软件包和Kingswaysoft,使用来自旧系统的数据更新Dynamics365 CRM环境。在此导入过程中,我们必须禁用活动过程,并在导入过程完成后将它们重新打开。这很容易出错,因为有时人们会忘记重新打开流程,而我们简单地也拥有太多的流程。
例如,如果我导入120万条记录,我将不希望120万个工作流也能正常运行,而这样的场景使CRM环境陷入瘫痪和/或使LogBase表膨胀到我们拥有的地步让MS清除它们。
这里的最佳做法是什么?我们是否应该以编程方式获取所有活动进程的列表,禁用它们,并将该列表存储在某个地方,然后在导入过程完成后,再次启用这些进程?如果确实需要以编程方式进行操作,那我们该怎么做?
答案 0 :(得分:0)
您可以将需要禁用的所有工作流程添加到解决方案中。该解决方案将充当工作流的“分组”机制。这样,当您需要运行导入时,您知道需要禁用解决方案中引用的所有工作流程。
如果您想花费更多的时间来实用地禁用工作流程,则可以创建一个调用Dynamics 365 API并更新工作流程状态的控制台应用程序。
请求
PATCH [Organization URI]/api/data/v9.1/workflows(00000000-0000-0000-0000-00000000000)
HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"statecode": 0, // Draft = 0 | Activated = 1
"statuscode": 0, // Draft = 0 | Activated = 1
}
有关使用Web API更新记录的详细信息,请参见Update and delete entities using the Web API: Basic Update
有关工作流状态码和状态码选项设置值,请参见workflow EntityType: Properties