转自 图片上的博客地址:
在Dynamics CRM系统中支持可配置的工作流功能,该功能类似Plugin可以根据实体的某些条件而自动触发。比如当实体创建时或实体的某个属性被更改时,当然还可以直接手动触发该流程。
本文来介绍下如何开发自定义的工作流活动,自定义的工作流活动能很好的弥补系统自带活动的不足。且自定义的工作流活动灵活,往往能实现很多复杂需求,所以掌握它还是非常有必要的。
接下来我们来看看具体的制作过程:
![](https://img-my.csdn.net/uploads/201206/07/1339037454_2087.jpg)
图1
![](https://img-my.csdn.net/uploads/201206/07/1339037454_9306.jpg)
图2
![](https://img-my.csdn.net/uploads/201206/07/1339037454_4226.jpg)
图3
![](https://img-my.csdn.net/uploads/201206/07/1339037454_9001.jpg)
图4
![](https://img-my.csdn.net/uploads/201206/07/1339037454_5815.jpg)
图5
![](https://img-my.csdn.net/uploads/201206/07/1339037484_4337.jpg)
图6
![](https://img-my.csdn.net/uploads/201206/07/1339037484_1226.jpg)
图7
![](https://img-my.csdn.net/uploads/201206/07/1339037484_1949.jpg)
图8
![](https://img-my.csdn.net/uploads/201206/07/1339037484_1918.jpg)
图9
![](https://img-my.csdn.net/uploads/201206/07/1339037484_8256.jpg)
图10
![](https://img-my.csdn.net/uploads/201206/07/1339037504_9100.jpg)
图11
![](https://img-my.csdn.net/uploads/201206/07/1339037504_4138.jpg)
图12
![](https://img-my.csdn.net/uploads/201206/07/1339037504_8083.jpg)
图13
![](https://img-my.csdn.net/uploads/201206/07/1339037504_4514.jpg)
图14
自定义工作流代码
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Activities;
-
- using Microsoft.Xrm.Sdk;
- using Microsoft.Xrm.Sdk.Workflow;
-
- namespace MyActivity
- {
- public sealed class MyActivity1:CodeActivity
- {
- [Input("Account Name")]
- public InArgument<string> AccountName { get; set; }
-
- [Output("Account Id")]
- public OutArgument<string> AccountId { get; set; }
-
-
- protected override void Execute(CodeActivityContext executionContext)
- {
- IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
- IOrganizationServiceFactory factory = executionContext.GetExtension<IOrganizationServiceFactory>();
- IOrganizationService service = factory.CreateOrganizationService(null);
- Guid tmp=Guid.Empty;
-
- Entity account = new Entity("account");
- account.Attributes.Add("name", AccountName.Get(executionContext));
- tmp=service.Create(account);
-
- AccountId.Set(executionContext, tmp.ToString());
-
-
- }
- }
- }
小结
用自定义的工作流活动能灵活的获取系统中任意目标实体的属性值,用自定义工作流活动搭配系统标准的工作流活动能完成一些业务复杂的任务。