UI デザイナーで作成されていないカスタムページでビジネスデータをアクセス・表示する方法(チュートリアル)

概要

このチュートリアルの目的は、カスタムページ と ビジネス データモデルBDM)の2つのテクノロジーがどのような恩恵をもたらすか示すことにあります。カスタムページの内部でビジネスデータを表示する方法を説明します。

注意: この情報は、UI デザイナーを使用せずに手動で作成したカスタムページに適用されます。したがって、UI デザイナーを使用してページを作成する場合は、ビジネスデータのアクセスに REST BPM API を使用するので、適用する必要はありません

必要前提条件

このチュートリアルの主要な部分に着手する前に、次のステップを実行しておく必要があります:

  1. Bonita BPM Studio でビジネス データモデルを作成する
  2. ビジネス データモデルをエクスポートし、デプロイする
  3. Groovyのカスタムページを定義する。(詳しくは、カスタムページを参照)
  4. カスタムページを Bonita BPM ポータル(システム管理者としてログイン)に追加する。(詳しくは、カスタムプロファイルカスタムページを参照)

主なステップ

ビジネス データモデルをインポートする
ビジネス データモデルをアクセスする
データを表示する
注意事項

ビジネス データモデルをインポートする

カスタムページは、Bonita BPM Studio で BDM を開発中に生成された .jar ファイルを介して BDM をアクセスする必要があります。

  1. engine-server/work/tenants/<tenant id>/data-management-client のディレクトリに置かれている client-bdm.zip ファイルを解凍します。
  2. 解凍済みの zip ファイル フォルダ内の bdm-dao.jarbdm-model.jar ファイルを次の「lib」と呼ぶカスタムページ ディレクトリにコピーします。
    bonita_homeclienttenants1workpagescustompage_yournamelib

注意: このカスタムページを含む新規フォルダは、そのカスタムページが追加されたときに自動的に作成されます。

ビジネス データモデルをアクセスする

事例として休暇申請に関する情報を格納する Bonita BPM Studio の休暇申請プロセスに、サンプルのビジネス データモデルを組み込んでいます。

Index.groovy page ページでは、BDM(サンプルでは、休暇申請のアイテムと休暇申請のItemDAO) を表している2つのJava クラスをDAO オブジェクト(import com.bonitasoft.engine.bdm.BusinessObjectDAOFactory import com.leaverequest.survey.leaverequestItemDAO import com.myCorp.survey.leaverequestItem)で提供する BusinessObjectDAOFactory と一緒にインポートする必要があります。

次に、カスタムページの本文では、これらのクラスとメソッドが使用可能です:

//コンテキストから apiSession を取得します。

def apiSession=pageContext.getApiSession();

// DAO factory を作成します。

def BusinessObjectDAOFactory daoFactory = new BusinessObjectDAOFactory();

// DAO object を入手するためにその factory を使用します。

def LeaveRequestDAO dao = daoFactory.createDAO(apiSession, LeaveRequestDAO.class);

// BDM からデータをアクセスするために DAO object のメソッドを使用します。そのメソッドに事前に計算した入力の値を渡すことができます。

def List<LeaveRequest> leaveRequestList = dao.find(0,10);

データを表示する

表示を必要とするデータは、開始日と終了日を除いてすべて文字列です。したがって、それらの開始日と終了日は書式変換する必要があります。たとえば:

DateFormat df = new SimpleDateFormat(“dd/MM/yyyy”);

さて、あなたはページ上にそれらを表示できるビジネスオブジェクトを入手しました。あなたのニーズに従って標準のHTMLに表示する方法はいろいろあります。

たとえば、次の方法を使用できます。

out.println()

ページ内にHTMLをプリントするには:

out.println(‘<table class=”gridtable”><caption>Leave Request List</caption><tr><th>Start Date </th><th>End date</th><th>Leave Type</th></tr>’);

for(LeaveRequest leaveRequest: leaveRequestList){
out.println(“<tr><td>” + df.format(leaveRequest.getStartDate())+” </td><td> ” +  df.format(leaveRequest.getEndDate())+” </td><td> ” +leaveRequest.getLeaveType() + “</td></tr>”);
}

out.println(“</table>”);

注意事項

  1. カスタムページを開発しているとき、何らかのアクシデントでBonita BPM Studio を停止させた場合、デフォルトではテナントのファイルシステムとデータベースが消去され、途中の作業結果を失う可能性があることに注意してください。最良の回避策は、Bonita BPM Studio上でデータベースの削除を防止することです。[環境設定] -> [データベース] に進んで、「終了時にビジネス データモデルのデータベースをきれいにする」をアンチェックします。
  2. カスタムページがささいなものである場合は、その開発に Groogy のIDEを使用するアイデアがあります。それを使用するとオートコンプリート、文法チェック、テキストの色分けなどが可能です。たとえば、Eclipse を使用する場合、Groovy のプラグインをインストールできるので、新規 Groovy プロジェクトを作成しカスタムページのファイルシステムにポイントします。さらに、それらの bonita jar を追加するビルドのパスを設定する必要があります:
    Bonita-client-sp-6.x.jar

    console-server-6.x.jar

    そして、これらのデータモジュール:

    bdm-dao.jar

    bdm-model.jar

  3. よく用いられるケースは、次の例のサブミット ボタンを通じてページのコンテンツをリスレッシュし、DAOにクエリを再送する場合です。
    out.println(“<form name=’myform’ id=’myform’ action=”+actionUrl+”>”);
    out.println(“<input type=’text’ id=’name’></input>”);

    out.println(“<button id=’myButton’>Submit</button></form>”)

  4. フォームのアクション (この例では、actionUrl ) は、カスタムページと同じ url にポイントすべきです。たとえば、
  5. サブミットボタンをクリックすることによって、url がコールされ、入力パラメータが設定されるので、次回それをロードされたページは、この情報を持ちます。