如何在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 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();
经过调查实践发现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();
相关文章推荐
- 如何使用SharePoint Designer创建自定义的Workflow?
- 关于如何使用word自定义模板
- 如何创建、使用以及解析自定义注解
- android学习之三:如何使用自定义颜色
- geoserver如何配置样式,使图层使用自定义图片?
- [原创]如何使用Css样式自定义一个DataGrid的风格
- ASP.NET - 如何:使用自定义函数对 ASP.NET 服务器控件进行验证
- ABAP–如何在’REUSE_ALV_GRID_DISPLAY’使用自定义F4帮助,返回多个字段以及计算修改其他字段
- 如何在自定义Listener(监听器)中使用Spring容器管理的bean - fjdingsd
- 如何使用自定义的 number range objects
- JAVA如何使用自定义异常
- 扫描识别工具Dynamic Web TWAIN使用教程:如何自定义Web TWAIN对象
- JSP中如何使用自定义的标签库
- ios-day09-02(QQ好友列表。自定义UITableViewHeaderFooterView、如何控制UITableView每一组的展开和闭合、代理的使用)
- FusionCharts使用教程二:如何自定义FusionCharts图表上的工具提示
- 如何使用YYCache存储自定义对象
- 请教如何在QT自定义线程类中使用QTimer定时器功能
- 如何在Listener(监听器)中使用spring容器管理的bean(自定义监听使用spring管理的bean)
- 如何加载和使用配置文件中的自定义实体属性
- xib自定义的控件如何在xib中使用