BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Integration > BPM トピック > BPM クライアント アプリケーション プログラミング > タスクのルーティングの管理 |
BPM クライアント アプリケーション プログラミング
|
タスクのルーティングの管理
指定された期間のタスクを、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() メソッドのパラメータを次の表に示します。パラメータには値の指定が必要です。
メソッドは、新しい再ルーティング オブジェクトの ID を戻します。 たとえば、次のコードでは、ユーザ joe からユーザ mary への再ルーティングが追加されます。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 type パラメータは、TYPE_USER に設定されていますが、これはタスクがユーザへと再ルーティングされていることを表します。再ルーティングは、tsEffective タイムスタンプで指定された日付および時間に有効となり、tsExpiry タイムスタンプで指定された日付および時間に終了となります。 addReroute() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
List rerouteId = admin.addReroute( “ORG1”, “joe”, “mary”,
TYPE_USER, tsEffective, tsExpiry);
タスクの再ルーティングの取得
オーガニゼーション内で定義されたタスクの再ルーティングは、次の 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() メソッドのパラメータを次の表に示します。パラメータには値の指定が必要です。
各メソッドは、com.bea.wlpi.common.TaskInfo オブジェクトのリストを返します。各タスクについての情報にアクセスするには、TaskInfo オブジェクトに記載の TaskInfo オブジェクト メソッドを使用します。 たとえば、次のコードでは、ORG1 オーガニゼーションの再ルーティングされたタスクが取得されます。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 getReroutes() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
List taskList = admin.getReroutes(“ORG1”);
タスクの再ルーティングの更新
タスクの再ルーティングを更新するには、以下のいずれかの 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() メソッドのパラメータを次の表に示します。パラメータには値の指定が必要です。
たとえば、以下のコードでは、指定されたタスクの再ルーティングが更新され、タスクはユーザ Mary から joe へと再ルーティングされます。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 type パラメータは、TYPE_USER に設定されていますが、これはタスクがユーザへと再ルーティングされていることを表します。再ルーティングは、tsEffective タイムスタンプで指定された日付および時間から有効となり、tsExpiry タイムスタンプで指定された日付および時間に終了となります。 updateReroutes() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
List rerouteId = admin.addReroute( “ORG1”, “mary”, “joe”,
TYPE_USER, tsEffective, tsExpiry);
タスクの再ルーティングの削除
タスクの再ルーティングを削除するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。
public void deleteReroute(
java.lang.String rerouteId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
deleteReroute() メソッドのパラメータを次の表に示します。パラメータには値の指定が必要です。
たとえば、次のコードでは、指定された再ルーティングが削除されます。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 再ルーティング IDは、com.bea.wlpi.common.RerouteInfo オブジェクトである reroute と関連付けられたメソッドを使用して取得されます。reroute オブジェクトは、タスクの再ルーティングの取得に記載のメソッドを使用して取得されます。 deleteReroute() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
admin.deleteReroute(reroute.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 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;
.
.
.
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |