我可以获取 CRM 工作流程中记录的 GUID 吗?

问题描述 投票:0回答:3

我需要从 Dynamics CRM 4 工作流程获取记录的 GUID。它是在工作流程执行期间创建的记录。我想编写一个 w/f 程序集,它接受查找并返回包含 GUID 的字符串(这足以满足我的目的)。但是,程序集中的 Lookup 必须指定实体的类型。由于许多实体已经存在该要求,并且对于客户将在没有通知的情况下创建的许多其他实体,这对我来说不起作用。

有什么方法可以轻松地做到这一点,或者有什么方法可以为接受任何实体类型的工作流程序集创建查找参数?

workflow-foundation dynamics-crm dynamics-crm-4 crm
3个回答
2
投票

您最好的选择是创建一个创建后插件,将 GUID 设置为自定义字段 (new_myguid),然后您的工作流程将能够在执行后立即读取该字段。


1
投票

您是对的,您无法从工作流设计器本地访问实体 ID,并且自定义活动将仅限于每个输入属性一个实体。

您可以实施 Focus 的建议,但您还需要每个实体上的自定义属性和插件。

我想我可能会做一个自定义活动,并有多个输入属性,所有属性都输出到单个输出属性。

类似这样的:

[CrmInput("Contact")]
[CrmReferenceTarget("contact")]
public Lookup Contact
{
    get { return (Lookup)GetValue(ContactProperty); }
    set { SetValue(ContactProperty, value); }
}
public static readonly DependencyProperty ContactProperty =
    DependencyProperty.Register("Contact", typeof(Lookup), typeof(YourActivityClass));

[CrmInput("Account")]
[CrmReferenceTarget("account")]
public Lookup Account
{
    get { return (Lookup)GetValue(AccountProperty); }
    set { SetValue(AccountProperty, value); }
}
public static readonly DependencyProperty AccountProperty =
    DependencyProperty.Register("Account", typeof(Lookup), typeof(YourActivityClass));

[CrmOutput("Entity ID")]
public string EntityID
{
    get { return (string)GetValue(EntityIDProperty); }
    set { SetValue(EntityIDProperty, value); }
}
public static readonly DependencyProperty EntityIDProperty =
    DependencyProperty.Register("EntityID", typeof(string), typeof(YourActivityClass));

protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
    Lookup[] lookups = new[] { Contact, Account };
    foreach (Lookup lookup in lookups)
    {
        if (lookup != null && lookup.Value != Guid.Empty)
        {
            EntityID = lookup.Value.ToString();
            break;
        }
    }

    return ActivityExecutionStatus.Closed;
}

0
投票

您可以获取记录URL并解析它以获取id。

record_url

© www.soinside.com 2019 - 2024. All rights reserved.