Windows 工作流可以用 C# 而不是 XAML 编写吗?

Can Windows Workflows be written in C# instead of XAML?

我们正在为我们的工作流使用 Windows Workflow Foundation。包含工作流定义的 XAMLX 文件非常脆弱(它们通常无缘无故最终无法打开)并且我们无法并行处理它们,因为我们无法合并这些更改(底层 XAML 是人类可读的)。我正在寻找方法来减轻必须通过内置 Visual Studio 编辑器使用 XAML 的痛苦。是否可以在 C# 中定义 Windows Workflow Foundation 工作流?

这篇文章 article 在 "Workflow Structure" 部分表明这是可能的,但没有给出完整的例子。

最终更新 检查下面的答案,了解纯代码 C# 工作流的工作示例,并配置为通过 WCF 托管它。

当然 - 完全按照您在 Xaml 中的方式组织您的活动。例如,下面将创建一个包含两个 WriteLine 活动的序列。

// Create a sequence containing 2 WriteLine activities.
var sequence = new Sequence();

sequence.Activities.Add(new WriteLine()
{
    Text = "Hello!"
});

sequence.Activities.Add(new WriteLine()
{
    Text = "Goodbye!"
});

// Now execute the sequence.
var wfApplication = new WorkflowApplication(sequence);
wfApplication.Run();

如果你想创建自定义活动,你需要继承自 CodeActivity 或 NativeActivity - 但网上有很多这样的例子:)

我汇总了来自不同教程的信息,并提出了一个 sample project 演示 Windows Workflow Foundation 工作流,通过纯代码编写并托管为 WCF 服务