如何在所有任务完成后完成SharePoint 2010状态机工作流?

如何在所有任务完成后完成SharePoint 2010状态机工作流?,sharepoint,sharepoint-2010,workflow,Sharepoint,Sharepoint 2010,Workflow,我是SharePoint的新手。对不起,如果我的问题答案是显而易见的 第一个问题:我有一个状态机工作流,它创建了大约30个任务(其中一些任务是在以前使用OnTaskChnage活动完成后创建的)。所有任务完成后,我必须记录任务更改并完成工作流。我看到了两种方法: 1) 我可以为30个任务中的每一个创建eventDrivenActivity OnTaskChanged --Code (log changes) --If (allTaskCompleted()) //not code, b

我是SharePoint的新手。对不起,如果我的问题答案是显而易见的

第一个问题:我有一个状态机工作流,它创建了大约30个任务(其中一些任务是在以前使用OnTaskChnage活动完成后创建的)。所有任务完成后,我必须记录任务更改并完成工作流。我看到了两种方法:

1) 我可以为30个任务中的每一个创建eventDrivenActivity

OnTaskChanged 
--Code (log changes)
--If (allTaskCompleted())     //not code, but activity, what use 
----then SetState(Completed); //condition allTaskComplete() from code
但我认为这不是一个好方法,因为我不能重用代码并执行30个相同的步骤

2) 我可以登录代码,然后如果需要,从代码中完成工作流,但我不知道如何才能做到这一点。我可以从代码中取消工作流

SPWorkflowManager.CancelWorkflow(itemWorkflow);
但是我找不到任何信息,也找不到如何完成它(或者将state设置为“Completed”)。可能是我做错了什么,工作流必须自己完成,然后所有任务都完成了,但它没有发生(它停留在“进行中”)

第二个问题:是否有可能在每次更改工作流任务后运行一些代码(据我所知,OnWorkflowChanged和OnWorkflowModified不适合我的需要),或者以编程方式将处理程序添加到我的30个任务中(根本不在任务列表中,但仅针对我的任务)

先谢谢你。 顺致敬意, 米哈伊尔

PS:对不起,我写了。英语不是我的母语