C# 带有输出参数的Dynamics CRM工作流继承
我继承了一个CRM项目,其中有几个工作流执行非常类似的任务,基本上它们接收一个输入字符串并输出该字符串的OptionSet值。由于我们需要一个新的工作流程为每个OptionSet有很多重复的代码,我希望改善。我的方法是创建一个抽象类C# 带有输出参数的Dynamics CRM工作流继承,c#,dynamics-crm,C#,Dynamics Crm,我继承了一个CRM项目,其中有几个工作流执行非常类似的任务,基本上它们接收一个输入字符串并输出该字符串的OptionSet值。由于我们需要一个新的工作流程为每个OptionSet有很多重复的代码,我希望改善。我的方法是创建一个抽象类 公共抽象类MyBaseWorkflow:CodeActivity { 受保护的密封覆盖无效执行(CodeActivityContext executionContext) { //这是伪代码,我知道它是有效的,最后一行就是问题所在 var输入=ReadInputVa
公共抽象类MyBaseWorkflow:CodeActivity
{
受保护的密封覆盖无效执行(CodeActivityContext executionContext)
{
//这是伪代码,我知道它是有效的,最后一行就是问题所在
var输入=ReadInputValue();
var query=BuildQuery();
var选项=匹配输入(查询结果,输入);
WriteToOutput(…,选项);
}
受保护的字符串BuildQuery();
受保护的字符串ReadInputValue();
受保护的字符串WriteToOutput(CodeActivityContext executionContext,OptionMetadata selectedValue);
}
然后在我的工作流程中,我已经(我省略了BuildQuery和readInputValue,因为我知道它们可以很好地工作)
公共类MyWorkflow:MyBaseWorkflow
{
[输入(“帐户MyFieldAsText输入”)]
公共InArgument选项SetStringInput{get;set;}
[输出(“帐户MyFieldOptionSetValue输出”)]
[AttributeTarget(“帐户”、“myField”)]
public OutArgument选项SetValueOutput{get;set;}
受保护的overide字符串WriteToOutput(CodeActivityContext executionContext,OptionMetadata selectedValue)
{
this.OptionSetValueOutput.Set(executionContext,新选项SetValue(selectedValue.Value.Value));
}
}
我做了一些跟踪,能够看到正确的值被写入属性,但似乎没有输出到下一步
我一直在考虑这样做:context.OutputParameters[“myField”]=selectedValue
来查看是否设置了值,但我不确定如何进行
知道哪里出了问题吗?输出参数在继承中有任何约束吗?
在处理工作流和插件时,是否应避免将继承作为经验法则?不要在
IPluginExecutionContext
对象中查找OutArgument
值。OUT参数属于Windows工作流基础的域。在添加自定义活动的点下的工作流中添加操作时,可以在UI中找到它们
输出参数集合用于插件。不要在
IPluginExecutionContext
对象中查找OutArgument
值。OUT参数属于Windows工作流基础的域。在添加自定义活动的点下的工作流中添加操作时,可以在UI中找到它们
输出参数集合用于插件