我需要从Dynamics CRM 4工作流程获取记录的GUID。这是在工作流程执行期间创建的记录。我想写一个接受查找的w / f程序集并返回一个包含GUID的字符串(这对我来说已足够)。但是,程序集中的Lookup必须指定实体的类型。由于许多实体已经存在这种要求,而且许多其他实体都会在没有通知的情况下由客户创建,这对我来说无效。
是否有任何方法可以轻松地执行此操作,或以任何方式为将接受任何实体类型的工作流程程序集创建查找参数?
答案 0 :(得分:1)
您最好的选择是创建一个post创建插件,将GUID设置为自定义字段(new_myguid),然后您的工作流将能够在执行后立即读取该字段。
答案 1 :(得分: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;
}