【Pega】Activityからログを出力する
やりたいこと
Activityの実行時ログをPegaRULESログに出力する。
PegaRULESログへの出力
Activity内でLog-Messageメソッドを使用する。
パラメータ
メソッドのパラメータは以下の4つ。
No. | パラメータ | 説明 |
---|---|---|
1 | Message | ログに出力する内容を定義。 平文だけでなく、Propertyの指定も可能。 |
2 | LoggingLevel | 出力するログレベルを指定(※1) |
3 | GenerateStackTrace | スタックトレースに出力するか選択 |
4 | SendToTracer | トレーサ(※2)に出力するか選択 |
※1 : ログレベルには以下を指定可能
- Debug
- Info
- Warn
- Error
- InfoForced
深刻度はDebug < Info < Warn < Error の順に大きく、prlog4j2.xmlで設定されたレベル以上の深刻度のものだけがログとして出力される。
InfoForcedを指定した場合は、設定されたレベルに関わらず、ログをInfoレベルで強制的に出力する。
※2: トレーサ(Tracer)については以下を参照。
【Pega】開発効率化のために覚えておきたい機能5選 - こいけるの日記
実装例
出力結果
Configure > System > Operations > Logsから、Log Files > PegaRULES.logを選択してログを開く。
Log-Messageメソッドに記述した内容が出力されている。
環境
Pega Platform 8.3.0 Personal Editionで実行。
おわり~
【Pega】複数のReportを1つのReportに統合 (UNION)する
やりたいこと
同じクラスに属する2つの異なるレポートのクエリ結果を統合し、1つのレポートとして出力したい。
こんな感じ。
前提として、以下の2つのReportがあると考える。
- Report A : 顧客の年齢が5歳より大きい注文を出力
- Report B : 顧客の犬種が"柴犬"でない注文を出力
この2つのReportを、Report Cに統合して出力する方法を、以下で説明する。
実装方法
ポイント:Sub-Reportという、Reportから異なるReportを呼び出す機能を用いて実装する。
統合される側 [Report A, B] の設定
1.Queryタブで、Column Sourceを1つにする
2.Data Accessタブで、Row key settingsの"Get Row Key"をオフにする
統合する側 [Report C] の設定
1.Data Accessタブで2つのReportをSub-Reportとして設定
2.Sub-ReportのConfigureで、
- Where will you this sub-report? でRight hand side of filter conditionsをチェック
- How will you join rows in this reports? でDo not match rowsを選択
3.Queryタブで各Sub-Report用のフィルタを設定して、OR条件でつなげる
以上で設定は完了。
実行結果
Report Cを実行すると以下のようにReport AとReport BをUNIONした結果が得られる。
環境
Pega Platform 8.3.0 Personal Editionで実行。
おわり~
【Pega】JSONテキストをParseするJavaコード
サンプルコード
// ①:Map Pega Property into Java Property ClipboardPage cp=tools.findPage("RunRecordPrimaryPage"); String jsonString= cp.getString("JsonString"); // ②:Parse JSON String try{ ClipboardPage tempPage = tools.createPage("@baseclass","JSONPage"); tempPage.adoptJSONObject(jsonString); } catch(InvalidStreamError e){ oLog.error("ReloadSection:Invalid JSON Stream for data page params : "+e.getMessage()); } catch(Exception e){ oLog.error("ReloadSection:Expection : "+e.getMessage()); }
コードの説明
①で、PegaのClipboardに持っているJSON形式のテキストを、Java内のString型変数にコピーする。取得先のPageにRunRecordPrimaryPageを指定しているが、ここは適宜変更する。本メソッドを呼び出すCaseが取得先であれば、pyWorkPageになるはず。
②で、adoptJSONObjectメソッドを用いて、JSON形式のString変数をParseして、Pega内のPage(JSONPage)にマップする。
参考
下記を参考に作成。
JSON Object Parsing in Pega | Pega Community
環境
Pega Platform 8.3.0 Personal Edition
おわり~
【Pega】開発効率化のために覚えておきたい機能5選
知っておくとPega Platformでの開発効率があがる機能を5つ紹介。
Clipboard
できること
サーバ上のメモリ領域に存在するデータを確認することができる。
開発やテスト実施時に「今動かしているCaseのこのPropertyにどんな値が入っているか」を確認したいときが多々あるが、これを実現するのがClipboard toolである。
使用方法
Dev Studioのメモリ上の情報を確認したいCase等の画面を開いた状態で、右下のマークをクリック(下の画像参照)。
クリックすると新規Windowが立ち上がる。特定のThreadのメモリすべてにアクセス可能なので、左側の項目はずらずらと様々な項目が並ぶ。Caseの情報を見たい場合は、この中からpyWorkPage(クラス名)の項目を選択することで、現在のCaseの情報を確認できる。
Tracer
できること
Activity, Data transform, Flow,,,といったRuleの実行時情報を確認することができる。
主にRuleが何かしらのエラーやバグで思ったように動いていないときに、このTracerを立ち上げてデバッグを行う。
使用方法
Dev Studio右下の、みたらし団子を折り曲げたようなアイコンをクリック。
新規ウィンドウでTracerの画面が立ち上がる。この画面を開いた状態で、動作チェックをしたいRuleを実行する。すると、Tracerの画面で実行時の情報が出力される。この時エラーの情報はStatus列が赤色で出力される。
さらにエラーが起きている行をクリックすると、詳細な情報を確認できる。
エラーメッセージを見るに、「ぽち」という文字列をInteger型に変換しようとしてエラーが起きている、ということが確認できる。
こんな感じでエラーが発生したときはTracerを活用することで、原因を特定できる。
使用時の注意点
Tracerは走らせるとマシンに結構な負荷がかかるので、使わないときはTracerのウィンドウを閉じるか、ウィンドウ上部にある"Pause"ボタンで情報取得を停止させておくこと。
Live UI
できること
UIの各要素を、実際に見ている画面から特定したり、その場で変更を加えたりできる機能。
「今見ている画像の部品を変更したいけど、どのクラスのどのセクションを変更したらよいか分からない」というときに便利。
使用方法
各ポータル右下の、四角に矢印が書いてあるアイコンをクリック。
すると画面の状態が切り替わり、画面の各要素にカーソルを合わせると、各要素の情報が現れるようになる。
要素名の右側にあるアイコンをクリックすると、
- Dev Studioで該当の要素を開く
- その場で要素を変更
- 要素の詳細情報を確認
などを実行できる。
View Reference
できること
そのRuleが参照しているRuleや参照されているRuleを確認できる。
例えばあるRuleを変更したり削除したりするときに、デグレを防ぐためにそのRuleを使っているRuleを確認するシーンがある。こういうときにView Reference機能を使う。
使用方法
確認したいRuleを開き、右上のActions > View referencesをクリック。
すると新規に画面が開く(実行するには最新のFlashが必要)。
左側 → そのRuleを参照しているRule
右側 → そのRuleが参照しているRule
を確認することができる。
Search/Replace a String
できること
RuleSet全体で、特定の文字列を一括置換できる。
使用方法
Dev Studio上部にある⚙マークをクリックし、System > Refactor > Rulesを選択。
Search/Replace a Stringをクリック。
Original String Valueに置換前のワード
New String Valueに置換後のワード
を入力。
その後はNext→Next→Finishと選択。
使用時の注意点
万が一に備え、実行前にバックアップをとっておきましょう。
環境
Pega Platform 8.3.0 Personal Editionを使用。
おわり~
【Pega】Report でPage List Propertyを参照する方法
やりたいこと
Page ListのPropertyを持つCaseについて、その項目を含めたReportを作成して表示したいことがある。
例:1つのドッグフード注文につき、複数の明細が紐づくCaseの情報をReportで扱うとき
実装方法
手順①:Report Definitionの設定
Page Listを参照したいReport Definitionを開き、Data Access タブを開く。
Data Accessタブの中部にあるDeclative index joinsのフィールドで設定を行う。
Prefix
Reportの中でJoinしたPropertyを呼び出すための接頭辞。名前は適当でよし。Index name
使用するDeclare Indexを指定する。Type
Joinの方法を指定する。- Only include matching rows = INNER JOIN
- Include only rows in this class = LEFT OUTER JOIN
- Include only rows in indexed class = RIGHT OUTER JOIN
手順②:Declative index joinsの作成 / 設定
Page List型のPropertyに紐づくPropertyをOptimizeしておくと、Declare Indexは自動で作成されるため、今回のケースでは基本的にDeclare Indexをゼロから手動で作成する必要はない。
下の画像はDeclare Indexの中身。Joinの条件などを設定することが可能。
手順③:出力項目の設定
Report Definitionに戻り、Queryタブを開く。ここのColumn Sourceで、手順①で設定したPrefixを用いて表示させたい項目を設定する。(Prefix).(Property)の形で記述する。
以上で必要な設定はおわり。
表示結果
作成したReport Definitionを実行すると、以下のようにCaseに複数紐づく明細が出力される。
環境
Pega Platform 8.3.0 Personal Editionを使用
おわり~