Enterprise Edition機能の追加パッケージ

1. セットアップ

  1. 有償版のSDKに同梱されているEnterprise Edition機能の追加パッケージ iplass-ee-sample-app-package.zip を取得します。

  2. 既に作成したTenantでAdmin ConsoleのPackaging機能を利用して追加パッケージをインポートします。

2. Aggregation

Enterprise Editionの集計機能です。
このサンプルではSimple、CrossTab、Cube三つの集計タイプを利用しています。管理用画面でさまざまのグラフを表示します。
Aggregationの作成方法と各設定項目の説明について、開発者ガイド集計の管理の章を参照してください。

sample ec aggregation filetree
  1. CrossTab集計タイプ

  2. Simple集計タイプ

  3. Cube集計タイプ

2.1. クロス集計

定型集計、Entityのデータをクロス集計、表示します。

AdminConsoleでの設定

sample ec aggregation crosstab settings
  1. 集計タイプをCrossTabに選択します。

  2. 集計対象となるエンティティをお問合せに選択します。

  3. 集計結果の表を表示します。

  4. 集計結果のグラフを表示します。

  5. 集計表に各列の合計値を表示します。

  6. 集計表に各行の合計値を表示します。

※ 各設定項目の説明は開発者ガイド クロス集計を確認してください。

メニューへの登録

オペレーター用メニューまたはマネージャー用メニューを開きます。

sample ec aggregation crosstab topmenu settings
  1. アクションパラメーターをdefName=samples/ec01/inquiryAggregateに設定します。

※ 作成されたAggregationをメニューに登録する方法について、開発者ガイド表示方法の章を確認してください。

画面表示

マネージャーまたはオペレーターに属するユーザーが「ECそのほか」メニューを開き、「お問合せ状況」サブメニューをクリックします。

sample ec aggregation crosstab

2.2. 単純集計

定型集計、Entityのデータを集計、一覧表示します。
商品別売上集計(直近1カ月)を例として説明して行きます。

AdminConsoleでの設定

  • 集計表設定

    sample ec aggregation simple settings
    1. 集計タイプをSimpleに選択します。

    2. 対象となるエンティティを注文明細に選択します。

    3. フィルター項目を指定します。

    4. 集計表設定で、集計用EQL文を指定します。

※ 各設定項目の説明は開発者ガイド単純集計の章を確認してください。

  • グラフ設定

    sample ec aggregation simple settings graph 1
    sample ec aggregation simple settings graph 2
    1. グラフタイプを棒グラフに選択します。

    2. 横軸列を商品に選択します。

    3. 軸1を売上金額(合計)に選択します。

    4. 軸2のグラフタイプを線グラフに選択します。

    5. 軸2を注文数(合計)に選択します。

画面表示

マネージャーに属するユーザーが管理用画面で集計情報を確認することができます。
「集計画面を表示する」ボタンをクリックすると、集計結果の表とフィルター条件が表示されます。

sample ec aggregation simple

2.3. キューブ集計

※ キューブ集計を利用するために、まずキューブを作成しておく必要があります。Cubeを参照してください。
ここでは請求用Cubeを利用している売上傾向(棒グラフ)のキューブ集計を例として説明して行きます。

AdminConsoleでの設定

sample ec aggregation cube settings
  1. 集計タイプをCubeに選択します。

  2. 作成された請求用Cubeを選択します。

  3. 集計結果の表を表示します。

  4. フィルター項目を指定します。

  5. 集計表示タイプを棒グラフに選択します。

※ 各設定項目の説明は開発者ガイドキューブ集計の章を確認してください。

画面表示

マネージャーに属するユーザーが「EC注文管理」メニューを開き、「売上集計」をクリックします。 集計グラフ「売上傾向(棒グラフ)」を参照する事が出来ます。

sample ec aggregation cube

「集計画面を表示する」ボタンをクリックすると、集計設定画面が表示されます。

sample ec aggregation cube result 1
sample ec aggregation cube result 2
  1. CubeItemからドラッグ&ドロップで設定可能です。

  2. フィルター条件(Where)を画面上で設定可能です。

  3. クリックすると、絞込みを行うダイアログが表示されます。

  4. クリックすると、保存リストダイアログが表示され、検索結果を保存リストに保存することが出来ます。

  5. 設定項目の説明は開発者ガイドキューブ集計の章を確認してください。

3. Cube

3.1. Cubeの作成例

このサンプルでは請求用Cubeを作成しています。
以下は請求用CubeCubeを例として説明して行きます。

sample ec cube filetree

注文明細用Cube

sample ec cube settings
  1. キューブタイプをEntityに選択します。

  2. Cube表示時に最新データを自動的にロードにします。

  3. ハッシュ値を利用してパーティショニングします。

  4. パーティショニングアイテム名を名前(注文明細番号)に選択します。

  5. パーティション総数を指定します。

  6. 集計対象エンティティを請求エンティティに選択します。

  7. 集計に使用するデータをメモリにロードします。

※ 設定項目の説明は開発者ガイドCubeの管理の章を参照してください。

4. DashBoard

このサンプルでは作成したAggregationを複数選択し、ひとつの画面に表示しています。
それに、複数のAggregationを跨いだフィルターを設定しています。

4.1. AdminConsoleでの設定

sample ec dashboard filetree
sample ec dashboard settings
  1. 中心となる集計定義

  2. カスタムのダッシュボードアイテム

  3. このサンプルで作成している集計

※ 設定項目の説明は開発者ガイド ダッシュボードの管理の章を参照してください。

4.2. 画面表示

マネージャーに属するユーザーが「EC注文管理」メニューを開き、「売上集計」サブメニューをクリックすると、ダッシュボードを参照することが出来ます。

sample ec dashboard filter
  1. 中心となる集計定義

  2. カスタムのダッシュボードアイテム

各集計グラフ

sample ec dashboard orderItemAggregatedByDay
sample ec dashboard orderItemAggregate
sample ec dashboard settlementCubeSalesTrendByBarGraph
sample ec dashboard settlementCubeSalesTrend

5. Entity Listing

このサンプルではマネージャーに属するユーザーが注文明細のエンティティデータに対して、以下の操作が可能です。

  1. 抽出条件を指定すること

  2. その作成した条件や検索結果を保存・共有

※ Entity Listingの作成方法は開発者ガイドEntityListingの章を参照してください。

5.1. AdminConsoleでの設定

sample ec entitylisting filetree
  1. 注文明細カスタム検索EntityListing

sample ec entitylisting settings
  1. Default Setting 設定を変更すると、「Save」ボタンをクリックして変更を保存します。

  2. Custom Setting 設定を変更すると、「OK」ボタンをクリックして変更を保存します。 ※

※ Custom Settingでの設定がDefault Settingより優先されます。設定項目の説明は開発者ガイドEntityListingの管理の章を参照してください。

メニューへの登録

マネージャー用メニュー定義を開きます。

sample ec entitylisting topmenu settings
  1. アクションパラメーターをdefName=samples/ec01/OrderItemListing&entityName=samples.ec01.order.OrderItemに指定します。 ※

※ 作成されたEntityListingをメニューに登録する方法について、開発者ガイド表示方法を参照してください。

5.2. 画面表示

マネージャーに属するユーザーが「EC注文管理」メニューを開き、「注文明細カスタム検索」サブメニューを開くと、注文明細カスタム検索を操作することが出来ます。

sample ec entitylisting
  1. 「リスト保存」をクリックすると、検索結果を保存リストに保存することができます。

6. 保存リスト

このサンプルでは幾つかの注文明細カスタム検索結果を保存リストとして保存しています。
マネージャーに属するユーザーが「保存リスト」メニューを開き、保存フォルダと保存リスト一覧を参照することができます。

sample ec savedlist folder list
  1. 保存フォルダ

  2. 保存リスト

また、管理用Top画面左側のウェジェットエリアからも参照することができます。

sample ec savedlist widget

「2018年10月:小平太郎の注文履歴」保存リストをクリックすると、以下の保存情報が表示されます。

sample ec savedlist sample 1
sample ec savedlist sample 2

※ 検索結果の保存と表示方法は開発者ガイドのEntityListingの章を参照してください。

7. Workflow

このサンプルでは、「お問合せ処理」と「注文処理」ワークフローが用意されています。

sample ec workflow filetree
  1. お問合せ処理ワークフロー

  2. 注文処理ワークフロー

実際にワークフローを実行する場合は、「オペレーター」グループと「マネージャー」グループそれぞれに属する ユーザーの登録が必要です。
ユーザー登録の詳細については、ユーザーについてを参照してください。

7.1. お問合せ処理

ワークフローの作成

sample ec workflow inquiry processing
  1. エンティティが格納されている変数名を指定します。

    sample ec workflow inquiry processing variable
  2. お問合せ対応処理

    オペレーターに属するユーザーにタスクを割り当てるように設定しています。

    sample ec workflow inquiry processing inquiry deal
  3. 対応完了ユーザータスク

    当該お問合せエンティティのお問合せステータスを対応完了(「3」)に設定します。

    sample ec workflow inquiry processing updateEntityTask2
  4. お問合せ終了承認
    マネージャーに属するユーザーにタスクを割り当てるように設定しています。
    当該タスクに対して「承認」または「差し戻し」を選択することができます。実行結果によって、ワークフローの遷移先が変わります。

    sample ec workflow inquiry processing inquiry approve
  5. 対応完了ユーザータスク

    当該お問合せエンティティのお問合せステータスを処理中(「2」)に戻します。

  6. 対応完了ユーザータスク

    当該お問合せエンティティのお問合せステータスを終了(「4」)に設定します。

※ ワークフローの設定項目について、開発者ガイドWorkflowの章を参照してください。

ワークフローの起動

お問合せエンティティに「afterInsert」イベントリスナーを登録しています。

sample ec workflow inquiry processing entity eventlistener
import java.util.LinkedHashMap;
import java.util.Map;
import org.iplass.mtp.ManagerLocator;
import org.iplass.mtp.workflow.WorkflowManager;

def wm = ManagerLocator.manager(WorkflowManager.class);

Map<String, Object> parameters = new LinkedHashMap<String, Object>();
parameters.put("inquiry", entity); (1)

wm.startProcess("samples/ec01/inquiry_processing", parameters); (2)
1 登録されたお問合せエンティティを"inquiry"という変数名として格納します。
2 お問合せ処理ワークフローを起動します。

画面表示

  • 事前設定

    このサンプルではワークフローの詳細表示の項目は事前に設定されています。ワークフローの詳細表示を調整したい時は、対象ロールのメニュー(このサンプルでは、オペレーター用のメニューは "Ope001Role")に「UserTask List」の編集画面を開き、
    「UserTaskView Settings」タブのワークフロー履歴項目に表示したい項目にチェックをいれてください。マネージャー用のメニューに同じような操作を実施してください。

    ※ 設定項目の説明は開発者ガイド利用方法の章を参照してください。

    sample ec workflow inquiry processing presettings
  • サンプルアプリの画面でお問合せ登録します。

    sample ec workflow inquiry processing inquiry register
  • オペレーターに属するユーザーのアカウントを利用して管理用画面にログインすると、ユーザータスク一覧に割り当てられたタスクを確認することが出来ます。
    鉛筆マークの編集ボタンをクリックすると、編集画面が開きます。

    sample ec workflow inquiry processing usertasklist operator

    コメントを入れて、「完了」ボタンを押します。
    ワークフロー履歴一覧に対応処理完了の操作履歴が確認できます。

    sample ec workflow inquiry processing usertasklist operator inquiry deal
  • マネージャーに属するユーザーのアカウントを利用して管理用画面にログインすると、ユーザータスク一覧に割り当てられたタスクを確認することが出来ます。
    鉛筆マークの編集ボタンをクリックすると、編集画面が開きます。

    sample ec workflow inquiry processing usertasklist manager

    コメントを入れて、「承認」または「差し戻し」処理が実行できます。今回は「承認」処理を実行します。
    ワークフロー履歴一覧に対応終了承認の操作履歴が確認できます。

    sample ec workflow inquiry processing usertasklist manager inquiry approve

7.2. 注文処理ワークフロー

ワークフローの作成

sample ec workflow order processing
  1. settlementの変数名を指定します。

  2. mailの変数名を指定します。

    sample ec workflow order processing variable
  3. 注文完了メールタスク

    Scriptの方式でmail変数名に格納されている文字列をTOメールアドレスに設定します。

    ※ 設定方法は開発者ガイドMailTaskの章を参照してください。

    sample ec workflow order processing mailtask1
  4. 配送処理を定義します
    割当ルールの種類をToQueueに設定します。 ※
    エンティティが"settlement"という変数に格納されているので、taskTargetEntityを"settlement" に指定します。
    当該タスクに対して「配送完了」または「配送不可」を選択することができます。実行結果によって、ワークフローの遷移先が変わります。

    ※ 割当ルールの設定項目の説明は開発者ガイド 割当ルールの設定の章を参照してください。

    sample ec workflow order processing userTask1
  5. ステータス更新
    請求エンティティの請求状況更新用のコマンドクラスを呼び出します。

    sample ec workflow order processing commandTask2
    import org.iplass.mtp.entity.UpdateOption;
    import org.iplass.mtp.entity.SelectValue;
    import org.iplass.mtp.util.DateUtil;
    
    def settlement = request.getAttribute("settlement");
    def status = settlement.settlementStatus.value;
    def oid = settlement.oid.value;
    
    // 請求状況
    settlement.setValue("settlementStatus", new SelectValue("2")); (1)
    
    // 納品予定日
    settlement.setValue("deliverGoodsDate", DateUtil.getCurrentTimestamp()); (2)
    
    UpdateOption option = new UpdateOption(false);
    option.setUpdateProperties("settlementStatus", "deliverGoodsDate");
    em.update(settlement, option);
    1 請求エンティティの請求状況を納品済み(「2」)に設定します。
    2 請求エンティティの納品予定日を今日の日付に設定します。
  6. ステータス更新処理(キャンセル) 請求エンティティの請求状況をキャンセル(「3」)に設定します。

  7. 配送完了メールタスク
    配送完了メールを送信します。

ワークフローの起動

請求エンティティに「afterInsert」イベントリスナーを登録しています。

sample ec workflow order processing entity eventlistener
import java.util.LinkedHashMap;
import java.util.Map;
import org.iplass.mtp.ManagerLocator;
import org.iplass.mtp.workflow.WorkflowManager;

def wm = ManagerLocator.manager(WorkflowManager.class);

Map<String, Object> parameters = new LinkedHashMap<String, Object>();
parameters.put("settlement", entity); (1)
parameters.put("mail", entity.order.mail); (2)
wm.startProcess("samples/ec01/order_processing", parameters); (3)
1 登録された請求エンティティを"settlement"という変数名に格納します。
2 登録された請求エンティティに紐づくオーダーエンティティの顧客メールアドレスを"mail"という変数名に格納します。
3 注文処理ワークフローを起動します。

画面表示

  • 事前設定

    • このサンプルではワークフロー履歴が見えるように、まずお問合せ処理ワークフローでの画面表示の事前設定を実施してください。

    • それに、ログ出力に送信メールを確認できるようにsrc/main/resouces/mtp-service-config.xmlファイルに以下の定義を追加してください。

          <service>
              <interface>org.iplass.mtp.impl.mail.MailService</interface>
                      <!-- ■ for develop only (additional="true) ■ -->
              <!-- 送信メールをデバッグ出力する場合、以下を有効にしてください。 -->
      
              <property name="listener" class="org.iplass.mtp.mail.listeners.LoggingSendMailListener" additional="true"/>
      
          </service>
  • サンプルアプリの画面でオーダーを注文します。

    sample ec workflow order processing order register
  • 注文完了メールタスクの実行確認

    16:47:42.438 [http-nio-8080-exec-8] DEBUG 41 Anonymous samples/ec01/shipping/OrderCommand  o.i.m.i.transaction.LocalTransaction - commit Transaction:org.iplass.mtp.impl.transaction.LocalTransaction@841561c
    16:47:42.453 [http-nio-8080-exec-8] DEBUG 41 Anonymous samples/ec01/shipping/OrderCommand  o.i.m.i.r.c.LocalTransactionConnectionWrapper - back to ResourceHolder:1503931896, URL=jdbc:mysql://[host]:[port]/[schema]
    16:47:42.453 [http-nio-8080-exec-8] DEBUG 41 Anonymous samples/ec01/shipping/OrderCommand  o.i.m.i.transaction.LocalTransaction - close Transaction:org.iplass.mtp.impl.transaction.LocalTransaction@841561c
    16:47:42.548 [http-nio-8080-exec-8] DEBUG 41 Anonymous samples/ec01/shipping/OrderCommand  o.i.m.m.l.LoggingSendMailListener -   From:testFrom@test.jp ReplyTo:testFrom@test.jp To:(1)sakaki@test.co.jp; Cc:(0) Bcc:(0) Subject:testHou06 ご注文の確認 FileName: PlainMessage:榊太郎さん、ご注文いただきありがとうございます。  【ご注文内容】 注文番号:po-201806-00041 Eメールアドレス:sakaki@test.co.jp ご住所:東京都千代田区x-x-x xxx室  注文合計: ¥   testHou06 に商品をご注文いただいた場合、本メールは、当サイトがご注文を受領したことを確認するものにすぎません。 testHou06 が販売する商品については、商品が発送されたことをお知らせするメールを当サイトからお送りした時点で、当該商品のご購入についての契約が成立します。 testHou06 以外の売主が出品する商品については、商品が発送されたことをお知らせするメールを当サイトからお送りする時点で、当該商品のご購入についての契約が成立します。  このEメールアドレスは、配信専用です。このメッセージに返信しないようお願いいたします。  今後ともtestHou06 をよろしくお願いいたします。  HtmlMessage:  (1)
    16:47:42.548 [http-nio-8080-exec-8] DEBUG 41 Anonymous samples/ec01/shipping/OrderCommand  o.i.mtp.impl.mail.MailServiceImpl - send mail flag of tenat configration is off, so don't send mail.
    1 ログから送信されたメールの中身を確認することができます。
  • タスクの割当

    オペレーターまたはマネージャーに属するユーザーのアカウントを利用して管理用画面にログインすると、(タスクの割当ルールが ToQueue に設定されているので)「タスクリスト」画面の「全てのタスク」タブに配送処理タスクが登録されていることが確認できます。

    割当ボタンをクリックすると、自分にこのタスクを割り当てます。

    sample ec workflow order processing userTasklist

  • 配送処理

    Myタスクのタスクに鉛筆マークの編集ボタンをクリックすると、編集画面が開きます。
    コメントを入力して、「配送完了」または「配送不可」処理が実行できます。今回は「配送完了」処理を実行します。
    配送完了ボタンを押しましたら、ワークフロー履歴一覧に配送完了の操作履歴が確認できます。

    sample ec workflow order processing userTasklist delivery ok

  • 配送完了メールタスクの実行確認

    17:02:13.567 [http-nio-8080-exec-9] DEBUG 41 76158 CompositeCommand  o.i.m.i.transaction.LocalTransaction - commit Transaction:org.iplass.mtp.impl.transaction.LocalTransaction@20414901
    17:02:13.577 [http-nio-8080-exec-9] DEBUG 41 76158 CompositeCommand  o.i.m.i.r.c.LocalTransactionConnectionWrapper - back to ResourceHolder:1402918786, URL=jdbc:mysql://[host]:[port]/[schema]
    17:02:13.577 [http-nio-8080-exec-9] DEBUG 41 76158 CompositeCommand  o.i.m.i.transaction.LocalTransaction - close Transaction:org.iplass.mtp.impl.transaction.LocalTransaction@20414901
    17:02:13.680 [http-nio-8080-exec-9] DEBUG 41 76158 CompositeCommand  o.i.m.m.l.LoggingSendMailListener -   From:testFrom@test.jp ReplyTo:testFrom@test.jp To:(1)sakaki@test.co.jp; Cc:(0) Bcc:(0) Subject:testHou06 ご注文の発送 (po-201806-00041) FileName: PlainMessage:testHou06 をご利用いただき、ありがとうございます。  お客様からご注文いただいた商品を本日発送いたしました。  【ご注文内容】 注文番号:po-201806-00041 Eメールアドレス:sakaki@test.co.jp ご住所:  注文合計: ¥   testHou06 のまたのご利用をお待ちしております。 このEメールアドレスは配信専用です。このメッセージに返信しないようお願いいたします。 HtmlMessage:  (1)
    17:02:13.680 [http-nio-8080-exec-9] DEBUG 41 76158 CompositeCommand  o.i.mtp.impl.mail.MailServiceImpl - send mail flag of tenat configration is off, so don't send mail.
    1 ログから送信されたメールの中身を確認することができます。