【PBCS】ビジネス・ルール:値代入時の注意点


ビジネス・ルールでの値代入の方法

①DATACOPYコマンドの使用

【特徴】
・代入元→代入先への直接代入に有効
・代入先がブロックが生成されていない(使用されていない)交点の場合
 自動的にブロック生成されて値が代入される

【コマンド例】

/* 予算から実績に値を一括コピー */
DATACOPY Budget TO Actual;

②式による代入

【特徴】
・代入元→代入先に代入する際に任意の計算を含む際に有効
・代入先がブロックが生成されていない(使用されていない)交点の場合
 ブロックは自動生成されない

【コマンド例】

/* 予算から実績に値を一括コピー(その際予算の2割掛けを行う) */
Actual = Budget * 1.2;

式代入時のブロック生成

式での代入時には、ブロックがない交点に自動生成されることがないため
明示的にブロックを生成する必要がある
(ビジネス・ルールのジョブは成功するが、
生成されていない交点に値は入らない)

試行錯誤したところ、以下の条件でブロック生成と値の代入が出来た

①ブロックが1つも生成されていないメンバーはFIXに含めず、式にてメンバー指定すること
②式の右辺で掛け計算を行うこと

【例】
以下のような次元構成の時に、4月の売上予算の3割増しの金額を同月の売上実績に代入したい場合

次元名 メンバー
Years(年度) FY19(2019年)
Entity(組織) Osaka(大阪支社)
Version(バージョン) Working(作業用)
Account(勘定科目) Sales(売上)
Period(月) April(4月)
Scenario(シナリオ) Budget、Actual(予算、実績)


/* ↓ブロックが生成されている次元のみをFIXに含める */
FIX ("FY19"
,"Osaka"
,"Working"
,"April"
)

  /* 式の右辺で掛け計算を行う(直接代入のときは*1にする) */
    "Sales"(
        IF (@ISMBR("Budget"))
        "Actual"="Budget"->"Sales" *1.3;
        ENDIF
    )

ENDFIX

【実行結果】