CRM 4 Recurring Workflow - 定时执行workflow
普通的workflow,设置简单,开发也不复杂,SDK里面带有例子。
最简单的CRM 4 workflow:
[CrmWorkflowActivity("My Demo workflow")]
public partial class MyDemo : Activity
{
public MyDemo()
{
}
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
try
{
//Debugger.Break();
IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService));
IWorkflowContext context = contextService.Context;
// Create the CRM service
ICrmService crmService = context.CreateCrmService();
//get all contacts
// QueryExpression query = new QueryExpression();
using (FileStream fileStream = new FileStream(@"C:\inetpub\wwwroot\cwf.log", FileMode.Append))
{
byte[] data = System.Text.Encoding.UTF8.GetBytes(DateTime.Now.ToString());
fileStream.Write(data,0,data.Length);
}
}
catch (Exception exc)
{
throw;
}
return ActivityExecutionStatus.Closed;
}
}
编译成dll
注册方式跟注册plugin一样,用现成的Plugin Registration tool 即可。
然后到Workflow page去设置,navigate to Settings->Workflow
新建一个Workflow, 并选择一个entity.
其他设置:

图中第二步的Duration设置为1 minute,仅为测试,CRM 实际允许的是最少60分钟,否则CRM为认为你这个workflow是一个无限的workflow,并会自动停止。
over
参考:
http://gonzaloruizcrm.blogspot.com/2011/05/quite-often-we-have-business-process.html
如何打开CRM trace : http://support.microsoft.com/kb/907490/en-us
推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架