第12章 電子メールサポート

本章では、カスタマイズなしに JPDL で利用可能な 電子メールサポートについて説明します。本章を読んで、様々なメール機能の設定する方法について学びましょう。

12.1. JPDL でのメール

プロセスから電子メールが送信される時点を指定する方法は 4 つあります。各方法について順番に説明しましょう。

12.1.1. メールアクション

プロセスグラフで電子メールの送信をノードとして表示しない場合、 メールアクションを使用します。

注記

メールアクションは通常のアクションを追加できるプロセスの場所ならどこにでも追加することができます。
<mail actors="#{president}" subject="readmylips" text="nomoretaxes" />
次のように、 サブジェクト属性とテキスト属性を要素として指定できます。
<mail actors="#{president}" >
    <subject>readmylips</subject>
    <text>nomoretaxes</text>
</mail>
各フィールドには JSF のような表現を指定できます。
<mail
    to='#{initiator}'
    subject='websale'
    text='your websale of #{quantity} #{item} was approved' />

注記

表現に関する詳細は、 「式」 を参照ください。
actorsto の 2 つの属性が受信者を指定します。 to 属性はセミコロンで区切られた電子メールアドレスのリストに解決する必要があります。 actors 属性はセミコロンで区切られた actorIds のリストに解決する必要があります。 これらの actorIds は電子メールアドレスに解決されます (詳細は 「アドレス解決 」 を参照)。
<mail 
    to='admin@mycompany.com' 
    subject='urgent'
    text='the mailserver is down :-)' />

注記

受信者の指定方法については、 「メール受信者の指定」 を参照してください。
テンプレートを使用して電子メールを定義することができます。 次のようにテンプレートプロパティを上書きします。
<mail template='sillystatement' actors="#{president}" />

注記

テンプレートの詳細については、 「電子メールテンプレート」 を参照してください。

12.1.2. メールノード

メールアクションと同様に、 電子メール送信のアクションをノードとしてもモデリングすることができます。 この場合、 ランタイムの挙動は同じですが、 プロセスグラフで電子メールがノードとして表示されます。
メールノードは mail action と全く同じ属性と要素をエレメントをサポートします (詳細は 「メールアクション」 を参照してください)。
<mail-node  name="send email" 
            to="#{president}"
            subject="readmylips" 
            text="nomoretaxes">
    <transition to="the next node" />
</mail-node>

重要

メールノードが 1 つの退場遷移のみを持つようにしてください。

12.1.3. タスクが割り当てられた電子メール

タスクがアクターに割り当てられた時に通知電子メールを送信できます。 以下のようにタスクに対して notify="yes" 属性を使用してください。
<task-node name='a'>
    <task name='laundry' swimlane="grandma" notify='yes' />
    <transition to='b' />
</task-node>
notify を yestrueon のいずれかに設定して、 タスクに割り当てられたアクターへビジネスプロセスマネージャーが電子メールを送信するようにします (電子メールはテンプレートを基とし、 Web アプリケーションのタスクページへのリンクが含まれています)。

12.1.4. タスクリマインダ電子メール

電子メールをタスクリマインダーとして送信できます。JPDL の reminder 要素はタイマーを利用します。最も一般的な属性は duedaterepeat です。 アクションを指定する必要はありません。
<task-node name='a'>
    <task name='laundry' swimlane="grandma" notify='yes'>
        <reminder duedate="2 business days" repeat="2 business hours"/>
    </task>
    <transition to='b' />
</task-node>