こいけるの日記

データサイエンス / データエンジニアリングに興味がある若手SIer社員の日記

【Pega】更新・削除してしまったRuleを元に戻す方法

f:id:zaohgyu:20191110170601p:plain

夢中になって実装を進めていると、「あっ、間違ってルール消しちゃった。。。」ということがある。 焦らず以下の方法を踏めば、Ruleを復活することができる。

更新したRuleを過去の状態に戻す

手順①:RuleのHistoryを開く

過去の状態に戻したいRuleのHistoryタブを開く。

f:id:zaohgyu:20191115202844j:plain

Historyタブ下部のView Full Historyをクリック

f:id:zaohgyu:20191115202925j:plain

手順②:戻す過去断面を指定する

以下のように、該当Ruleの編集履歴の画面が開く。画面左部の鉛筆マークをクリックすることで、その時点のルールのSnapShotが新規タブに開く。

f:id:zaohgyu:20191115203032j:plain

手順③:Restoreを実行

SnapShotの画面で、Restoreをクリックすると、現在のRuleの状態から開いているSnapShotの状態に戻すことができる。

f:id:zaohgyu:20191115203152p:plain

削除したRuleを復活させる

手順①:削除されたRule一覧を表示して選択

Dev Studioのメニュー上部にある⚙マークを選択して、Application>Development>Recent Actionをクリック。

f:id:zaohgyu:20191115204534p:plain

新規に開いたタブで、View Deleted Rulesをクリックすると、削除されたRule一覧が出てくる。

f:id:zaohgyu:20191115204654p:plain

f:id:zaohgyu:20191115204753p:plain

復活させたいRuleを選択。

手順②:Restoreを実行

あとは上の章の手順③と同様。これで削除されたRuleを復活できる。

環境

Pega Platform 8.3.0のPersonal Editionを使用

おわり~

【Pega】Checkout, Check Inを機能を使う

f:id:zaohgyu:20191110170601p:plain

Checkout, Check In機能とは?

PegaにおけるCheckout, Check Inは、Pegaの開発における排他制御を実現するための機能。

Checkout

変更を加えたいRuleのインスタンスをCheckoutすると、プライベートなコピーが作成され、そのコピーに対して変更を加えることができるようになる。

そしてCheckoutをした人以外は、そのRuleインスタンスをCheckoutできなくなる(悲観ロック)。

Check In

Check Inを行うことで、Checkout状態で行った変更が反映される。Subversionにおけるcommitのようなもの。

設定方法

デフォルトではCheckout, Check Inは無効となっているため、手動で設定する必要がある。

対象とするRule Setを開き、SecurityタブのUse Check-out?にチェックをつける。

f:id:zaohgyu:20191114000450j:plain

また、OperatorにCheckoutを許可するために、各OperatorのSecurityタブでAllow rule check outにチェックがついていることも必要である。

f:id:zaohgyu:20191114000516j:plain

使用方法

Checkout

各Ruleの画面右上のCheckoutを押下。

f:id:zaohgyu:20191114000552j:plain

Check In

Ruleを編集してSaveしたうえ、Check Inを押下。 途中でCheck outを放棄したい場合は、Discardを押下。

f:id:zaohgyu:20191114000612j:plain

Check Inコメントを入力したうえ、Submitすると完了。

環境

Pega Platform 8.3.0(Personal Edition)を使用

おわり~

【Pega】ショッピングサイトのサンプルアプリケーション

f:id:zaohgyu:20191110170601p:plain

Pegaとは?

PegaとはPegasystems社が提供するビジネスプロセス管理スイートです。

主に

  • ケースマネジメント
  • ロボティクスプロセスオートメーション(RPA)
  • AIを用いた顧客関係管理

の機能を持ったアプリケーションをハイスピードで開発するプラットフォームを提供しています。

2019年のGartner社のレポートでは、iBPMS (Intelligent Business Process Management Suites)の分野でLeaderの評価を獲得しています。

f:id:zaohgyu:20191111222236j:plain
出典:Gartner

ショッピングサイトのサンプルアプリ

www.youtube.com

こんな感じで、

  1. 顧客情報を入力
  2. 商品と個数を選択
  3. 買い物かごに追加
  4. かごの中身を確認、必要に応じて削除
  5. 確定(submit)

する画面を作ってみました。

上記のアプリをベースにし、これからの記事で

  • オートコンプリート入力
  • 画面項目のバリデーション
  • リストに項目を追加して表示
  • レポートでリスト項目を参照

などなどPegaの実装方法を紹介する予定です。

おわり~

【JavaScript】ランダムにWikipediaの記事を取得する関数

やりたいこと

現在作成中のLINE BOTの機能として、Wikipediaの1記事の情報をランダムにとってきて

  • 記事のタイトル
  • 記事のURL

をレスポンスしてくれる機能を作りたい。

使用したAPIとその使い方

MediaWiki APIを使用した。

基本的な仕様や使い方、使用上の注意点はこの記事を参照のこと。

以下のURLを指定することで、Wikipediaからランダムに1記事の基本情報を取得することが可能。

https://ja.wikipedia.org/w/api.php?format=json&action=query&generator=random&grnnamespace=0&prop=info&inprop=url&indexpageids

パラメータを簡単に説明すると、

  • format=jsonJSON形式を指定
  • action=query でデータ取得のアクションを指定
  • generator=random で記事をランダムに取得するよう指定
  • grnamespace=0 で持ってくる記事の名前空間(分類のようなもの)を0(標準)に設定
  • prop=info で記事の基本情報を取得
  • inprop=url で記事のURLも持ってくるよう設定
  • indexpageids でページのIDを付与 これを指定しなければいけない理由は後述

このURLでの取得例がこちら

f:id:zaohgyu:20191023224400j:plain
FF出てきた!!!

JavaScriptのサンプルコード

上記のURLを用いて記事の情報をJSONで取得し、記事のタイトルとURLを返すサンプルコード

function getRandomArticle() {
  const url = 'https://ja.wikipedia.org/w/api.php?format=json&action=query&generator=random&grnnamespace=0&prop=info&inprop=url&indexpageids';
  const res = UrlFetchApp.fetch(url);
  const item = JSON.parse(res);
  
  // 取得したページのIDを取得
  const pageID = item.query.pageids;
  // ページのタイトルを取得
  const pageTitle = item.query.pages[pageID].title;
  // ページのURLを取得
  const pageUrl = item.query.pages[pageID].fullurl;
  
  // リプライ用のテキスト生成
  replyText  = 'こんな記事を拾ってきたわん!'+'\n';
  replyText += '【'+pageTitle +'】'+'\n';
  replyText += pageUrl;
  
  return replyText;
}

上に貼ったJSONサンプルを見ると分かるが、query.pagesの直下に該当記事のpageIDが変数名として入るフォーマットになっている。

記事はランダムに取得するため、当然このpageIDは都度変わる。

そのため、まずはquery.pageidsからpageIDを取得したうえ、その値をブラケット記法で用いて各変数にアクセスしている。

URLにindexpageidsを指定したのはこのquery.pageidsを表示するようにするためだった。

LINE BOTで動かしてみる

f:id:zaohgyu:20191023231816p:plain:w300

こんな感じ

おわり~