【发布时间】:2012-07-05 16:09:08
【问题描述】:
我一直在尝试以编程方式停止工作流程。 我在各种帖子和 msdn 中都阅读过,这可以通过更新来完成 通过更新请求的异步操作状态。 但是每次我更新请求。工作流卡在中间阶段,例如取消或暂停,并且没有达到最终状态。
有什么想法吗?
protected void ExecutePostAccountUpdate(LocalPluginContext localContext)
{
if (localContext == null)
{
throw new ArgumentNullException("localContext");
}
string fetchXML = "<fetch mapping='logical' count='50' version='1.0'>" +
"<entity name='asyncoperation'>" +
"<filter>" +
"<condition attribute='regardingobjectid' operator='eq' value='" +
localContext.PluginExecutionContext.PrimaryEntityId + "' />" +
"</filter>" +
"</entity>" +
"</fetch>";
EntityCollection col = localContext.OrganizationService.RetrieveMultiple(new FetchExpression(fetchXML));
if (col.Entities.Count > 0)
{
AsyncOperation a = (AsyncOperation)col[0];
a.StateCode = AsyncOperationState.Completed;
a.StatusCode = new OptionSetValue(32);
localContext.OrganizationService.Update(a);
}
}
【问题讨论】:
-
您的意思是您试图从该工作流中的代码中止一个工作流,还是您的意思是“从外部”中止一个工作流,例如在单独的代码中?可能值得发布一些您到目前为止所拥有的示例代码。
-
嘿,亚历克,我添加了示例代码,我试图从工作流程之外中止它,在这种情况下,我尝试使用插件。谢谢
-
StateCode和StatusCode通常不会对通用更新做出很好的响应。您是否尝试过发出SetStateRequest? -
不,在 msdn 中它是为使用更新而编写的,msdn.microsoft.com/en-us/library/gg309288.aspx 但我发现了发生了什么,更改工作流状态并不能阻止它。无论新状态是什么,工作流都会继续运行。但在这个过程的最后会有一个指示最终状态是什么。
标签: workflow dynamics-crm-2011