OpenPages with Watsonは、Cognos Analyticsを同梱しておりCognos Analyticsのパッケージを自動的に生成する仕組みがあります。
この仕組みにより、OpenPages内の各オブジェクトが持つフィールドがCognosパッケージのデータアイテムにマッピングされるため、Cognos上でレポートを作成する際にOpenPagesで定義したフィールド名のアイテムをそのまま利用できます。
しかし、全く同じ定義をOpenPages上でしているにも関わらず、環境によってCognos上のデータアイテムが異なるOpenPagesのフィールドとマッピングされてしまう事があります。
次のようなケースです。
1.OpenPages上で、フィールドグループが異なるがフィールド名が同一、というフィールドが存在した場合
2.フィールド名が長く(40文字など)、末尾のみが異なるようなフィールドが存在した場合
1のケースでは、AというフィールドグループとBというフィールドグループがあり、それぞれにApproverという名称のフィールドが定義されていたとします。
この場合、同一名称のフィールドが同じフィールドタイプに存在する事になるため、Cognosパッケージ上では「Approver」と「Approver00」という形でアイテムが作成されます。
この時、以下のように、環境によって逆を指す場合があります。
【開発環境】
A.Approver - Approver
B.Approver - Approver00
【本番環境】
A.Approver - Approver00
B.Approver - Approver
これでは開発環境で作成したレポートが本番環境では期待通り動きませんので、このような環境による差異を是正する必要があります。
以下に是正手順を記載します。
1.環境ごとにOpenPagesのフィールドとCognosデータアイテムのマッピング情報を取得
2.差異を特定
3.修正するためのSQLを作成
4.SQLを実行し修正
1.環境ごとにOpenPagesのフィールドとCognosデータアイテムのマッピング情報を取得
下記のSQLを実行して、OpenPagesフィールドとCognosデータアイテムのマッピングを取得します。
SELECT rcp.*,pdef.name as "Field Name" ,pdef.bundlename as "Field Group Name" ,ast.name as "Object Type" FROM rps_obj_col_presets rcp ,propertydefs pdef ,assettypes ast WHERE rcp.property_def_id = pdef.propertydefid AND rcp.object_type_id = ast.assettypeid
結果は下記のようになります。
2.差異を特定
OpenPagesのフィールドは、下記の3つの列でユニークになります。
Object Type
Field Group Name
Field Name
各環境ごとに、この3つの組み合わせをユニークキーとして定義し、それぞれの環境のCOLUMN_NAMEが一致するか確認をします。
一致しない行があった場合、それぞれのOBJ_COL_PRESET_IDを記録しておきます。
3.修正するためのSQLを作成
修正するためのUpdate SQL文を作成します。
例えば、OBJ_COL_PRESET_IDが100と101でそれぞれ次のようなレコードがあったとします。
これを逆にしたい場合には、次のようなSQLを用意します。
update rps_obj_col_presets set column_name = 'approver100' where OBJ_COL_PRESET_ID = 100
update rps_obj_col_presets set column_name = 'approver101' where OBJ_COL_PRESET_ID = 101
update rps_obj_col_presets set column_name = 'approver00' where OBJ_COL_PRESET_ID = 100
update rps_obj_col_presets set column_name = 'approver' where OBJ_COL_PRESET_ID = 101
最初の2行は仮のcolumn_nameにセットするためのSQL文です。
次の2行が、期待する変更を行うためのSQL文です。
OBJECT_TYPE_IDとCOLUMN_NAMEの組み合わせはユニークでなければならないためです。
他にも変更したいフィールドがある場合には、この手順を繰り返してSQL文を作成します。
4.SQLを実行し修正
このSQLを実行するためには、次の手順に従います。
1.OpenPages上でReporting Schemaを削除
2.OpenPagesのサービスを停止
3.SQLファイルを実行
4.OpenPagesのサービスを再開
5.OpenPages上でReporting Schemaを再作成
6.OpenPages上で、Framework Model Generationを実行
ここまで対応する事で、OpenPagesのフィールドとCognos Analyticsのデータアイテムのマッピングを修正する事ができます。
しかし、なにより重要な事はこのような事が起こらないようにすることです。
先に述べたような理由によりこのような事象が発生するため、OpenPagesでフィールドを追加する場合には次のルールを徹底する事を強く推奨します。
・フィールド名は全てユニークにする
・例えば、コード値で持つなど。例としては「PR001_XXX」のように、最初にオブジェクトの略称(ここではProcess)、次に通番、最後に5文字程度の分かりやすい略称、のような命名体系でフィールド名を作成する。
これにより、同一オブジェクトタイプの別フィールドグループに同一名称のフィールドが存在する事を回避でき、よって当事象も回避する事が可能です。
今回はOpenPagesでフィールドを追加する際に起こり得る問題事象の紹介とその修正方法、そもそもの回避方法をご紹介しました。
今後ともOpenPagesのTipsを紹介していきたいとおもい