0

我有两个编译良好的工作流基础(.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 文件并通过重新创建这两个规则来重新创建它,但这并没有帮助。

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

我尝试过的一些事情:

  • 将工作流规则放在更大的工作流中对问题没有影响。
  • 这个问题现在影响了解决方案中的所有工作流程(甚至那些曾经工作的工作流程)。
  • 使用代码规则条件没有相同的问题 - 问题与规则文件有关。
  • 重建工作流程没有帮助
4

2 回答 2

0

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

于 2009-02-02T17:07:26.857 回答
0

最终找到了原因——是类名中的空格引起的,导致规则文件中有空格,这似乎是导致问题的原因。

例如这将导致错误:

替代文字 http://img512.imageshack.us/img512/661/clipboard01wdu.png

但是这不会:
替代文字 http://img140.imageshack.us/img140/9366/clipboard02t.png

于 2009-09-01T07:00:18.667 回答