複数言語をインストールしたMaximoでは、指定された言語でログインすると複数言語に対応した部品マスターなどのアプリケーションでは、その言語で表示されるようになります。しかし、例えば英語で新規にレコードを入力した場合、日本語などの他の言語では英語で入力した箇所は空文字で表示されてしまいます。日本語を入力したい場合は、その言語設定でログインし直す必要があります。今回はログインし直さなくても複数言語を一括で更新できる機能を開発してみたいと思います。
目標は特定のカラムの複数言語を編集できるようにすることです。複数言語対応の属性は、「データベースの構成」の「属性」タブで確認することができます。その中で「複数言語を使用?」などにチェックがついているものが対象となります。まずは複数言語に対応した属性を抽出するドメインを作成します。ドメインアプリケーションから以下のようにテーブル・ドメインを作成します。
ドメイン: MLATTRIBUTE
オブジェクト: MAXATTRIBUTE
検証Where文節: objectname=:objectname and attributename=:attributename and mlinuse=1
リストWhere文節: objectname=:objectname and mlinuse=1
複数言語を編集するエディターはダイアログボックスで作成します。ダイアログボックスで属性を選択したときに対象のオブジェクトからデータを抽出し、編集した後に親オブジェクトの値を更新します。ダイアログボックスで使用する値はDBに値を格納する必要がないため非永続MBO (NonPersistentMbo)を利用し、値を抽出・更新するロジックは自動化スクリプトを使用します。まずは非永続MBOを作成することから始めます。対象のオブジェクトと属性を格納するオブジェクトとそれぞれの言語の値を格納する子オブジェクトの2つをそれぞれ作成します。
子MBOの作成
オブジェクト: MLEDITORVALUES
永続: チェックをオフ
子MBOの属性2
属性名: VALUE
タイプ: CLOB (どの長さにも対応できるようにするため)
オブジェクト: MLEDIOTR
永続: チェックをオフ
属性名: ATTRIBUTENAME
ドメイン: MLATTRIBUTE
同じオブジェクト: MAXATTRIBUTE
同じ属性: ATTRIBUTENAME
オブジェクト: OBJECTNAME
同じオブジェクト: MAXOBJECT
同じ属性: OBJECTNAME
親MBOと子MBOの関係を定義します。以下のような関係を親MBOに作成して下さい。
関係名: MLEDITORVALUES
子オブジェクト: MLEDITORVALUES
次にダイアログボックスの定義を行います。今回はどのアプリケーションから呼び出せるようにLibrary XMLにその定義を追加します。
LIBRARYのXMLのダウンロードボタンをクリックする
ダウンロードしたXMLの最後に以下のXMLを挿入する
アプリケーション定義のインポート・ボタンよりXMLを更新する
https://gist.github.com/nishi2go/b97e8d5ad4a5d51dced78f880fbca554
自動化スクリプトを作成します。はじめはダイアログボックス初期化時のロジックを実装します。以下のスクリプトを作成して下さい。
スクリプト: MLEDITOR.NEW
言語: python
https://gist.github.com/nishi2go/77a9229a2bda3799af34acc152816c01
次のスクリプトは属性名が入力されたときに複数言語の値を取得するロジックとダイアログのOKボタンがクリックされた時に値を書き出すロジックが実装されています。
https://gist.github.com/nishi2go/3f40f070bc3145560ef39d3ff9867eab
一つはオブジェクト起動ポイントです。ダイアログを閉じたときに実行されます。
起動ポイント: MLEDITORSAVE
オブジェクト: MLEDITOR
イベント: 保存
追加: チェック
保存前: 選択
スクリプト: 既存
スクリプト名: MLEDITOR
もう一つは属性起動ポイントです。属性名を入力したときに起動されます。
起動ポイント: MLEDITORATTR
オブジェクト: MLEDITOR
属性: ATTRIBUTENAME
イベント: アクションの実行
スクリプト: 既存
スクリプト名: MLEDITOR
以上で基本設定は終わりです。こちらの機能を部品マスターで実装したいと思います。
まずアプリケーション・デザイナーを開きITEMを選択します。アクションの選択から署名オプションの追加/編集にMLEDITORを追加します。
署名オプションからダイアログボックスを開く方法を定義します。ダイアログボックスを開くにはアクションの選択メニューに登録するか、プッシュボタンを定義します。今回はアクションの選択に登録します。
タイプ: OPTION
キー値: MLEDITOR
署名オプションの追加後に機能を有効にするには、セキュリティ・グループで権限を追加してください。
署名オプションを反映させるには、一度ログアウトする必要があります。設定を反映するとアプリケーションでメニューを選べるようになります。エディターの画面は以下のように表示されます。
OKをクリックすることで値が変更されることを確認してください。注意点としてはBiDiと呼ばれるヘブライ語などは正しく動作しない可能性がありますのでご注意ください。