迷走するSE@SIerが頑張るブログ

SIerのSEが勉強した内容を記載していきます。

【Pega】Workgroup, Workqueue, OrganizationUnit, Workpartyって結局なんなん?

はじめに

Pegaの世界では、ユーザをグループ分けする仕組みがいくつか存在しますが、名前が似ていたり、各仕組の関係性がちょっとわかりにくかったりするので、整理してみました。

  • Organization, Division, Unit
  • Workgroup
  • Workqueue (Workbasket)
  • Workparty

OrganizationUnit

組織的な階層を管理するための仕組み。

Organization、Division、Unitという階層構造を持たせることができます。

例えば、以下のような設定ができます。

 

Organization・・・〇〇会社

↑ (従属)

Division・・・営業X部

↑ (従属)

Unit・・・YY課

 

Unitは、配下Unitを作成できます。

こんな感じです。↓

f:id:meisoSuruSE:20210912172403p:plain

Pegaのユーザは、必ず特定のUnitに属します。

Workgroup

組織的な階層(上記で紹介したOrganizationUnit)とは別にグループ分けを行うための仕組み。

例えば、営業部A課に属しているAさんと、事務統括部B課に属しているBさんが、「新人担当グループ」にも属している、というように、Unitを跨いだグループ分けを表すのにWorkgroupが使えます。

Pegaのユーザは、0個以上のWorkgroupに属することが可能です。

Workqueue (Workbasket)

グループ分けに使われるものではありません。ケースアサインに使用されるものとなります。

Pegaの世界では、業務フローの一部分を抽象化したものケースと呼んでいて、特定のユーザにフロー内のタスクを割り当てることができます。

特定のユーザへの割当だけでなく、チームに対して割り当てることもできます。チーム全員が見れる未決箱、みたいなものをイメージするとわかりやすいと思います。

この「チーム全員が見れる未決箱」というのをWorkqueueと言います。以前のバージョンではWorkbasketと読んでいたようです。

Pegaのユーザは、0個以上のWorkqueueに属することが可能です。

Workparty

ケースのライフサイクルの任意のタイミングで、通知を行いたい連絡先情報を持つための仕組みであり、上記三つのようなユーザを分ける為の仕組みではありません。

Pega Academyだと、ユーザが申込完了したらマネージャーとかに通知送ることができるぜ的なことが書いてあった気がしますが、連絡先情報を格納できる仕組みなので、通知以外にも、参照権限のコントロールに使うなどいろいろ応用はできます。

OrganizationUnit, Workgroup, Workqueueの関係性

f:id:meisoSuruSE:20210929001621p:plain

  • Organization, Division, Unitの関係性については上記に記載した通りです。
  • Unitについては多重階層を構成できるので、自身に対してリレーションを記載しています。
  • Operatorは、1つのUnit、1つのWorkGroupに属する必要があります。また、必須ではありませんが複数のWorkqueueに属することができます。
    ※Workgroupの登録は複数できますがラジオボタンで選択する必要があるので実質一つのようです。ただデータの関連という意味では複数登録できるのでこのような記載にしています。

    f:id:meisoSuruSE:20210929002223p:plain

  • WorkqueueはUnitとWorkgroupを紐づける必要があります。下記スクショのOrganization欄の部分が該当部分です。f:id:meisoSuruSE:20210929001629p:plain
  • Workgroupの方にもひとつのWorkqueueを登録する必要があります。Pegaの説明ではこのWorkgroupがケース割り当てを探しにいくWorkqueueを指定するようですが、設計した処理の中で使わないのであれば登録値はなんでもよいと思います。

    f:id:meisoSuruSE:20210929003821p:plain

結局どう使うの?

作り方によるかな、と思います。

WorkqueueとWorkgroupの関係性がN:Nなのが少々ややこしいのですが、どう使うかは自由なので、それは要件にあうように設計すればよいかなと思います。

Pegaでアプリを作るということであれば、「あなたのタスク一覧」「未決箱内タスク一覧」のような一覧画面を作成するかと思います。その一覧を表示するロジックは自由に設計できるので、そこで要件通りの表示ができるようにこの仕組みを使えばよいと思います。(例えば、ユーザが属しているUnitからそのUnitに一致するWorkqueueを検索し、そのWorkqueueにアサインされているケースを表示する、とか。この場合はWorkgroupを全く使わないですがユーザは必ずどこかのWorkgroupに属さないといけないので、適当なworkgroupを作成しておいて全ユーザはそこに属するよう設定するようにすればよいと思います。)

同様に、ケースのルーティングも自由に設計できるので要件に合わせて使えばよいと思います。(ケースで回覧先と指定されたWorkGroupからWorkqueueを探す、OrganizationUnitからWorkqueueを探す等)