【发布时间】:2015-10-27 07:27:29
【问题描述】:
我们希望制作由最终用户设计的工作流程。 我能够在数据库中存储一些工作流定义,重新加载它们并使它们在服务中工作。
为了让用户能够创建工作流,我们需要创建自己的活动。我想将非简单参数(即列表、列表)传递给内部活动。我阅读了许多关于传递参数的文章,但找不到适合我需要的文章,所有文章都显示了如何仅将参数传递给主工作流活动(在 WorkflowInvoker.Invoke 方法中使用 Dictionary)。
我们有一个带有参数 Arg1 (List) 的 CodeActivity Activity1 的库。 最终用户将使用这个库来创建一个新的 Activity(例如一个序列)。
Activity1 act1 = new Activity1();
act1.Arg1 = new InArgument<List<string>>(new List<string> { "a", "b", "c" });
Sequence seq = new Sequence
{
Activities = { act1 };
}
// Now serialize end user workflow
Stream newStream = ...;
XamlWriter l_xamlWriter = ActivityXamlServices.CreateBuilderWriter(new XamlXmlWriter(newStream, new XamlSchemaContext()));
XamlServices.Save(l_xamlWriter, seq);
如何使用列表初始化参数? (以前的代码失败,出现'Literal':Literal 只支持值类型和不可变类型 System.String)。
有没有办法将这些参数传递给内部活动,或者以编程方式将这些参数转换为 VisualBasicValue 或 CSharpValue 以允许序列化工作流定义?我们不想在每次运行工作流时设置这些参数,我们希望将值存储在定义中。
任何帮助将不胜感激:-)
【问题讨论】:
标签: .net workflow-foundation-4