基本コード生成モデル・オプションを使用して作成されたポートレットは、
さらに、ビジネス・プロセスを処理するために使用可能にする必要があります。
「新規ポートレット・プロジェクト」ウィザードまたは「新規ポートレット」ウィザード
を使用してビジネス・プロセス・ポートレットを作成すると、Faces
ポートレットまたは基本ポートレットのいずれかのモデルを指定して、プロセス開始またはタスク処理用のコードを生成することができます。
ただし、基本ポートレットの場合は、ウィザードを使用して基本コードを生成した後で、
ビジネス・プロセス・ポートレットを使用可能にするために追加ステップを実行する必要があります。
- プロセス開始ポートレットを使用可能にするには、次の手順に従います。
- ポートレット JSP ファイルに入力メッセージ用のユーザー・インターフェースを作成する。
例えば、入力メッセージ用の <input> タグ付きの <form> タグを追加したり、
アクション URL を追加します。
- processAction() (JSR 168 API)
または actionPerformed() (IBM® ポートレット API)
をインプリメントして、対応する入力メッセージ・パーツに要求パラメーター値を保管する。
注: 入力メッセージに複合タイプのメッセージ・パーツがある場合、要求パラメーターは、作成され保管されている複合タイプで
対応するメッセージ・パーツに保管する必要があります。
次の例を参照してください。
- processAction() の initiateProcess()
(JSR 168 API) または actionPerformed() (IBM ポートレット API) を呼び出す。 たとえば、次のとおりです。
public void processAction(ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException {
if( request.getParameter("initiateProcess") != null ) {
PortletSession session = request.getPortletSession();
Map inputMessage = (Map)session.getAttribute(ProcessInitiationHelper.PROCESS_INPUT_MESSAGE);
inputMessage.put("Destination", request.getParameter("Destination"));
inputMessage.put("StartDate", request.getParameter("StartDate"));
inputMessage.put("Reason", request.getParameter("Reason"));
FlightReservation flightReservation = new FlightReservation();
flightReservation.setStartdate(request.getParameter("FlightReservation.startdate"));
flightReservation.setStarttime(request.getParameter("FlightReservation.starttime"));
flightReservation.setEnddate(request.getParameter("FlightReservation.enddate"));
flightReservation.setEndtime(request.getParameter("FlightReservation.endtime"));
flightReservation.setSourceairport(request.getParameter("FlightReservation.sourceairport"));
flightReservation.setDestinationairport(request.getParameter("FlightReservation.destinationairport"));
flightReservation.setAirline(request.getParameter("FlightReservation.airline"));
flightReservation.setSeatclass(request.getParameter("FlightReservation.seatclass"));
inputMessage.put("FlightReservation", flightReservation);
Employee requestor = new Employee();
requestor.setId(request.getParameter("Requestor.id"));
inputMessage.put("Requestor", requestor);
ProcessInitiationHelper helper = getProcessInitiationHelper(request);
helper.initiateProcess();
}
}
- タスク処理ポートレットを使用可能にするには、次の手順に従います。
- ポートレット JSP ファイルに入出力メッセージ用のユーザー・インターフェースを作成する。
例えば、入力メッセージ用の <input> タグ付きの <form> タグを追加したり、
アクション URL を追加します。
- processAction() (JSR 168 API)
または actionPerformed() (IBM ポートレット API) をインプリメントして、対応する出力メッセージ・パーツに
要求パラメーター値を保管する。
注: 入力メッセージに複合タイプの
メッセージ・パーツがある場合、要求パラメーターは作成され保管されている複合タイプで
対応するメッセージ・パーツに保管する必要があります。
- processAction() (JSR 168 API) または
actionPerformed()
(IBM ポートレット API)
で、processTask() と、およびオプションとして closePage()
を呼び出す。 たとえば、次のとおりです。
public void processAction(ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException {
TaskProcessingHelper taskProcessingHelper = getTaskProcessingHelper(request);
if (taskProcessingHelper != null)
taskProcessingHelper.receivePageContext(request);
if( request.getParameter("processTask") != null ) {
PortletSession session = request.getPortletSession();
Map outputMessage = (Map)session.getAttribute(TaskProcessingHelper.TASK_OUTPUT_MESSAGE);
outputMessage.put("Worker", request.getParameter("Worker"));
outputMessage.put("managerApproved", new Boolean(request.getParameter("managerApproved") != null));
taskProcessingHelper.processTask();
taskProcessingHelper.closePage(request, response);
}
}