以编程方式取消SharePoint工作流

Dan*_*ell 7 c# sharepoint workflow

在我想要处理的工作流内部和错误,例如无法查找我想要分配任务的用户名.因此用户名不存在,我将通过电子邮件通知管理员,将其记录到工作流历史记录中,然后终止工作流.

问题是,如何从工作流内部终止工作流,就像我单击SharePoint网页上的"终止工作流"按钮一样.

[更新]我尝试过SPWorkflowManager.CancelWorkflow()确实取消了工作流程,但没有立即取消.取消运行的代码会发生什么,但随后我的工作流程继续创建下一个任务,然后在下一个任务onTaskChanged活动时进入休眠状态.只有一旦它进入睡眠状态,工作流程才会终止,而不是在调用CancelWorkflow时.

这导致了一个明显的问题,即我不希望创建下一个任务.我正在调用CancelWorkflow,因为我希望它取消当时和那里.

Dev*_*inB 9

这个MSDN线程有很多建议:

以编程方式终止SharePoint工作流

这是一篇博客文章,其中包含完全相同的信息: 取消SharePoint工作流程

最后,最具体地说,您需要使用静态方法: SPWorkflowManager.CancelWorkflow(SPWorkflow workflowInstanceToBeCancelled)

编辑

CancelWorkflow是一个静态类,所以我修改了调用.

  • 但是当你正确地调用它时它可以正常工作,对吗?也就是说,当你在类本身上调用它时SPWorkflowManager.CancelWorkflow(SPWorkflow workflowInstance); 然后它做它应该做的事情. (2认同)