intra-mart Accel Platform IM-Workflow プログラミングガイド 第22版 2020-08-01

9.2.5. 処理対象者プラグインの構成

処理対象者プラグインを作成するには、次の3ファイルを作成する必要があります。

9.2.5.1. <plugin.xml>ファイル定義

「plugin.xml」は、”PluginManager”によって管理されるファイルです。
処理対象者プラグインを新規に作成する場合は、plugin.xml を新規作成します。
IM-Workflow が提供するサンプルの plugin.xml を参考に作成されることを推奨します。
intra-mart Accel Platform が提供するプラグインの仕様については、以下のドキュメントも合わせて参照してください。
作成したプラグインを intra-mart Accel Platform 上に追加する方法は以下のドキュメントを参照してください。
本項では、次の plugin.xml の内容をもとに、処理対象者プラグインを構成するそれぞれの要素、属性について説明します。
/plugin/jp.co.intra_mart.sample.workflow.purchase.plugin.authority.node.approve/plugin.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
    <extension point="jp.co.intra_mart.workflow.plugin.authority.node.approve" >

        <authority
            id="jp.co.intra_mart.sample.workflow.purchase.plugin.authority.node.approve.item_total.script"
            name="%jp.co.intra_mart.sample.workflow.purchase.plugin.authority.node.approve.item_total.script"
            version="8.0.99"
            rank="910"
            enable="true">
            <configPage>
                <script pagePath="sample/im_workflow/purchase/plugin/authority/item_total/itemTotalConfig">
                    <parameter key="pluginName" value="SAMPLE.IMW.CAP.030" />
                </script>
            </configPage>
            <extend>
                <script
            file="sample/im_workflow/purchase/plugin/authority/item_total/WorkflowAuthorityExecEventListener" />
            </extend>
        </authority>

        <authority
            id="jp.co.intra_mart.sample.workflow.purchase.plugin.authority.node.approve.item_total.javaee"
            name="%jp.co.intra_mart.sample.workflow.purchase.plugin.authority.node.approve.item_total.javaee"
            version="8.0.99"
            rank="920"
            enable="true">
            <configPage>
                <javaee applicationId="imw_sample_purchase" serviceId="authority_item_total">
                    <parameter key="pluginName" value="SAMPLE.IMW.CAP.031" />
                </javaee>
            </configPage>
            <extend>
                <java class="jp.co.intra_mart.sample.workflow.purchase.plugin.authority.item_total.WorkflowAuthorityExecEventListener" />
            </extend>
        </authority>

    </extension>
</plugin>

9.2.5.1.1. pluginタグ設定

処理対象者プラグインで重要になるのは、下記の要素です。
<extension point> 処理対象者プラグインを差し込むノードの種類により、 <extension point>が変わります。 差し込みたいノードの<extension point>を指定します。
<configPage> <script pagePath>

<configPage>は、[ルート定義]画面において、 ノードに設定する処理対象者の一覧画面から、 処理対象者プラグインが選択されたときに呼ばれる プログラムです。

このプログラムは、スクリプト開発モデルおよび、 JavaEE開発モデルで記述することが可能です。 スクリプト開発モデルでプログラムを作成する場合は、 <script pagePath>にパスを指定します。 JavaEE開発モデルでプログラムを作成する場合は、 applicationId および serviceId を指定します。

<javaee applicationId serviceId>
< extend > <script file>

< extend > に指定するプログラムは、処理対象者を 決定するプログラムが対象です。

このプログラムは、スクリプト開発モデルおよび、 JavaEE開発モデルで記述することが可能です。 スクリプト開発モデルでプログラムを作成する場合は、 <script file>にパスを指定します。 JavaEE開発モデルでプログラムを作成する場合は、 <java class>にパッケージを指定します。

<java class>
その他の要素、属性については、「 PluginManagerのAPIドキュメント 」を参照してください。

コラム

処理対象者プラグインは、「キャッシュ設定」(「 IM-Workflow 仕様書 」)によりキャッシュされ、処理対象者プラグインのインスタンスは複数のスレッドで再利用しています。
そのため、処理対象者プラグインの実装にあたっては、メンバ変数を利用しないようにしてください。
サンプルの plugin.xml としては、下記を用意しています。
  • 承認ノード

    <./plugin/jp.co.intra_mart.sample.workflow.purchase.plugin.authority.node.approve/plugin.xml>
    
  • 承認ノード

    <./plugin/jp.co.intra_mart.sample.workflow.purchase.plugin.authority.node.approve.static/plugin.xml>
    
  • 動的承認ノード

    <./plugin/jp.co.intra_mart.sample.workflow.purchase.plugin.authority.node.dynamic/plugin.xml>
    
  • 確認ノード

    <./plugin/jp.co.intra_mart.sample.workflow.purchase.plugin.authority.node.confirm/plugin.xml>
    

9.2.5.1.2. configPage設定

前出の plugin.xml で<configPage>として指定したプログラムを作成します。
[ルート定義]画面において、ノードに設定する処理対象者の一覧画面から、処理対象者プラグインが選択されたときに呼ばれるプログラムです。
製品が提供している処理対象者プラグインのように検索を利用したい場合には、<configPage>で指定したプログラム内で検索画面を呼び出すように実装してください。
../../../_images/customize_guide_7_figure_1.png
選択された対象者プラグインの情報を、[ルート定義]画面に引き渡します。
サンプルプログラムとしては、下記を用意しています。
  • スクリプト開発モデル

    <./jssp/src/sample/im_workflow/purchase/plugin/authority/item_total/itemTotalConfig.html>
    <./jssp/src/sample/im_workflow/purchase/plugin/authority/item_total/itemTotalConfig.js>
    
  • JavaEE開発モデル

    <./lib/im_workflow-8.0.0-sample.jar/service-config-imw_sample_purchase.xml>
    ------------------------------------------------------------------------------------------------------------------------
    
    <service>
        <service-id>authority_item_total</service-id>
    
        <controller-class>jp.co.intra_mart.sample.workflow.purchase.plugin.authority.item_total.controller.service.ItemTotalConfigServiceController</controller-class>
    
        <transition-class>jp.co.intra_mart.sample.workflow.purchase.plugin.authority.item_total.controller.service.ItemTotalConfigTransition</transition-class>
    
        <next-page>
            <page-path>/sample/workflow/purchase/plugin/authority/item_total/itemTotalConfig.jsp</page-path>
        </next-page>
    </service>
    

9.2.5.1.3. extend設定

前出の plugin.xml で<extend>として指定したプログラムを作成します。
処理対象者を決定する際に実行されるプログラムです。
ここで指定するプログラムには、次の3つのメソッドを実装する必要があります。
メソッド 概要
execute(WorkflowAuthorityParameter workflowParam, WorkflowMatterParameter matterParam)
処理対象者を取得するメソッド
対象のノードに案件が到達したときに実行されます。
getTargetUserList(WorkflowAuthorityParameter workflowParam,WorkflowMatterParameter matterParam, WorkflowSortCondition[] sort)
処理対象ユーザの一覧を取得するメソッド
ロケール単位にユーザモデルのリスト(List<UserDataModel>)を返却する必要があります。
[案件操作]-[ノード編集]画面の「状況確認」ボタン押下時に表示される[対象者状況確認]画面で使用されます。
getDisplayName(WorkflowAuthorityParameter workflowParam)
処理対象者プラグインの名称を取得するメソッド
ロケール単位に取得してください。
プラグインの名称を表示するため使用されます。
サンプルプログラムとしては、下記を用意しています。
  • スクリプト開発モデル

    <./jssp/src/sample/im_workflow/purchase/plugin/authority/item_total/WorkflowAuthorityExecEventListener.js>
    
  • JavaEE開発モデル

    <%サンプルプログラムディレクトリ%/jp/co/intra_mart/sample
                /workflow/purchase/plugin/authority/item_total/WorkflowAuthorityExecEventListener.java>