今週のテクニカルTips: リレーションシップフォームの利用

リレーションシップフォームでは、アイテムに関して取得した情報をリレーションシップタブに展開する事ができます。これは特に、メインアイテムに多くのプロパティ/フィールドが属している場合や、リレーションシップタブを使ってタイプ毎にセクションプロパティを表示させる必要がある場合に便利です。

以下の例で、リレーションシップフォームへの入出力をご紹介します。Companyタブ内で、Help Ticketアイテムに関するCompany情報を取得し表示していきます。

今週のテクニカルTipsは上級技術者を読者として想定しています。使用している言葉も、Aras Innovatorの技術を理解している方向けになっています。本番環境で試す前に、技術者からのレビューを受けることを推奨いたします。

tech1

 

  1. リレーションシップタブコントロールで使用されるフォームを新規作成します。フォーム上の各フィールド要素の名前(データソースではありません)は親アイテムのプロパティと同じにする必要があります。(メインアイテム上に値を保存するため)
    例えば、Help Ticket item上にcompany_nameという名前の文字列プロパティを作成します。これはcompany_nameという名前のフィールド要素を参照させるためです。
    tech2

 

  1. 以下のように、TabFormFieldChangedという名前のクライアントサイドJavaScriptメソッドを作成します。
    var field_name = this.name;
    var property_value = this.value;
    document.thisItem.setProperty(field_name, property_value);

 

  1. TabFormPopulateFieldsという名前のクライアントサイドJavaScriptメソッドを作成します。
    for(i=0; i<document.forms(0).elements.length; i++)
    {
    var e = document.forms(0).elements[i];  if (e.name == “” | e.name==undefined) {
    //these are internal properties – do nothing
    }
    else {
    //get value of property from parent item
    e.value = document.thisItem.getProperty(e.name, “”);
    }
    }

 

  1. ユーザーによってデータが入力/変更される各タブフォームフィールドのonChangeイベントに、TabFormFieldChanged メソッドを追加します。
    tech3

 

  1. TabFormPopulateFieldsメソッドをonFormPopulatedタブのForm Eventに追加します。
    tech4

 

  1. 親アイテムと関連アイテムの間にリレーションを確立します。関連アイテムとの実際のリレーションシップは使用されず、タブのビューを修正するためにはRelationshipTypeテンプレートが必要となります。この例では、Help Ticketからリレーションが確立されHelp Ticket Companyという名前がついています。(お好みに応じてリレーションに”NULL”を指定する事もできます。)
    tech5

 

  1. フォームを使用するために、前回のステップで作成されたRelationshipTypeを編集しRelationship Viewを修正します。この例では、標準的なリレーションシップグリッドでは無く、Companyという名前のフォームが使用されています。
    tech6

 

  1. ユーザーがタブフォームにデータを入力すると、対応するプロパティが親アイテムに設定されます。アイテム保存時には、全てのデータがメインアイテムに対する1度のトランザクションで取得されます。
    tech7

 

もちろん、このTipsはリレーションシップフォームを活用するためのほんの僅かな情報でしかありません。どのように活用しているか、またどのようなTipsが欲しいか、info@aras.jpまでご連絡ください。@ArasJapanにツイートくださっても結構です!

Aras PLMの詳細・ダウンロードはこちらから
Aras_Logo_2013