第12章 メールサポート
この章では、JPDL で利用できる "標準" のメールサポートについて説明します。メール機能のさまざまな要素を設定する方法は、以下の情報を参照してください。
12.1. JPDL におけるメール リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロセスからメールを送信する時点を指定する方法は、4 つあります。
12.1.1. メールアクション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロセスグラフ内のノードとしてメールを表示しない理由がある場合は、メールアクション を使用します。
注記
メールアクションは、通常のアクションを追加できる場所なら、どこでもプロセスに追加できます。
<mail actors="#{president}" subject="readmylips" text="nomoretaxes" />
<mail actors="#{president}" subject="readmylips" text="nomoretaxes" />
次のように、件名とテキストの属性を要素として指定します。
<mail actors="#{president}" > <subject>readmylips</subject> <text>nomoretaxes</text> </mail>
<mail actors="#{president}" >
<subject>readmylips</subject>
<text>nomoretaxes</text>
</mail>
各フィールドには、JSF ライクな式を含めることができます。
<mail to='#{initiator}' subject='websale' text='your websale of #{quantity} #{item} was approved' />
<mail
to='#{initiator}'
subject='websale'
text='your websale of #{quantity} #{item} was approved' />
注記
式の詳細は、「 式 」 を参照してください。
受信者は、actors と to という 2 つの属性で指定します。to 属性は、メールアドレスのセミコロン区切りリストに "解決" される必要があります。actors 属性は、actorIds のセミコロン区切りリストに解決される必要があります。これらの actorIds は、さらにメールアドレスに解決されます。詳細は、「 アドレス解決 」 を参照してください。
<mail to='admin@mycompany.com' subject='urgent' text='the mailserver is down :-)' />
<mail
to='admin@mycompany.com'
subject='urgent'
text='the mailserver is down :-)' />
注記
受信者を指定する方法は、「 メールの受信者の指定 」 を参照してください。
メールは、テンプレートを使用して定義できます。テンプレートプロパティーを次のように上書きします。
<mail template='sillystatement' actors="#{president}" />
<mail template='sillystatement' actors="#{president}" />
注記
テンプレートの詳細は、「 メールテンプレート 」 を参照してください。
12.1.2. メールノード リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
メールアクションと同様に、メールを送信するアクションも、ノードとしてモデル化できます。この場合、ランタイムの動作は同じですが、メールは プロセスグラフ 内のノードとして表示されます。
メールノードは、
メールアクション
とまったく同じ属性と要素をサポートします。(詳細は、「 メールアクション 」 を参照してください。)
重要
メールノードにある 退出 遷移が 1 つだけであることを必ず確認してください。
12.1.3. "タスク割り当て" メール リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
タスクがアクターに割り当てられたときに、通知メールを送信できます。この機能を設定するには、次の方法でタスクに
notify="yes"
属性を追加します。
<task-node name='a'> <task name='laundry' swimlane="grandma" notify='yes' /> <transition to='b' /> </task-node>
<task-node name='a'>
<task name='laundry' swimlane="grandma" notify='yes' />
<transition to='b' />
</task-node>
notify を
yes
、true
、または on
に設定すると、Business Process Manager は、タスクに割り当てられているアクターにメールを送信します。(このメールはテンプレートに基づいており、Web アプリケーションのタスクページへのリンクが含まれています。)
12.1.4. "タスクリマインダー" メール リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
タスクのリマインダーとしてメールを送信できます。JPDL の reminder 要素はタイマーを利用します。最も一般的に使用される属性は、duedate と repeat です。アクションを指定する必要はありません。
12.2. メールにおける式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
式では、変数 swimlanes、process variables、および transient variables beans を使用できます。これらは、
jbpm.cfg.xml
ファイルで設定します。
式は、アドレス解決 機能と組み合わせることができます。詳細は、「 アドレス解決 」 を参照してください。
この例では、
president
という名前の swimlane が存在することを前提としています。
<mail actors="#{president}" subject="readmylips" text="nomoretaxes" />
<mail actors="#{president}"
subject="readmylips"
text="nomoretaxes" />
このコードは、その特定のプロセスの実行において
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' />
<mail to='#{initiator}'
bcc='bcc@mycompany.com'
subject='websale'
text='your websale of #{quantity} #{item} was approved' />
別の方法として、
jbpm.cfg.xml
で一元的に設定されている場所に BCC メッセージを常に送信する方法があります。次の例は、その方法を示しています。
<jbpm-configuration> ... <string name="jbpm.mail.bcc.address" value="bcc@mycompany.com" /> </jbpm-configuration>
<jbpm-configuration>
...
<string name="jbpm.mail.bcc.address" value="bcc@mycompany.com" />
</jbpm-configuration>
12.3.3. アドレス解決 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Business Process Manger 全体で、アクターは
actorIds
によって参照されます。これは、プロセスの参加者を識別するための文字列です。アドレスリゾルバー は、actorIds
をメールアドレスに変換します。
アドレス解決を適用するには、actors 属性を使用します。これに対して、アドレスを直接追加する場合は、アドレス解決の適用を実行しない to 属性を使用します。
アドレスリゾルバーが次のインターフェイスを実装していることを確認してください。
public interface AddressResolver extends Serializable { Object resolveAddress(String actorId); }
public interface AddressResolver extends Serializable {
Object resolveAddress(String actorId);
}
アドレスリゾルバーは、文字列、文字列のコレクション、または文字列の配列の 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>
<jbpm-configuration>
<bean name='jbpm.mail.address.resolver'
class='org.jbpm.identity.mail.IdentityAddressResolver'
singleton='true' />
</jbpm-configuration>
Business Process Manger の
アイデンティティー
コンポーネントには、アドレスリゾルバーが含まれています。このアドレスリゾルバーは、特定の actorId
のユーザーを探します。ユーザーが存在する場合、そのメールアドレスが返されます。そうでない場合は、null が返されます。
注記
アイデンティティーコンポーネントの詳細は、「 アイデンティティーコンポーネント 」 を参照してください。
12.4. メールテンプレート リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
processdefinition.xml
ファイルを使用してメールを指定する代わりに、テンプレートを使用できます。この場合も、各フィールドを processdefinition.xml
で上書きできます。次のようにテンプレートを指定します。
メールテンプレートでは、追加の変数を定義できます。この変数は式で使用できます。
次のように、
jbpm.cfg.xml
でテンプレートを含むリソースを設定します。
<jbpm-configuration> <string name="resource.mail.templates" value="jbpm.mail.templates.xml" /> </jbpm-configuration>
<jbpm-configuration>
<string name="resource.mail.templates" value="jbpm.mail.templates.xml" />
</jbpm-configuration>
12.5. メールサーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
次のコード例に従って、
jbpm.cfg.xml
ファイルの jbpm.mail.smtp.host プロパティーを設定して、メールサーバーを設定します。
<jbpm-configuration> <string name="jbpm.mail.smtp.host" value="localhost" /> </jbpm-configuration>
<jbpm-configuration>
<string name="jbpm.mail.smtp.host" value="localhost" />
</jbpm-configuration>
または、さらにプロパティーを指定する必要がある場合は、次の方法でプロパティーファイルへのリソース参照を指定します。
<jbpm-configuration> <string name='resource.mail.properties' value='jbpm.mail.properties' /> </jbpm-configuration>
<jbpm-configuration>
<string name='resource.mail.properties' value='jbpm.mail.properties' />
</jbpm-configuration>
12.6. メール認証 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
12.6.1. メール認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
次の設定を使用して、メールを送信するときに (SMTP) 認証を有効にすることができます。
プロパティー | タイプ | 説明 |
---|---|---|
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>
<jbpm-configuration>
<string name='jbpm.mail.from.address' value='jbpm@yourcompany.com' />
</jbpm-configuration>
12.8. メールサポートのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Business Process Manager のすべてのメールサポートは、1 つのクラス、つまり
org.jbpm.mail.Mail
に一元化されています。このクラスは ActionHandler
の実装です。process
XML でメールが指定されるたびに、mail
クラスへの委譲が行われます。特定のニーズに合わせて、mail
クラスから継承し、特定の動作をカスタマイズすることができます。メール委譲に使用するクラスを設定するには、次のように jbpm.cfg.xml
で jbpm.mail.class.name
設定文字列を指定します。
<jbpm-configuration> <string name='jbpm.mail.class.name' value='com.your.specific.CustomMail' /> </jbpm-configuration>
<jbpm-configuration>
<string name='jbpm.mail.class.name'
value='com.your.specific.CustomMail' />
</jbpm-configuration>
カスタマイズされたメールクラスは、解析時に読み取られます。アクションは、設定済み (またはデフォルト) のメールクラス名を参照するプロセス内で設定されます。したがって、プロパティーが変更された場合、すでにデプロイされているすべてのプロセスは、引き続き古いメールクラス名を参照します。これは、jBPM データベースに対して update ステートメントを送信するだけで変更できます。
この章では、さまざまなメール設定を行う方法について詳しく説明しました。お使いの環境で設定を練習することをお勧めします。