Tag: workflow foundation 4

使用工作流来评估动态表达式

我想将一个对象和表达式传递给动态创建的工作流,以模仿许多语言中的Eval函数。 任何人都能帮我解决我做错的事吗? 下面的代码是一个非常简单的例子,如果接受一个Policy对象,将其溢价加倍1.05,然后返回结果。 它抛出了exception: 附加信息:处理工作流树时遇到以下错误: ‘DynamicActivity’:活动’1:DynamicActivity’的私有实现具有以下validation错误:未提供所需活动参数’To’的值。 和代码: using System.Activities; using System.Activities.Statements; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Policy p = new Policy() { Premium = 100, Year = 2016 }; var inputPolicy = new InArgument(); var theOutput = new OutArgument(); Activity dynamicWorkflow = new DynamicActivity() { Properties = { new […]

Windows工作流自定义序列活动

我正在使用Windows Workflow 4,我需要创建一个C#活动,基本上它inheritance自Sequence活动。 我希望它看起来就像Sequence活动一样,因此用户可以从设计器中将其他活动拖放到它上面。 但是,它在代码中的行为不同(也许我想以不同的顺序运行它们,或者在每个代码之间执行特殊操作,这应该没关系)。 我怎样才能做到这一点? 我看到一个类似的问题被问到这个问题,只有一个人回答了一个仅适用于Windows Workflow 3的建议。在版本4中,序列活动不能inheritance,至少可以说。 这似乎不是一个非常遥远的概念。 Sequence活动作为内置活动提供。 因此,它应该是可重现的,或者至少是可inheritance的,这似乎是合乎逻辑的,所以我可以有一个自定义版本的Sequence活动。 有人有主意吗?

如何在TFS中反序列化和序列化构建过程参数

我正在尝试使用TFS 2013 API创建新的构建定义。 我必须引用的流程模板包含几个自定义活动和参数。 在创建构建定义时,需要动态更新某些属性值。 所以我尝试使用下面的代码反序列化过程参数: IDictionary processParams = WorkflowHelpers.DeserializeProcessParameters(defaultTemplate.Parameters); 此代码总是抛出以下exception: An unhandled exception of type ‘System.Xaml.XamlObjectWriterException’ occurred in System.Xaml.dll Additional information: No matching constructor found on type ‘System.Activities.Activity’. You can use the Arguments or FactoryMethod directives to construct this type. 这真是令人沮丧,我无法摆脱这个错误。 我还尝试使用以下代码反序列化过程参数: using (StringReader stringReader = new StringReader(parameterValues)) { object obj = XamlServices.Load( ActivityXamlServices.CreateReader( […]

实现AsyncCodeActivities(使用C#async / await)

很长一段时间我使用以下模板编写自定义AsyncCodeActivity类: public sealed class MyActivity : AsyncCodeActivity { protected override IAsyncResult BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, object state) { var task = new Task(this.Execute, state, CancellationToken.None, TaskCreationOptions.AttachedToParent); task.ContinueWith(s => callback(s)); task.Start(); return task; } protected override T EndExecute(AsyncCodeActivityContext context, IAsyncResult result) { var task = result as Task; if (task.Exception != null) { // Error handling. […]

Workflow Foundation 4中的dependency injection/ IoC

是否可以在工作流程活动中使用DI? 如果是,怎么样? 例如,如果您有类似的活动 public sealed class MyActivity : CodeActivity { public MyClass Dependency { get; set; } protected override void Execute(CodeActivityContext context) { Dependency.DoSomething(); } } 我该如何设置Dependency ? (我正在使用Spring.Net)

Workflow Foundation 4中的用户定义的动态工作流程?

我已经详尽地查看了WF4的示例,并且不确定它是否适用于我的项目 。 否则我需要被说服。 我正在努力实现一个使用WF4的系统,以便用户能够定义工作流程。 您似乎需要VS2010经验来设计和实施WF4工作流程。 我喜欢它可以提供的小麦,但是对于非技术用户来说这可能太复杂了。 我们是否只定义了大量用户可以移动到工作流程中的自定义活动? 我们如何才能让用户尽可能轻松地构建工作流程? 我们有想要允许的应用程序,Joe / Jane用户可以为特定项目创建自己的工作流程。 例如,Request For Information项目。 RFI具有由用户定义的特定状态。 应允许他们根据这些状态控制流量。 应用程序将根据决策/条件定义一些基本项目。 因此,诸如通知(当某些内容发生变化时会收到通知),时间范围(某些事情可以在其他事情发生之前保持某种状态)以及可能的其他条件之类的事情。 目前,条件/决策类型将受到应用程序的限制。 但想象一下,他们可以构建工作流程并在没有任何编码知识的情况下添加这些决策/条 我只是不知道如何以这种方式利用WF4。 也许我正在以错误的方式看待WF4?

即使调用了TraceEvent,也没有创建跟踪文件?

目的 使用System.Diagnostics执行跟踪。 虽然我使用了log4net和其他日志记录解决方案,但我只对跟踪使用System.Diagnostics感兴趣。 问题 即使我发出了TraceEvent ,也没有在任何地方创建文件。 应用信息 我有一个托管一些WF服务的应用程序。 其中一个服务是状态机,其初始状态如下所示: LogMessage自定义活动也很直接。 它收到四个基本参数: 将TraceSource定义为变量: 然后只需调用TraceEvent : 组态 此TraceSource和TraceListener的配置如下: