BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA
 ドキュメントのダウンロード   サイト マップ   用語集 
検索

BPM クライアント アプリケーション プログラミング

 前 次 目次 索引 PDFで表示  

ワークフロー テンプレートの作成および管理

ワークフロー テンプレートは、任意の数のワークフロー テンプレート定義を含むコンテナです。

この章では、ワークフロー テンプレートの作成および管理方法について説明します。内容は以下のとおりです。

この章に記載するメソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。WebLogic Integration Studio を使用してワークフロー テンプレートを管理する方法については、『WebLogic Integration Studio ユーザーズ ガイド』の「ワークフロー テンプレートの定義」を参照してください。

 


テンプレートの作成

ワークフロー テンプレートを作成するには、以下のいずれかの com.bea.wlpi.server.admin.Admin メソッドを使用します。

メソッド 1

public java.lang.String createTemplate(
java.lang.String name,
java.lang.String xml,
java.util.Collection orgs
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

メソッド 2

public java.lang.String createTemplate(
java.lang.String name,
java.lang.String xml,
java.util.Collection orgs,
java.lang.Object transactionId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

第 1 のメソッドは、非クラスタ化環境で使用できます。クラスタ化環境では第 2 のメソッドを使用することをお勧めします。この場合、トランザクションがコミットされた後、またはサーバ クラッシュやフェイルオーバーが発生した後に、メソッドが再発行されないよう、指定された ID を使用してメソッドの実行状態が追跡されます。

createTemplate() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。

表13-1 createTemplate() メソッドのパラメータ

パラメータ

説明

有効な値

name

テンプレート名

非ヌル文字列。

xml

プラグイン データを定義し、テンプレート定義 DTDに記載の Template Definition DTD に準拠する XML ドキュメント名

BPM プラグインのプログラミングの詳細については、『WebLogic Integration BPM プラグイン プログラミング ガイド』を参照。

非ヌル文字列。

orgs

テンプレートにアクセスできるオーガニゼーション ID のコレクション

有効なオーガニゼーション ID を含む文字列のコレクション。オーガニゼーション ID のリストの取得については、すべてのオーガニゼーション名を取得するを参照。

transactionId

トランザクションの ID

注意: このパラメータは、クラスタ化環境においてのみ必要です。

ユニークなトランザクション ID を指定するオブジェクト。

ユニークなトランザクション ID を生成するには、次のコンストラクタを使用して新しい com.bea.wlpi.client.common.GUID オブジェクトを作成する。

GUID transactionId = new GUID();

GUID クラスの詳細については、Javadoc の com.bea.wlpi.client.common.GUID を参照。


 

各メソッドは、新しいテンプレートの ID を返します。

たとえば、次のコードは指定されたオーガニゼーションのコレクションである orgIds からアクセスできる Order Processing という名の新しいテンプレートを作成します。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

String id = admin.createTemplate(“Order Processing”, null, orgIds);

createTemplate() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。

 


テンプレートの取得

ワークフロー テンプレートを取得するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。

public com.bea.wlpi.common.TemplateInfo getTemplate(
java.lang.String templateId,
boolean byName
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

getTemplate() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。

表13-2 getTemplate() メソッドのパラメータ

パラメータ

説明

有効な値

templateId

検索するテンプレートの ID または 名前

有効なテンプレート ID または名前を指定する文字列。

byName

templateId パラメータに指定された値がテンプレート名 (true) または ID (false) であるかを指定するブール フラグ

true (名前) または false (名前)。


 

各メソッドにより、テンプレートに対応する com.bea.wlpi.common.TemplateInfo オブジェクトが返されます。そのテンプレート情報にアクセスするには、TemplateInfo オブジェクトに記載の TemplateInfo オブジェクト メソッドを使用します。

たとえば、次のコードは Order Processing という名前のテンプレートを取得します(byName パラメータが true に設定されていることに注意)。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

TemplateInfo template = admin.getTemplate(
“Order Processing”, true);

getTemplate() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。

 


オーガニゼーションのテンプレートの取得

オーガニゼーションのワークフロー テンプレート リストを取得するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。

public java.util.List getTemplates(
java.lang.String orgId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

getTemplates() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。

表13-3 getTemplates() メソッドのパラメータ

パラメータ

説明

有効な値

orgId

テンプレートを取得するオーガニゼーションの ID

有効なオーガニゼーション ID を指定する文字列。

オーガニゼーション ID のリストの取得については、すべてのオーガニゼーション名を取得するを参照。


 

このメソッドは、com.bea.wlpi.common.TemplateInfo オブジェクトのリストを返します。各テンプレートについての情報にアクセスするには、TemplateInfo オブジェクトに記載の TemplateInfo オブジェクト メソッドを使用します。

たとえば、次のコードでは ORG1 オーガニゼーションと関連するすべてのテンプレートが取得されます。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

List templates = admin.getTemplates(“ORG1”);

getTemplates() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。

 


テンプレート オーガニゼーションの取得

テンプレートにアクセスできるオーガニゼーションを取得するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。

public List getTemplateOrgs(
java.lang.String templateId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

getTemplateOrgs() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。

表13-4 getTemplateOrgs() メソッドのパラメータ

パラメータ

説明

有効な値

templateId

オーガニゼーションの検索を行うテンプレートの ID

有効なテンプレート ID を指定する文字列。

テンプレート ID を取得するには、次の com.bea.wlpi.common.TemplateInfo メソッドを使用する。

public final java.lang.String
getId()

TemplateInfo オブジェクトを取得する方法については、オーガニゼーションのテンプレートの取得を参照。TemplateInfo オブジェクトで選択可能なメソッドの詳細については、TemplateInfo オブジェクトを参照。


 

各メソッドは、オーガニゼーション ID のリストを返します。

たとえば、次のコードでは、テンプレートにアクセスできるオーガニゼーションのリストが取得され、その結果が orgs に割り当てられます。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

List orgs = admin.getTemplateOrgs(template.getId());

テンプレート ID は、com.bea.wlpi.common.TemplateInfo オブジェクトである template と関連付けられたメソッドを使用して取得されます。template オブジェクトは、オーガニゼーションのテンプレートの取得に記載のメソッドを使用して取得されます。

getTemplateOrgs() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。

 


テンプレート オーガニゼーションの設定

テンプレートにアクセスできるオーガニゼーションを設定するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。

public void setTemplateOrgs(
java.lang.String templateId,
java.util.Collection orgs
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

setTemplateOrgs() メソッドのパラメータを次の表に示します。パラメータには値の指定の指定が必要です

表13-5 setTemplateOrganizations() メソッドのパラメータ

パラメータ

説明

有効な値

templateId

オーガニゼーションの設定を行うテンプレートの ID

有効なテンプレート ID を指定する文字列。

テンプレート ID を取得するには、次の com.bea.wlpi.common.TemplateInfo メソッドを使用する。

public final java.lang.String
getId()

TemplateInfo オブジェクトを取得する方法については、オーガニゼーションのテンプレートの取得を参照。TemplateInfo オブジェクトで選択可能なメソッドの詳細については、TemplateInfo オブジェクトを参照。

orgs

テンプレートにアクセスできるオーガニゼーション ID のコレクション

有効なオーガニゼーション ID を含む文字列のコレクション。オーガニゼーション ID のリストの取得については、すべてのオーガニゼーション名を取得するを参照。


 

たとえば、次のコードでは、コレクション organizations を使用するテンプレートにアクセスできるオーガニゼーションが設定されます。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

List orgs = admin.setTemplateOrgs(
template.getId(), template.getName(), organizations);

テンプレート ID および名前は、com.bea.wlpi.common.TemplateInfo オブジェクトである template と関連付けられたメソッドを使用して取得されます。template オブジェクトは、オーガニゼーションのテンプレートの取得に記載のメソッドを使用して取得されます。

setTemplateOrgs() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。

 


テンプレートの更新

ワークフロー テンプレートを更新するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。

public void updateTemplate(
com.bea.wlpi.common.TemplateInfo info
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

updateTemplate() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。

表13-6 updateTemplate() メソッドのパラメータ

パラメータ

説明

有効な値

info

テンプレート名、ID、および新情報

name および ID フィールドを含む TemplateInfo オブジェクトは、更新する既存テンプレートを識別するために設定され、残りのフィールドは新しい情報に設定される。


 

たとえば、次のコードでは、既存テンプレートが TemplateInfo オブジェクト、info で定義されたとおりに更新されます。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

admin.updateTemplate(info);

updateTemplate() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。

 


Dテンプレートの削除

テンプレートを削除するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。

public void deleteTemplate(
java.lang.String templateId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

deleteTemplate() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。

表13-7 deleteTemplate() メソッドのパラメータ

パラメータ

説明

有効な値

templateId

削除するテンプレートの ID

有効なテンプレート ID を指定する文字列。

テンプレート ID を取得するには、次の com.bea.wlpi.common.TemplateInfo メソッドを使用する。

public final java.lang.String
getId()

TemplateInfo オブジェクトを取得する方法については、オーガニゼーションのテンプレートの取得を参照。TemplateInfo オブジェクトで選択可能なメソッドの詳細については、TemplateInfo オブジェクトを参照。


 

たとえば、次のコードでは、指定されたテンプレートが削除されます。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

admin.deleteTemplate(template.getId());

テンプレート IDは、com.bea.wlpi.common.TemplateInfo オブジェクトである template と関連付けられたメソッドを使用して取得されます。template オブジェクトは、オーガニゼーションのテンプレートの取得に記載のメソッドを使用して取得されます。

deleteTemplate() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。

 


テンプレートの管理例

この節では、コマンドライン Studio 例から抜粋して、テンプレートの管理方法を示します。

注意: コマンドライン Studio 例の詳細については、コマンドライン Studio サンプルを参照してください。

このサンプルでは、ユーザと通信するための入力ストリームが定義されており、ユーザは以下のアクションのいずれかを指定するよう求められます。

重要なコード行は、太字で強調されています。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

/* ユーザとの通信のための入力ストリームを作成する */
stdIn = new BufferedReader( new InputStreamReader( System.in ) );

/* ツール タイトルを表示する */
System.out.print( "¥n--- Command Line Studio v1.0 ---" );

/* メイン メニューを表示してユーザと交信する */
while( true ) {
/* メニューを表示する */
System.out.println( "¥n--- Main Menu ---" );
System.out.println( "¥nEnter choice:" );
System.out.println( "1) Templates" );
System.out.println( "2) Task Reroutes" );
System.out.println( "Q) Quit" );
System.out.print( ">> " );
.
.
.
/**
* WLPI ワークフロー テンプレートと関連する、Admin インタフェースで選択可能な公開 API メソッドを示す目的で
* 必要な情報をすべて取得するために
* ユーザと交信するメソッド
*/
public static void mngTemplates() {
ArrayList orgsList = new ArrayList();
String answer;
String orgId;
String templateId;
String templateName;

/* ユーザとの通信のための入力ストリームを作成する */
BufferedReader stdIn = new BufferedReader( new InputStreamReader(
System.in ) );

try {
/* メニューを表示してユーザと交信する*/
while( true ) {
/* メニューを表示する */
System.out.println( "¥n¥n--- Workflow Templates ---" );
System.out.println( "¥nEnter choice:" );
System.out.println( "1) Create a Template" );
System.out.println( "2) Delete a Template" );
System.out.println( "3) List Templates for an Organization" );
System.out.println( "B) Back to previous menu" );
System.out.println( "Q) Quit" );
System.out.print( ">> " );

/* ユーザの選択を取得する */
String line = stdIn.readLine();

/* ユーザが選択を行わないで〔Enter〕を押したか ? */
if( line.equals( "" ) )
continue;
/* ユーザが複数の文字を入力したか ? */
else if( line.length() > 1 ) {
System.out.println( "*** Invalid selection" );
continue;
}

/* 大文字および文字へのコンバート*/
char choice = line.toUpperCase().charAt( 0 );

/* ユーザの選択を処理する */
switch( choice ) {

テンプレートの作成

テンプレートの作成方法を示します。

         /* テンプレートを作成する */
case '1' :
/* テンプレート名を取得する */
if( ( templateName = askQuestion( "¥nEnter Template Name" ) )
== null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

System.out.println( "¥nDefining organizations where
the template is accessible" );
boolean isEnterMore = true;
boolean isCancelled = false;

/* オーガニゼーション ID リストを取得するループ */
while( isEnterMore ) {
/* アクティブに設定するオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "Enter an Organization ID" ) )
== null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
isCancelled = true;
break;
}

orgsList.add( orgId );

/* さらにオーガニゼーション ID を入力するためにループを継続するか ? */
if( ( answer = askQuestion( "Enter more (y/n)?" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
isCancelled = true;
break;
}

/* 応答を評価する */
isEnterMore = ( answer.equals( "y" ) || answer.equals( "Y" ) );
}

/* ユーザが操作をキャンセルしたか ? */
if( isCancelled )
break;

try {
/* WLPI 公開 API メソッド */
/* 新しいテンプレートを作成する */
templateId = admin.createTemplate( templateName, null, orgsList );

/* 正常終了(例外の発生なし) */
System.out.println( "- Created (template Id = " +
templateId + ")" );
}
catch( Exception e ) {
System.out.println( "*** Unable to create Template" );
System.err.println( e );
}
break;
.
.
.

テンプレートの削除

テンプレートの削除方法を示します。

         /* テンプレートを削除する */
case '2' :
/* 削除するテンプレートのテンプレート ID を取得する */
if( ( templateId = askQuestion( "¥nEnter Template ID
to delete" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

try {
/* WLPI 公開 API メソッド */
/* テンプレートを削除する */
admin.deleteTemplate( templateId );

/* 正常終了(例外の発生なし) */
System.out.println( "- Deleted" );
}
catch( Exception e ) {
System.out.println( "*** Unable to delete Template" );
System.err.println( e );
}
break;
               .
.
.

オーガニゼーションのテンプレートの取得

オーガニゼーションのテンプレートの取得方法を示します。

         /* オーガニゼーションのテンプレートをリストアップする */
case '3' :
/* クエリするオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "¥nEnter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

/* WLPI 公開 API メソッド */
/* このオーガニゼーションで定義されているすべてのテンプレートを取り出す */
/* 注意 : 発生した例外を取り込むコードを
* 追加するとよい */
List templateList = admin.getTemplates( orgId );

/* 定義されているテンプレートはあるか ? */
if( templateList.size() == 0 )
System.out.println( "¥nNo template defined" );
else
System.out.println( "¥nDefined Templates:" );

/* リストを処理して、テンプレートを表示する */
for( int i = 0; i < templateList.size(); i++ ) {
/* リストから要素を取り出す */
TemplateInfo templateInfo =
( TemplateInfo )templateList.get( i );

/* テンプレート ID を取り出して表示する */
System.out.println( "- Template ID: " + templateInfo.getId() );

/* テンプレート名を取り出して表示する */
System.out.println( " Name: " +
templateInfo.getName() + "¥n" );
}
break;
.
.
.

 

ページの先頭 前 次