回答

1

您可以使用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); 
    } 
    } 
} 

enter image description here

CRM 2011–Retrieve Plugin

2

如果你想触发自定义工作流活动,并且不需要做任何事情在它的工作流程相关的,我建议你创建一个自定义操作。它与工作流非常相似,但CRM将为您创建一个自定义终点。它消除了跟踪工作流ID的需要...