您的位置:首页 > 其它

如何在Dynamic CRM 2011中使用自定义Workflow

2012-11-02 15:28 204 查看
需求:创建一个workflow ,每隔三个月执行一次对满足要求的CRM数据进行更新。

经过调查实践发现CRM系统中可自定义的workflow不能进行无限的循环,最多只能执行7次。

只能在VS创建自定义workflow实现无限循环,集成到CRM.

实现步骤:

创建自定义workflow activity ,实现对CRM数据更新。

创建自定义workflow,实现整个流程。

集成自定义workflow到CRM.

 

创建自定义workflow activity

启动 Microsoft Visual Studio 2010。

在"文件"菜单上,单击"新建",然后单击"项目"。

在"新建项目"对话框的"已安装的模板"窗格中,选择"Visual C#"下的"工作流",然后选择"活动库"。

指定解决方案的名称和位置,然后单击"确定"。

导航到"项目"菜单并选择"属性"。在"应用程序"选项卡上,指定".NET Framework 4"作为目标框架。

添加对
Microsoft.Xrm.Sdk.dll

Microsoft.Xrm.Workflow.dll
程序集的引用。

删除项目中的 Activity1.xaml 文件。

将类文件 (.cs) 添加到项目中。在解决方案资源管理器中,右键单击项目,选择"添加",然后单击"类"。在"添加新项"对话框中,键入类的名称,然后单击"添加"。

打开类文件,然后添加以下 using 指令:
using System.Activities;

using Microsoft.Xrm.Sdk;

using Microsoft.Xrm.Sdk.Workflow;

使该类继承自 CodeActivity 类:
public
class SampleCustomActivity : CodeActivity

通过添加Execute方法为类添加功能:
protected
override
void Execute(CodeActivityContext context)

{

//Activity code

Update Data here

}

编译项目以创建程序集 (.dll)。

 

 

创建自定义workflow

若要使用在 Microsoft Dynamics CRM 之外创建或修改的 XAML 工作流,请确保:

您的用户帐户在 Microsoft Dynamics CRM 中具有 Deployment Administrator 权限。

在 Microsoft Dynamics CRM 服务器上启用了声明性工作流。                     PowerShell($setting.AllowDeclarativeWorkflows="True")

创建工作流项目

在 Microsoft Visual Studio 中的"文件"菜单上,选择"新建",然后单击"项目"。

在"已安装模板"下展开"Visual C#",然后单击"工作流"。

单击"活动库",选择".NET Framework 4",为项目指定名称和位置,然后单击"确定"。

在"解决方案资源管理器"中,右键单击"活动库",然后单击"添加引用"。

单击"浏览",并找到 Microsoft.Xrm.Sdk.dll 和 Microsoft.Xrm.Sdk.Workflow.dll 文件。选择这些文件并将其添加到项目。

进行工作流的定制。



集成自定义workflow到CRM.

使用插件注册工具来注册自定义工作流活动程序集到CRM。

构建 Plug-in Registration 工具。您可在 SDK\Tools\PluginRegistration 文件夹中找到该工具的源代码。若要构建和使用插件注册工具,您必须首先安装
Windows Identity Foundation

用户帐户必须具有系统定制员或系统管理员角色。



导入自定义的workflow

%TrainingKit%\Labs\WorkflowVS2010\Sources\Assets\WorkflowXamlTool.

打开 WorkflowXamlTool.sln, 修改workflow name and primaryentity ,执行solution.

 

var newWF = new
Entity("workflow");

newWF.Attributes.Add("name", "On test 10311");

newWF.Attributes.Add("type", new
OptionSetValue(1));

newWF.Attributes.Add("scope", new
OptionSetValue(4));

newWF.Attributes.Add("category", new
OptionSetValue(0));

newWF.Attributes.Add("primaryentity", "abc_dummy");

newWF.Attributes.Add("xaml", content2);

newWF.Attributes.Add("ondemand", true);

 

try

{

_serviceProxy.Create(newWF);

 

MessageBox.Show("Workflow successfully imported.", "Import", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

catch (FaultException ex)

{

}



选择自定义xaml 文件,导入。

 

 

 

如何更新workflow activity dll

停止MSCRMAsyncService服务



执行iisreset – stop

替换dll 文件到C:\Program Files\Microsoft Dynamics CRM\Server\bin\assembly.

执行iisreset – start

开启MSCRMAsyncService服务

 

如何调试workflow activity

Attach 进程CrmAsyncService.exe,执行workflow.

 



 

Workflow activity如何更新数据

IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();

IOrganizationService service = serviceFactory.CreateOrganizationService(wfContext.UserId);

InfluencerContext context = new
InfluencerContext(service);

 

context.ClearChanges();

context.Attach(influencer);

context.UpdateObject(influencer);

context.SaveChanges();

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: