打开记录时自动触发工作流程

dynamics-crm-2011 dynamics-crm-2013 dynamics-crm-online dynamics-crm-2015

822 观看

3回复

184 作者的声誉

有什么方法可以在每次打开任何实体的记录时自动触发自定义工作流程活动?

作者: Mani 的来源 发布者: 2016 年 3 月 19 日

回应 (3)


2

3826 作者的声誉

决定

当然,您可以使用ExecuteWorkflow来自在Form Load上运行的一些JavaScript 的请求。这是一个ExecuteWorkflow从JavaScript 调用的示例。

http://www.mscrmconsultant.com/2013/03/execute-workflow-using-javascript-in.html

作者: Josh Painter 发布者: 19.03.2016 06:36

1

1960 作者的声誉

您可以使用Plugin“自定义工作流”代替“自定义工作流”,并在“检索”消息上进行注册。

public void Execute(IServiceProvider serviceProvider)
{
// Obtain the execution context from the service provider.
Microsoft.Xrm.Sdk.IPluginExecutionContext context = (Microsoft.Xrm.Sdk.IPluginExecutionContext)
    serviceProvider.GetService(typeof(Microsoft.Xrm.Sdk.IPluginExecutionContext));

if (context.Depth == 1)
{
    IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
    IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

    // Obtain the target entity from the input parmameters.
    EntityReference entity = (EntityReference)context.InputParameters["Target"];

    ColumnSet cols = new ColumnSet(
                         new String[] { "lastname", "firstname", "address1_name" });

    var contact = service.Retrieve("contact", entity.Id, cols);

    if (contact != null)
    {
        if (contact.Attributes.Contains("address1_name") == false)
        {
            Random rndgen = new Random();
            contact.Attributes.Add("address1_name", "first time value: " + rndgen.Next().ToString());
        }
        else
        {
            contact["address1_name"] = "i already exist";
        }
        service.Update(contact);
    }
  }
}

在此处输入图片说明

CRM 2011 –检索插件

作者: Dot_NET Pro 发布者: 20.03.2016 06:06

2

14752 作者的声誉

如果您要触发自定义工作流程活动,而无需执行任何与之相关的工作流程,则建议您创建一个自定义动作。它与工作流程非常相似,但是CRM会创建一个自定义的端点供您调用。它消除了跟踪工作流ID的需要...

作者: Daryl 发布者: 20.03.2016 12:47
32x32