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

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

 前 次 目次 索引 PDFで表示  

タスクのルーティングの管理

指定された期間のタスクを、1 つのロールまたはユーザから別のロールまたはユーザへ再ルーティングできます。

この章では、タスクのルーティングの管理方法について説明します。内容は以下のとおりです。

この章に記載するメソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。WebLogic Integration Studio を使用してのタスクのルーティングの管理方法については、『WebLogic Integration Studio ユーザーズ ガイド』の「データの管理」にある「タスクルーティングの管理」を参照してください。

 


タスクの再ルーティングの追加

タスクの再ルーティングを追加するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。

public java.lang.String addReroute(
java.lang.String orgId,
java.lang.String from,
java.lang.String to,
int type,
java.sql.Timestamp effective,
java.sql.Timestamp expiry
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

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

表16-1 addReroute() メソッドのパラメータ

パラメータ

説明

有効な値

orgId

タスクの再ルーティングを行うオーガニゼーションの ID

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

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

from

タスクの再ルーティング元である assognee (ロールまたはユーザ) の ID

有効なロールまたはユーザを指定する文字列。

現在のユーザまたはロールのリストを取得する方法については、セキュリティ レルムのコンフィグレーションを参照。

to

タスクの再ルーティング先である assignee (ロールまたはユーザ) の ID

有効なロールまたはユーザを指定する文字列。

現在のユーザまたはロールのリストを取得する方法については、セキュリティ レルムのコンフィグレーションを参照。

type

再ルーティングのタイプ

次の静的変数値のいずれかを指定する整数。

静的変数値は、com.bea.wlpi.common.RerouteInfo オブジェクトの一部として定義されている。

effective

再ルーティングが有効となる日付および時間

有効 java.sql.Timestamp オブジェクト。

expiry

再ルーティングが終了となる日付および時間

有効 java.sql.Timestamp オブジェクト。


 

メソッドは、新しい再ルーティング オブジェクトの ID を戻します。

たとえば、次のコードでは、ユーザ joe からユーザ mary への再ルーティングが追加されます。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

List rerouteId = admin.addReroute( “ORG1”, “joe”, “mary”,
TYPE_USER, tsEffective, tsExpiry);

type パラメータは、TYPE_USER に設定されていますが、これはタスクがユーザへと再ルーティングされていることを表します。再ルーティングは、tsEffective タイムスタンプで指定された日付および時間に有効となり、tsExpiry タイムスタンプで指定された日付および時間に終了となります。

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

 


タスクの再ルーティングの取得

オーガニゼーション内で定義されたタスクの再ルーティングは、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。

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

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

表16-2 getReroutes() メソッドのパラメータ

パラメータ

説明

有効な値

orgId

再ルーティングを取得するオーガニゼーションの ID

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

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


 

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

たとえば、次のコードでは、ORG1 オーガニゼーションの再ルーティングされたタスクが取得されます。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

List taskList = admin.getReroutes(“ORG1”);

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

 


タスクの再ルーティングの更新

タスクの再ルーティングを更新するには、以下のいずれかの com.bea.wlpi.server.admin.Admin メソッドを使用します。

メソッド 1

public void updateReroute(
java.lang.String rerouteId,
java.lang.String to,
int type,
java.sql.Timestamp effective,
java.sql.Timestamp expiry
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

メソッド 2

public void updateReroute(
java.lang.String rerouteId,
java.lang.String from,
java.lang.String to,
int type,
java.sql.Timestamp effective,
java.sql.Timestamp expiry
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

これらのメソッドは、2 つ目のメソッドでタスクの再ルーティング先である割り当て先を定義するために from パラメータを指定すること以外は同一です。

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

表16-3 updateReroute() メソッドのパラメータ

パラメータ

説明

有効な値

rerouteId

更新するタスクの再ルーティングの ID

有効な再ルーティング ID を指定する文字列。

すべてのタスクの再ルーティング ID のリストを取得する方法については、タスクの再ルーティングの取得を参照。

from

タスクの再ルーティング元である assognee (ロールまたはユーザ) の ID

有効なロールまたはユーザを指定する文字列。

現在のユーザまたはロールのリストを取得する方法については、セキュリティ レルムのコンフィグレーションを参照。

to

タスクの再ルーティング先である assignee (ロールまたはユーザ) の ID

有効なロールまたはユーザを指定する文字列。

現在のユーザまたはロールのリストを取得する方法については、セキュリティ レルムのコンフィグレーションを参照。

type

再ルーティングのタイプ

次の静的変数値のいずれかを指定する整数値。

静的変数値は、com.bea.wlpi.common.RerouteInfo オブジェクトの一部として定義されている。

effective

再ルーティングが有効となる日付および時間

有効 java.sql.Timestamp オブジェクト。

expiry

再ルーティングが終了となる日付および時間

有効 java.sql.Timestamp オブジェクト。


 

たとえば、以下のコードでは、指定されたタスクの再ルーティングが更新され、タスクはユーザ Mary から joe へと再ルーティングされます。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

List rerouteId = admin.addReroute( “ORG1”, “mary”, “joe”,
TYPE_USER, tsEffective, tsExpiry);

type パラメータは、TYPE_USER に設定されていますが、これはタスクがユーザへと再ルーティングされていることを表します。再ルーティングは、tsEffective タイムスタンプで指定された日付および時間から有効となり、tsExpiry タイムスタンプで指定された日付および時間に終了となります。

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

 


タスクの再ルーティングの削除

タスクの再ルーティングを削除するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。

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

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

表16-4 deleteReroute() メソッドのパラメータ

パラメータ

説明

有効な値

rerouteId

削除するタスクの再ルーティングの ID

有効な再ルーティング ID を指定する文字列。

すべてのタスクの再ルーティング ID のリストを取得する方法については、タスクの再ルーティングの取得を参照。


 

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

admin.deleteReroute(reroute.getId());

再ルーティング IDは、com.bea.wlpi.common.RerouteInfo オブジェクトである reroute と関連付けられたメソッドを使用して取得されます。reroute オブジェクトは、タスクの再ルーティングの取得に記載のメソッドを使用して取得されます。

deleteReroute() メソッドの詳細については、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 mngReroutes() {
int assigneeType;
List rerouteList;
RerouteInfo rerouteInfo;
String orgId;
String rerouteId;
String answer;
String fromAssignee;
String toAssignee;
Timestamp effectiveDate;
Timestamp expiryDate;

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

try {
/* メニューを表示してユーザと交信する*/
while( true ) {
/* メニューを表示する */
System.out.println( "¥n¥n--- Task Routings ---" );
System.out.println( "¥nEnter choice:" );
System.out.println( "1) Add a Task Reroute" );
System.out.println( "2) Delete a Task Reroute" );
System.out.println( "3) List all Task Reroutes" );
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' :
/* 再ルーティングを追加するオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "¥nEnter Organization ID where to
add the Reroute" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

/* 再ルーティング元のユーザ ID をユーザに求める */
if( ( fromAssignee = askQuestion( "Enter User to reroute from" ) )
== null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

/* 再ルーティング先の受託者をユーザに求める */
if( ( toAssignee = askQuestion( "Enter Assignee to reroute to" ) )
== null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

/* 受託者がユーザでであるかの確認をユーザに求める*/
if( ( answer = askQuestion( "- Is this a user (y/n)?" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

/* 応答を解析する */
if( answer.equals( "y" ) || answer.equals( "Y" ) )
assigneeType = RerouteInfo.TYPE_USER;
else {
/* 受託者がロール内のユーザであるかの確認をユーザに求める*/
if( ( answer = askQuestion( "- Reroute to user in role (y/n)?" )
) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

/* 応答を解析する */
if( answer.equals( "y" ) || answer.equals( "Y" ) )
assigneeType = RerouteInfo.TYPE_USERINROLE;
else
assigneeType = RerouteInfo.TYPE_ROLE;
}

/* 有効日付を取得する */
/* 注意 : 有効日付はタイムスタンプである。便宜上
* 日付のみを使用する。*/
if( ( answer = askQuestion( "Enter Effective Date (yyyy-mm-dd)" )
) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

/* タイムスタンプへのコンバート */
effectiveDate = Timestamp.valueOf( answer + " 0:0:0.0" );

/* 有効期限日付を取得する */
/* 注意 : 有効期限日付はタイムスタンプである。便宜上
* 日付のみを使用する。*/
if( ( answer = askQuestion( "Enter Expiry Date (yyyy-mm-dd)" ) )
== null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

/* タイムスタンプへのコンバート */
expiryDate = Timestamp.valueOf( answer + " 0:0:0.0" );

try {
/* WLPI 公開 API メソッド */
/* タスクの再ルーティングを追加する*/
admin.addReroute( orgId, fromAssignee, toAssignee,
assigneeType, effectiveDate, expiryDate );

/* 正常終了(例外の発生なし) */
System.out.println( "- Added" );
}
catch( Exception e ) {
System.out.println( "*** Unable to add Task Reroute" );
System.err.println( e );
}

            break;
.
.
.

タスクの再ルーティングの削除

タスクの再ルーティングの削除方法を示します。

         /* タスクの再ルーティングを削除する */
case '2' :
/* 削除するタスクの再ルーティング ID を取得する */
if( ( rerouteId = askQuestion( "¥nEnter Task Reroute ID to delete"
) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

try {
/* WLPI 公開 API メソッド */
/* タスクの再ルーティングを削除する */
admin.deleteReroute( rerouteId );

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

タスクの再ルーティングの取得

タスクのルーティングの取得方法を示します。

         /* タスクの再ルーティングをすべてリストアップする */
case '3' :
/* クエリするオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "¥nEnter Organization ID to list Task
Reroutes" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
try {
/* WLPI 公開 API メソッド */
/* タスクの再ルーティングをすべて取り出す */
rerouteList = admin.getReroutes( orgId );

/* 定義されているタスクの再ルーティングはあるか ? */
if( rerouteList.size() == 0 )
System.out.println( "¥nNo Task Reroute defined" );
else
System.out.println( "¥nDefined Task Reroutes:" );

/* リストを処理して、タスクの再ルーティングと属性を表示する */
for( int i = 0; i < rerouteList.size(); i++ ) {
/* リストから要素を取り出す */
rerouteInfo = ( RerouteInfo )rerouteList.get( i );

/* WLPI 公開 API メソッド */
/* タスクの再ルーティングの ID を取り出して表示する */
System.out.println( "- ID: " + rerouteInfo.getId() );

/* WLPI 公開 API メソッド */
/* タスクが再割り当てされる割り当て先を取り出して
* 表示する */
System.out.println( " From user: " + rerouteInfo.getFrom() );

/* 再ルーティングされたタスクが割り当てられる割り当て先を取り出して
* 表示する */
System.out.print( " To" );

/* WLPI 公開 API メソッド */
/* 再ルーティングのタイプを取り出す */
assigneeType = rerouteInfo.getType();

if( assigneeType == RerouteInfo.TYPE_ROLE )
System.out.print( " role: " );
else if( assigneeType == RerouteInfo.TYPE_USER )
System.out.print( " user: " );
else if( assigneeType == RerouteInfo.TYPE_USERINROLE )
System.out.print( " user in role: " );
else
System.out.print( ": " );

                  /* WLPI 公開 API メソッド */
/* 再ルーティングされたタスクが割り当てられる割り当て先を取り出して
* 表示する */
System.out.println( rerouteInfo.getTo() );

/* WLPI 公開 API メソッド */
/* この再ルーティングの有効期間を取り出して
* 表示する */
System.out.println( " Valid From " +
rerouteInfo.getEffective().toString() +
" to " + rerouteInfo.getExpiry().toString() );
}
}
catch( Exception e ) {
System.out.println( "*** Unable to retrieve Task Reroutes" );
System.err.println( e );
}
break;
.
.
.

 

ページの先頭 前 次