5

我有一个自定义工作流活动,它根据传递的输入参数(实体名称和名称)创建记录。现在,我希望能够将创建的记录作为输出参数传递。但是要声明一个 EntityReference 类型的 OutArgument,我必须设置 ReferenceTarget 属性。由于我不知道正在创建哪种实体类型,因此我希望能够动态设置此属性。当我尝试在“ReferenceTarget”属性中使用属性或变量时,它无法识别它。

我该怎么做呢 ?请帮忙。

[Input("Entity Name")]
public InArgument<string> EntityName { get; set; }

[Input("Name")]
public InArgument<string> Name { get; set; }

[Output("Created Record")]
[ReferenceTarget("contact")]     <<=== how do i set this dynamically??
public OutArgument<EntityReference> CreatedRecord { get; set; }
4

5 回答 5

0

据我所知你不能,我怀疑这是为了支持工作流编辑器的行为,它怎么知道要呈现哪些选项?

当我过去遇到这种情况时,我创建了一个可视化的工作室模板,我可以使用它来快速生成我需要的各种版本。

于 2012-10-15T08:14:56.090 回答
0

最好的解决方法(不是一个简洁的方法)是创建与您怀疑可能需要作为 ReferenceTarget 传递的许多不同实体类型一样多的输入参数,然后根据工作流程中的条件调用自定义工作流程活动并设置 apt 输入参数,然后在工作流的 Execute 方法中,您可以检查哪个输入参数不是空白并进行相应处理。

工作流输入参数保留在开发人员内部,因此只要您完成工作并在不同场景中灵活使用相同的自定义工作流活动,尤其是当您不知道必须处理哪种类型的实体引用时,它就可以了和。

于 2015-03-19T18:17:30.750 回答
0

到目前为止,这实际上是不可能的,但是有这个解决方法。

我建议创建一个自定义实体调用Context,并引用您计划传递的所有输入参数。并填充context[""]asEntityReference以将其作为输出返回。

[Output("Created Record")]
[ReferenceTarget("new_context")]
public OutArgument<EntityReference> CreatedRecord { get; set; }

//set whatever you wanted to export
var entity = new Context();
entity["new_contact"] = ? //populate contact if created as per input
entity["new_account"] = ? //populate account if created as per input
// and so on
于 2019-11-28T08:20:16.997 回答
0

EntityReference 本质上具有目标实体类型。你无法改变这一点。如果需求是动态的,您最好启动插件或在工作流程序集中执行后续逻辑。

于 2015-09-10T21:48:30.833 回答
-1
//Set lookup for Account(Customer)
[RequiredArgument]
[Input("Select Account to Assign")]
[ReferenceTarget("account")]
public InArgument<EntityReference> account { get; set; }
于 2013-01-25T16:28:55.407 回答