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 への再ルーティングが追加されます。このコード例では、admin は Admin 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 オーガニゼーションの再ルーティングされたタスクが取得されます。このコード例では、admin は Admin 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 へと再ルーティングされます。このコード例では、admin は Admin 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 のリストを取得する方法については、タスクの再ルーティングの取得を参照。


 

たとえば、次のコードでは、指定された再ルーティングが削除されます。このコード例では、admin は Admin 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 サンプルを参照してください。

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

重要なコード行は、太字で強調されています。このコード例では、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;
.
.
.

 

ページの先頭 前 次