BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Integration > BPM トピック > BPM クライアント アプリケーション プログラミング > ワークフロー テンプレートの作成および管理 |
BPM クライアント アプリケーション プログラミング
|
ワークフロー テンプレートの作成および管理
ワークフロー テンプレートは、任意の数のワークフロー テンプレート定義を含むコンテナです。
この章では、ワークフロー テンプレートの作成および管理方法について説明します。内容は以下のとおりです。
この章に記載するメソッドの詳細については、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() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
各メソッドは、新しいテンプレートの ID を返します。 たとえば、次のコードは指定されたオーガニゼーションのコレクションである orgIds からアクセスできる Order Processing という名の新しいテンプレートを作成します。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 createTemplate() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
String id = admin.createTemplate(“Order Processing”, null, orgIds);
テンプレートの取得
ワークフロー テンプレートを取得するには、次の 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() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
各メソッドにより、テンプレートに対応する com.bea.wlpi.common.TemplateInfo オブジェクトが返されます。そのテンプレート情報にアクセスするには、TemplateInfo オブジェクトに記載の TemplateInfo オブジェクト メソッドを使用します。 たとえば、次のコードは Order Processing という名前のテンプレートを取得します(byName パラメータが true に設定されていることに注意)。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 getTemplate() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
TemplateInfo template = admin.getTemplate(
“Order Processing”, true);
オーガニゼーションのテンプレートの取得
オーガニゼーションのワークフロー テンプレート リストを取得するには、次の 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() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
このメソッドは、com.bea.wlpi.common.TemplateInfo オブジェクトのリストを返します。各テンプレートについての情報にアクセスするには、TemplateInfo オブジェクトに記載の TemplateInfo オブジェクト メソッドを使用します。 たとえば、次のコードでは ORG1 オーガニゼーションと関連するすべてのテンプレートが取得されます。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 getTemplates() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
List templates = admin.getTemplates(“ORG1”);
テンプレート オーガニゼーションの取得
テンプレートにアクセスできるオーガニゼーションを取得するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。
public List getTemplateOrgs(
java.lang.String templateId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
getTemplateOrgs() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
各メソッドは、オーガニゼーション ID のリストを返します。 たとえば、次のコードでは、テンプレートにアクセスできるオーガニゼーションのリストが取得され、その結果が orgs に割り当てられます。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 テンプレート ID は、com.bea.wlpi.common.TemplateInfo オブジェクトである template と関連付けられたメソッドを使用して取得されます。template オブジェクトは、オーガニゼーションのテンプレートの取得に記載のメソッドを使用して取得されます。 getTemplateOrgs() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
List orgs = admin.getTemplateOrgs(template.getId());
テンプレート オーガニゼーションの設定
テンプレートにアクセスできるオーガニゼーションを設定するには、次の 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() メソッドのパラメータを次の表に示します。パラメータには値の指定の指定が必要です
たとえば、次のコードでは、コレクション organizations を使用するテンプレートにアクセスできるオーガニゼーションが設定されます。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 テンプレート ID および名前は、com.bea.wlpi.common.TemplateInfo オブジェクトである template と関連付けられたメソッドを使用して取得されます。template オブジェクトは、オーガニゼーションのテンプレートの取得に記載のメソッドを使用して取得されます。 setTemplateOrgs() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
List orgs = admin.setTemplateOrgs(
template.getId(), template.getName(), organizations);
テンプレートの更新
ワークフロー テンプレートを更新するには、次の 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() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
たとえば、次のコードでは、既存テンプレートが TemplateInfo オブジェクト、info で定義されたとおりに更新されます。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 updateTemplate() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
admin.updateTemplate(info);
Dテンプレートの削除
テンプレートを削除するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。
public void deleteTemplate(
java.lang.String templateId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
deleteTemplate() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
たとえば、次のコードでは、指定されたテンプレートが削除されます。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 テンプレート IDは、com.bea.wlpi.common.TemplateInfo オブジェクトである template と関連付けられたメソッドを使用して取得されます。template オブジェクトは、オーガニゼーションのテンプレートの取得に記載のメソッドを使用して取得されます。 deleteTemplate() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
admin.deleteTemplate(template.getId());
テンプレートの管理例
この節では、コマンドライン Studio 例から抜粋して、テンプレートの管理方法を示します。
注意: コマンドライン Studio 例の詳細については、コマンドライン Studio サンプルを参照してください。
このサンプルでは、ユーザと通信するための入力ストリームが定義されており、ユーザは以下のアクションのいずれかを指定するよう求められます。
重要なコード行は、太字で強調されています。このコード例では、admin は Admin 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;
.
.
.
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |