Maximo ビジネス・ルール (MBR) スクリプトの例

いくつかの一般的なスクリプト・シナリオでの Maximo® ビジネス・ルール (MBR) 言語の使用法を示すために、いくつかの例が用意されています。

例: MBOSet への MBO の追加

新規資産が資産タイプ GASENG で追加されると、レコードは、その資産の計測値 MBOSet に 2 つの計測値を追加します。この計測値は、0-PRESSUR と IN-PRESSUR です。

手順
  1. 自動化スクリプト・アプリケーションで、オブジェクト起動ポイントを含むスクリプトを作成します。
  2. 起動ポイント名を指定して、ASSET オブジェクトを選択します。
  3. 「イベント」セクションで、「保存」イベントを選択します。
  4. 「保存」セクションで、イベントのコンテキストを指定して、「追加」および「保存前」を選択します。
  5. 「スクリプト」セクションで、スクリプトを追加するオプションを選択して、次のページに進みます。
  6. スクリプト名を指定して、ログ・レベルをデバッグに設定します。次のページに進みます。
  7. 次のソース・コードを「ソース・コード」フィールドに貼り付け、「作成」をクリックしてスクリプトを追加します。
    #my first MBR code for asset
    setvar("isgaseng",(assettype == "GASENG" && countf("assetmeter")==0))
    if(getvar("isgaseng"),invokescript(":createmeters"))
    
    #my MBR function that will add the two meter MBOs to the asset MBO
    :createmeters
    newmbo("opressure","assetmeter")
    setvaluetombo("opressure","metername","O-PRESSUR")
    newmbo("inpressure","assetmeter")
    setvaluetombo("inpressure","metername","IN-PRESSUR")

分析

このスクリプトには、2 行の主要コードと 1 つの関数が含まれています。このスクリプトは、ユーザーが資産レコードに変更を保存すると実行されます。主要コードで、以下のロジックが実装されます。

  1. 以下の 2 つの条件が両方とも満たされている場合、ローカル変数を作成し、その変数を TRUE に設定します。
    • 資産タイプが GASENG である。
    • 資産の計測値 MBOSet が空である。
  2. ローカル変数を評価します。ローカル変数が TRUE の場合は、MBO を資産の計測値 MBOSet に追加する関数を呼び出します。createmeters 関数で、以下のロジックが実装されます。
    1. MBO を資産の計測値 MBOSet に追加する。
    2. MBO の名前を O-PRESSUR に設定する。
    3. 2 つ目の MBO を資産の計測値 MBOSet に追加する。
    4. 2 つ目の MBO の名前を IN-PRESSUR に設定する。

このスクリプトは 2 つの内部変数 assettype および assetmeter を使用して、資産の資産タイプと計測値 MBOSet の内容を派生させます。

このスクリプトはユーザーが自分の変更を保存すると実行されるため、アプリケーション・トランザクション・フレームワークは、新しく作成された MBO を主要トランザクションの一部として保存してコミットします。

createmeters 機能コードを移動してライブラリー・スクリプトに入れることができます。例えば、createmeters 機能コードを、これもまた createmeters というライブラリー・スクリプトに移動してから、そのライブラリー・スクリプトを以下のステートメントで呼び出すことができます。

if(getvar("isgaseng"),invokescript("createmeters"))

例: 日付の操作

資産のタイプが BUS である場合、以下のアクションを行います。
  • 耐用年数の終了日を、設置日に 1 年を加えた日付に設定します。資産に設置日がない場合は、耐用年数の終了日を現在日付に 1 年を加えた日付に設定します。
  • 優先度属性を必須にします。
手順
  1. 自動化スクリプト・アプリケーションで、属性起動ポイントを含むスクリプトを作成します。
  2. 起動ポイント名を指定して、ASSET オブジェクトと ASSETTYPE 属性を選択します。
  3. 「イベント」セクションで、「検証」イベントを選択します。
  4. 「スクリプト」セクションで、新規スクリプトのオプションを選択して、次のページに進みます。
  5. スクリプト名を指定して、ログ・レベルをデバッグに設定します。次のページに進みます。
  6. 次のセクションに示すソース・コードを「ソース・コード」フィールドに貼り付け、「作成」をクリックしてスクリプトを追加します。
    if(assettype=="BUS",setvalue("estendoflife",nvl(installdate,now())+duration(1,0,0,0,0,0)))
    if(assettype=="BUS",setrequired("priority",TRUE),setrequired("priority",FALSE))

分析

このスクリプトは、資産タイプが変更された場合に実行されます。このスクリプトで、以下のロジックが実装されます。

  • 資産のタイプが BUS の場合は、耐用年数の終了日を次のように設定します。
    1. 資産の設置日を評価します。
    2. 設置日が空の場合、耐用年数の終了日を現在日付に 1 年を加えた日付に設定します。
    3. 設置日が入力されている場合、耐用年数の終了日を設置日に 1 年を加えた日付に設定します。
  • 資産のタイプが BUS の場合は、優先度属性を必須にします。資産のタイプが BUS でない場合は、優先度属性をオプションにします。
これらのアクションではどちらの場合も、スクリプトは、資産のタイプが BUS であるかどうかを調べますが、これは効率的ではありません。関数を定義して両方のアクションをその関数に移動し、資産のタイプが BUS の場合にその関数を呼び出すことで、このスクリプトを改善できます。次のコードは、この改善を示しています。
if(assettype=="BUS",invokescript(":seteol"),setrequired("priority",FALSE)) 
:seteol
setvalue("estendoflife",nvl(installdate,now())+duration(1,0,0,0,0,0))
setrequired("priority",TRUE)

このスクリプトは、内部変数 assettype、estendoflife、および installdate を使用して、資産のタイプ、耐用年数の終了日、および設置日の値を派生させます。

例: 複製オブジェクトでの属性の設定

作業指示書を複製する際に、オリジナルの作業指示書番号を複製作業指示書のカスタム属性にコピーします。

手順
  1. 自動化スクリプト・アプリケーションで、起動ポイントを含まないスクリプトを作成します。
  2. WORKORDER.DUPLICATE というスクリプト名を指定します。
  3. MBR がスクリプト言語として指定されていない場合は、スクリプト言語として指定します。
  4. 以下のソース・コードを「ソース・コード」フィールドに貼り付け、「作成」をクリックしてスクリプトを追加します。
    setvaluetombo("dupmbo","copiedfrom", wonum)

分析

スクリプト名によって、作業指示書の複製時にこのスクリプトが確実に実行されます。スクリプトは、オリジナルの作業指示書番号を複製作業指示書のカスタム属性にコピーします。

スクリプトは、内部変数 wonum、dupmbo、および copiedfrom を使用して、複製作業指示書のオリジナルの作業指示書番号、複製作業指示書番号、およびカスタム属性の値を派生させます。