gpt4 book ai didi

c# - Dynamics CRM - 在新创建实体的工作流中访问属性

转载 作者:太空宇宙 更新时间:2023-11-03 22:23:36 25 4
gpt4 key购买 nike

我正在创建一个 Dynamics CRM 工作流程序集,以便在对任何类型的另一条记录创建新注释时执行。我需要能够访问新创建的 Note 实体上的属性 Prop1 以完成其他任务。

以前我只访问过从字段或用户输入的值,但从未访问过新创建实体的属性。任何指导将不胜感激。

更新:这是关于 CRM 4.0 的。

更多信息,我在等待:最终,此工作流程序集将创建一封电子邮件,其中包含指向新创建的注释记录的父实体的链接。我需要获取的属性是 AnnotationId。创建注释记录后,我将根据新创建的注释的 AnnotationId 检索 ObjectId 和 ObjectTypeCode。(以防你好奇)

最佳答案

好的,如果您使用 4.0 自定义工作流而不是 3.0 标注,您应该添加一个工作流程序集,并使用工作流的上下文服务和执行上下文从新注释中提取值。

请参阅下面的示例,了解如何使用上下文服务和您当前执行上下文的 ID 访问记录(这应该是您的笔记)

    /// <summary>
/// The Execute method is called by the workflow runtime to execute an activity.
/// </summary>
/// <param name="executionContext"> The context for the activity</param>
/// <returns></returns>
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{

// Get the context service.
IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService));
IWorkflowContext context = contextService.Context;

// Use the context service to create an instance of CrmService.
ICrmService crmService = context.CreateCrmService(true);
BusinessEntity newNote = GetNote(crmService, context.PrimaryEntityId);

string noteAttrib;

noteAttrib = newNote.Properties.Contains("AnnotationId") ? ((Lookup)newNote.Properties["annotationid"]).name.ToString() : null;

return ActivityExecutionStatus.Closed;
}

GetNotes 方法将是通过 CRM 服务调用按 Id 查询注释的标准方法,这是一个从 MSDN 稍作修改以返回注释的示例:

private BusinessEntity getNote(ICrmService service, guid noteid)
{
// Create the column set object that indicates the fields to be retrieved.
ColumnSet cols = new ColumnSet();

// Set the columns to retrieve, you can use allColumns but its good practice to specify:
cols.Attributes = new string [] {"name"};

// Create the target object for the request.
TargetRetrieveAnnotation target = new TargetRetrieveAnnotation();

// Set the properties of the target object.
// EntityId is the GUID of the record being retrieved.
target.EntityId = noteid;

// Create the request object.
RetrieveRequest retrieve = new RetrieveRequest();

// Set the properties of the request object.
retrieve.Target = target;
retrieve.ColumnSet = cols;

// Execute the request.
RetrieveResponse retrieved = (RetrieveResponse)service.Execute(retrieve);
return RetrieveResponse;
}

关于c# - Dynamics CRM - 在新创建实体的工作流中访问属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2231800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com