0

カスタム UI でルールを構築し、ワークフロー モジュールの CodeDom で実行しようとしています。WF で提供される Rules インターフェイスを使用したくありません。ルールを作成/実行するために、Condition と ThenAction/ElseActions を作成しています。現在、単一の条件を正常に実行できます。OrderID、Amount、NoOfItems、Discount、TotalAmount などのプロパティを持つOrder Entity があるとします。

以下の条件を構築できます:

if (this.Amount > 1000)
    thisDiscount = 100;

建物の左右の条件:

CodePropertyReferenceExpression technologyRef = new CodePropertyReferenceExpression(thisRef, " Amount");

CodePrimitiveExpression wfConstant = new CodePrimitiveExpression(1000);

// if ( this. Amount > 1000)

CodeBinaryOperatorExpression cond = new CodeBinaryOperatorExpression();

cond.Left = technologyRef;

cond.Operator = CodeBinaryOperatorType.GreaterThanOrEqual;

cond.Right = wfConstant;

Rule rule = new Rule("rule1");

rule.Condition = new RuleExpressionCondition(cond);

以下の条件をビルドできません:

if (this.Amount > 1000 && NoOfItems > 5)
    thisDiscount = 150;

ルールの複数の条件を作成するのを手伝ってくれる人はいますか? 1 つの IF ステートメントで複数のプロパティを検証することを意味します。

4

1 に答える 1

1

最初の条件のツリーは次のようになります。

      <
     / \
Amount  1000

そして、それはまさにコードでそれを表現した方法CodeBinaryOperatorExpressionです<。2 番目の式で同じことを行うのはほとんど同じですが、ツリーは大きくなります。

        -----&&-----
       /            \
      <              >
     / \            / \
Amount 1000 NoOfItems  5

つまり、 ( )CodeBinaryOperatorExpressionを表すものがあり、その左側の子がノードになり、右側の子がノードになります。&&CodeBinaryOperatorType.BooleanAnd<>

于 2012-04-04T10:38:46.057 に答える