第12章 メールサポート


この章では、JPDL で利用できる "標準" のメールサポートについて説明します。メール機能のさまざまな要素を設定する方法は、以下の情報を参照してください。

12.1. JPDL におけるメール

プロセスからメールを送信する時点を指定する方法は、4 つあります。

12.1.1. メールアクション

プロセスグラフ内のノードとしてメールを表示しない理由がある場合は、メールアクション を使用します。
注記
メールアクションは、通常のアクションを追加できる場所なら、どこでもプロセスに追加できます。
<mail actors="#{president}" subject="readmylips" text="nomoretaxes" />
Copy to Clipboard Toggle word wrap
次のように、件名とテキストの属性を要素として指定します。
<mail actors="#{president}" >
    <subject>readmylips</subject>
    <text>nomoretaxes</text>
</mail>
Copy to Clipboard Toggle word wrap
各フィールドには、JSF ライクな式を含めることができます。
<mail
    to='#{initiator}'
    subject='websale'
    text='your websale of #{quantity} #{item} was approved' />
Copy to Clipboard Toggle word wrap
注記
式の詳細は、「 式 」 を参照してください。
受信者は、actorsto という 2 つの属性で指定します。to 属性は、メールアドレスのセミコロン区切りリストに "解決" される必要があります。actors 属性は、actorIds のセミコロン区切りリストに解決される必要があります。これらの actorIds は、さらにメールアドレスに解決されます。詳細は、「 アドレス解決 」 を参照してください。
<mail 
    to='admin@mycompany.com' 
    subject='urgent'
    text='the mailserver is down :-)' />
Copy to Clipboard Toggle word wrap
注記
受信者を指定する方法は、「 メールの受信者の指定 」 を参照してください。
メールは、テンプレートを使用して定義できます。テンプレートプロパティーを次のように上書きします。
<mail template='sillystatement' actors="#{president}" />
Copy to Clipboard Toggle word wrap
注記
テンプレートの詳細は、「 メールテンプレート 」 を参照してください。

12.1.2. メールノード

メールアクションと同様に、メールを送信するアクションも、ノードとしてモデル化できます。この場合、ランタイムの動作は同じですが、メールは プロセスグラフ 内のノードとして表示されます。
メールノードは、メールアクション とまったく同じ属性と要素をサポートします。(詳細は、「 メールアクション 」 を参照してください。)
<mail-node  name="send email" 
            to="#{president}"
            subject="readmylips" 
            text="nomoretaxes">
    <transition to="the next node" />
</mail-node>
Copy to Clipboard Toggle word wrap
重要
メールノードにある 退出 遷移が 1 つだけであることを必ず確認してください。

12.1.3. "タスク割り当て" メール

タスクがアクターに割り当てられたときに、通知メールを送信できます。この機能を設定するには、次の方法でタスクに notify="yes" 属性を追加します。
<task-node name='a'>
    <task name='laundry' swimlane="grandma" notify='yes' />
    <transition to='b' />
</task-node>
Copy to Clipboard Toggle word wrap
notify を yestrue、または on に設定すると、Business Process Manager は、タスクに割り当てられているアクターにメールを送信します。(このメールはテンプレートに基づいており、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>
Copy to Clipboard Toggle word wrap

12.2. メールにおける式

フィールド torecipientssubject、および text には、JSF ライクな式を含めることができます。(式の詳細は、「 式 」 を参照してください。)
式では、変数 swimlanesprocess variables、および transient variables beans を使用できます。これらは、jbpm.cfg.xml ファイルで設定します。
式は、アドレス解決 機能と組み合わせることができます。詳細は、「 アドレス解決 」 を参照してください。
この例では、president という名前の swimlane が存在することを前提としています。
<mail   actors="#{president}" 
        subject="readmylips" 
        text="nomoretaxes" />
Copy to Clipboard Toggle word wrap
このコードは、その特定のプロセスの実行において president として振る舞うユーザーにメールを送信します。

12.3. メールの受信者の指定

12.3.1. 複数の受信者

複数の受信者を、actors および to フィールドにリストできます。リスト内の項目は、コロンまたはセミコロンで区切ります。

12.3.2. BCC アドレスへのメールの送信

ブラインドカーボンコピー (BCC) 受信者にメッセージを送信するには、プロセス定義の bccActors 属性と bcc 属性のいずれかを使用します。
<mail to='#{initiator}' 
      bcc='bcc@mycompany.com' 
      subject='websale' 
      text='your websale of #{quantity} #{item} was approved' />
Copy to Clipboard Toggle word wrap
別の方法として、jbpm.cfg.xml で一元的に設定されている場所に BCC メッセージを常に送信する方法があります。次の例は、その方法を示しています。
<jbpm-configuration>
    ...
    <string name="jbpm.mail.bcc.address" value="bcc@mycompany.com" />
</jbpm-configuration>
Copy to Clipboard Toggle word wrap

12.3.3. アドレス解決

Business Process Manger 全体で、アクターは actorIds によって参照されます。これは、プロセスの参加者を識別するための文字列です。アドレスリゾルバー は、actorIds をメールアドレスに変換します。
アドレス解決を適用するには、actors 属性を使用します。これに対して、アドレスを直接追加する場合は、アドレス解決の適用を実行しない to 属性を使用します。
アドレスリゾルバーが次のインターフェイスを実装していることを確認してください。
public interface AddressResolver extends Serializable {
	Object resolveAddress(String actorId);
}
Copy to Clipboard Toggle word wrap
アドレスリゾルバーは、文字列、文字列のコレクション、または文字列の配列の 3 つの型のいずれかを返します。(文字列は、必ず特定の actorId のメールアドレスを表すものである必要があります。)
アドレスリゾルバーの実装が Bean であることを確認してください。この Bean は、次の例のように、jbpm.mail.address.resolver という名前の jbpm.cfg.xml ファイルで設定する必要があります。
<jbpm-configuration>
    <bean name='jbpm.mail.address.resolver' 
        class='org.jbpm.identity.mail.IdentityAddressResolver' 
        singleton='true' />
</jbpm-configuration>
Copy to Clipboard Toggle word wrap
Business Process Manger の アイデンティティー コンポーネントには、アドレスリゾルバーが含まれています。このアドレスリゾルバーは、特定の actorId のユーザーを探します。ユーザーが存在する場合、そのメールアドレスが返されます。そうでない場合は、null が返されます。
注記
アイデンティティーコンポーネントの詳細は、「 アイデンティティーコンポーネント 」 を参照してください。

12.4. メールテンプレート

processdefinition.xml ファイルを使用してメールを指定する代わりに、テンプレートを使用できます。この場合も、各フィールドを processdefinition.xml で上書きできます。次のようにテンプレートを指定します。
<mail-templates>
    <variable name="BaseTaskListURL"
        value="http://localhost:8080/jbpm/task?id=" />

    <mail-template name='task-assign'>
        <actors>#{taskInstance.actorId}</actors>
        <subject>Task '#{taskInstance.name}'</subject>
        <text><![CDATA[Hi,
Task '#{taskInstance.name}' has been assigned to you.
Go for it: #{BaseTaskListURL}#{taskInstance.id}
Thanks.
---powered by JBoss jBPM---]]></text>
    </mail-template>

    <mail-template name='task-reminder'>
        <actors>#{taskInstance.actorId}</actors>
        <subject>Task '#{taskInstance.name}' !</subject>
        <text><![CDATA[Hey,
Don't forget about #{BaseTaskListURL}#{taskInstance.id} 
Get going !
---powered by JBoss jBPM---]]></text>
    </mail-template>

</mail-templates>
Copy to Clipboard Toggle word wrap
メールテンプレートでは、追加の変数を定義できます。この変数は式で使用できます。
次のように、jbpm.cfg.xml でテンプレートを含むリソースを設定します。
<jbpm-configuration>
  <string name="resource.mail.templates" value="jbpm.mail.templates.xml" />
</jbpm-configuration>
Copy to Clipboard Toggle word wrap

12.5. メールサーバーの設定

次のコード例に従って、jbpm.cfg.xml ファイルの jbpm.mail.smtp.host プロパティーを設定して、メールサーバーを設定します。
<jbpm-configuration>
    <string name="jbpm.mail.smtp.host" value="localhost" />
</jbpm-configuration>
Copy to Clipboard Toggle word wrap
または、さらにプロパティーを指定する必要がある場合は、次の方法でプロパティーファイルへのリソース参照を指定します。
<jbpm-configuration>
   <string name='resource.mail.properties' value='jbpm.mail.properties' />
</jbpm-configuration>
Copy to Clipboard Toggle word wrap

12.6. メール認証

12.6.1. メール認証の設定

次の設定を使用して、メールを送信するときに (SMTP) 認証を有効にすることができます。
Expand
表12.1 jBPM のメール認証プロパティー
プロパティー タイプ 説明
jbpm.mail.user
string
ユーザーのメールアドレス
jbpm.mail.password
string
そのメールアドレスのパスワード
jbpm.mail.smtp.starttls
boolean
SMTP サーバーで STARTTLS プロトコルを使用するかどうか
jbpm.mail.smtp.auth
boolean
SMTP 認証プロトコルを使用するかどうか
jbpm.mail.debug
boolean
javax.mail.Session インスタンスをデバッグモードに設定するかどうか

12.6.2. メール認証のロジック

上記のプロパティーに関しては、次のロジックが適用されます。
jbpm.mail.user プロパティーも jbpm.mail.password プロパティーも設定されていない場合、他の設定に関係なく認証は使用されません。
jbpm.mail.user プロパティーが設定されている場合、次の処理が行われます。
  • mail.smtp.submitter プロパティーが jbpm.mail.user プロパティーの値で設定されます。
  • jbpm エンジンが、メールの送信時に smtp サーバーへのログインを試みます。
jbpm.mail.user プロパティーと jbpm.mail.password プロパティーが設定されている場合、次の処理が行われます。
  • この場合にも、少なくとも jbpm.mail.user を設定した場合の処理が行われます。
  • jbpm.mail.smtp.auth プロパティーの値に関係なく、mail.smtp.auth プロパティーは true に設定されます。

12.7. "From" アドレスの設定

From アドレスフィールドのデフォルト値は、jbpm@noreply です。次のように、キー jbpm.mail.from.address を使用して jbpm.xfg.xml ファイルで設定します。
<jbpm-configuration>
    <string name='jbpm.mail.from.address' value='jbpm@yourcompany.com' />
</jbpm-configuration>
Copy to Clipboard Toggle word wrap

12.8. メールサポートのカスタマイズ

Business Process Manager のすべてのメールサポートは、1 つのクラス、つまり org.jbpm.mail.Mail に一元化されています。このクラスは ActionHandler の実装です。process XML でメールが指定されるたびに、mail クラスへの委譲が行われます。特定のニーズに合わせて、mail クラスから継承し、特定の動作をカスタマイズすることができます。メール委譲に使用するクラスを設定するには、次のように jbpm.cfg.xmljbpm.mail.class.name 設定文字列を指定します。
<jbpm-configuration>
  <string name='jbpm.mail.class.name'
  value='com.your.specific.CustomMail' />
</jbpm-configuration>
Copy to Clipboard Toggle word wrap
カスタマイズされたメールクラスは、解析時に読み取られます。アクションは、設定済み (またはデフォルト) のメールクラス名を参照するプロセス内で設定されます。したがって、プロパティーが変更された場合、すでにデプロイされているすべてのプロセスは、引き続き古いメールクラス名を参照します。これは、jBPM データベースに対して update ステートメントを送信するだけで変更できます。
この章では、さまざまなメール設定を行う方法について詳しく説明しました。お使いの環境で設定を練習することをお勧めします。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat