运行时的WF验证错误

时间:2009-02-02 12:03:57

标签: workflow workflow-foundation rules

我有两个工作流基础(.NET 3.5 SP 1)应用程序编译很好。它有两个声明性规则条件。两者都很简单,例如:
- !this.Shutdown - this.Runtime == null

项目正确构建,没有错误或警告,但是当我运行应用程序时,它失败并出现异常:error 1342: Activity 'whileNotShutdown' validation failed: Can not find the condition "Shutdown not requested".

在另一个应用程序中,我在策略中使用了一个更复杂的规则集,它会生成以下异常:error 1398: Activity 'Defaults' validation failed: Can not find the rule set "Rule Set1". Check if rule set is defined in the rules file.

我尝试删除.rules文件并通过重新创建两个规则来重新创建它,但这并没有帮助。

问题是:导致此错误的错误是什么?

我尝试过的一些事情:

  • 将工作流程规则放在较大的工作流程中对此问题没有任何影响。
  • 问题是现在影响解决方案中的所有工作流程(即使是那些曾经工作过的工作流程)。
  • 使用代码规则条件没有相同的问题 - 问题与规则文件有某种关系。
  • 重建工作流程无济于事

2 个答案:

答案 0 :(得分:0)

编译器不会检查声明性工作流规则,因此没有任何帮助。当您在规则中引用“this”时,它表示工作流程。因此,必须在工作流级别声明属性Shutdown和Runtime。我认为运行时指的是WorkflowRuntime,这是一种不寻常的,不推荐使用,因为这可能存在设计问题。

答案 1 :(得分:0)

最终找到原因 - 它是由类名中的空格引起的,这导致规则文件中包含空格,这似乎会导致问题。

例如,这会导致错误:

alt text http://img512.imageshack.us/img512/661/clipboard01wdu.png

然而,这不会:
alt text http://img140.imageshack.us/img140/9366/clipboard02t.png