第3章
この章では、ページフロープロセスで使用できるアクティビティを紹介します。この章には、次のトピックが含まれています。
ページフローアクティビティにはいくつかのカテゴリがあります。
注記: ページフローモデラーの[データベース]タブにはデータセットも含まれます。 データセットは従来の意味ではアクティビティではありません。 設計時には、ページフローアクティビティの場合と同じようにデータセットの定義を変更することができます。 ただしランタイム時には、データセットはアクティビティのようには動作しません。 つまり、他のアクティビティのように処理を実行することも、制御のフローに影響することもありません。
データセットの詳細については、データセットの操作を参照してください。
ページフローアクティビティには、ワークフローモデラーで設定できる「プロパティ 」があります。 これらのプロパティのいくつかは、すべてのアクティビティに共通ですが、それ以外のプロパティは、いくつかのアクティビティでのみ利用できます。
ほとんどのページフローアクティビティには、「プライマリプロパティ」があります。プライマリプロパティは、オブジェクトをアクティビティに関連付けます。プレゼンテーションアクティビティでは、プライマリプロパティがアイテムとして表示されます。システムプロパティでは、プライマリプロパティがオブジェクトとして実行されます。
説明
「モードアクティビティ」は、ページフロー内の特定モードの開始点です。 モードアクティビティは、プロセスがそのモードにあるときに実行される一連のアクティビティを開始します。 各モードアクティビティは、ポートレット仕様(Java Portlet 1.0)によって定義されているとおり、「ポートレットモード」に直接マップします。
モードアクティビティは必須アクティビティです。 各ページフローには表示タイプのモードアクティビティが1つ以上必要です。 新しいページフロープロセスを作成すると、ページフローモデラーは表示タイプを持つモードアクティビティを自動的に追加します。
ページフローは複数のモードアクティビティを持つことができます。 たとえば、フローが表示、編集、またはヘルプモードの場合、ページフローは動作を指定するモードアクティビティを持つことができます。
プロパティ
モードアクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
モード |
モード |
モードタイプを指定します。 ページフローでは次のポートレットモードがサポートされています。 |
デフォルト |
これがページフローのデフォルトモードかどうかを示します。 指定されるページフローは、デフォルトとしてマークされているモードアクティビティを1つだけ持つことができます。 |
|
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
Uの設計I |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
用途
ページフローが開始された場合の結果 すべてのページフローは表示モードで開始されます。 ポートレット仕様では、すべてのポートレットの実装がこのモードでなければならないため、ページフローでは表示モードが必要です。
ユーザがモードを切り替えた場合の結果 ユーザはランタイム時にモードを切り替えることができます。モードの切り替えはランタイムだけの機能です。 ページフローランナーは、ポートレットコンテナによって提供される要求情報を調べることによってモードの切り替えを検出します。 モード切り替えが検出されると、名前の付けられたモードを使用して再開されます。 指定されたモードが見つからない場合、例外がスローされ、フローはその前の状態のままとなります。 デフォルトモードは、モードの切り替え中には使用されません。
説明
「フォームアクティビティ」は、ランタイム時に表示するXHTMLファイルを指定するプレゼンテーションアクティビティです。 XHTMLファイルはユーザによる操作のためのフォームを定義します。 フォームでは、ユーザインタフェースの定義にXForms技術が採用されています。 Xformsのあらゆる機能にアクセスを提供するフォームアクティビティは、ユーザにとってページフロープロセスにプレゼンテーションを作成するための極めて強力なツールです。 フォームアクティビティによって表示されるフォームには、ボタン、入力フィールド、ラベルなど、さまざまなユーザ制御を含めることができます。 また、ユーザはフォームを使用することでデータベースまたはWebサービスと対話することもできます。
exteNd Directorフォームデザイナは、XForms 1.0準拠Webフォームを開発するためのグラフィカル環境を提供します。 フォームデザイナを使用すると、フォームアクティビティで表示できるXHTMLフォームを作成および変更することができます。
フォームデザイナの操作の詳細については、を参照してください。
プロパティ
フォームアクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
フォーム |
XHTML |
表示するXHTMLコンテンツを指定します。 フォームデザイナを使用してXHTMLコンテンツを作成することができます。 |
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
インスタンスデータ |
着信ドキュメント |
このアクティビティへの入力として使用されるドキュメントを1つ以上指定します。 各ドキュメントの場所は、スコープパスを使用して指定されます。 アクティビティに対する着信ドキュメントの一覧は、XHTMLファイルで着信ドキュメントがいくつ定義されているかによって異なります。 |
発信ドキュメント名 |
このアクティビティによって生成される出力を含むドキュメントを指定します。 ドキュメントの場所は、スコープパスを使用して指定されます。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
HTMLアクティビティは、ランタイム時に表示するXHTMLコンテンツを指定するプレゼンテーションアクティビティです。
表示するHTMLコンテンツにHTMLフォームが含まれている場合、フォームのアクションはWSRP仕様によって定義されている業界標準のトークン、wsrp_rewriteトークンを指定する必要があります。
action="wsrp_rewrite?wsrp-urlType=blockingAction/wsrp_rewrite"
注記: このバージョンのexteNd Directorでは、WSRPプロトコルが完全にサポートされているわけではありません。 ただし、多くのWSRP機能のサポートが実装されています。 たとえばwsrp_rewriteトークンはフォームのアクションでは必要です。
フォームアクティビティで表示するXHTMLコンテンツでは、次のフォームに対するアクションでこの短縮構文を指定することができます。
<xforms:submission action="?verb=help" id="help" method="post"/>
注記: この構文は、HTMLコンテンツではサポートされていません。
例1
HTMLアクティビティで表示できるHTMLページの例は、次のとおりです。 このアクティビティのHTMLソースには、verb
というパラメータに対する値next
を渡す[次へ]ボタンがあります。
<form name="form1" method="post" action="wsrp_rewrite?wsrp-urlType=blockingAction/wsrp_rewrite">
<p>Enter your name
<input type="name" name="name">
<br><br>
<input type="submit" name="verb" value="next">
<input type="submit" name="verb" value="help">
</form>
例2 次の例は、テーマCSSファイルで定義されたクラスを利用するタグを示します。 CSSファイルのクラスにタグをマップすることにより、これらのタグが現在選択されているテーマの表示特性に従って外観が変化することを確認できます。
<form name="form1" method="post" action="wsrp_rewrite?wsrp-urlType=blockingAction/wsrp_rewrite"> <br/> <span class="portlet-form-field-label"> Zip </span> <input class="portlet-form-field" type="name" name="zip" value="02630" size="20\x94 > <br/><br/> <input type="submit" name="verb" value="Continue"> </form>
プロパティ
HTMLアクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
HTML |
HTML |
表示するHTMLコンテンツを指定します。 HTMLアクティビティが参照するHTMLページは、リソースセット内に存在する必要があります。 |
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「ページフローアクティビティ」は、現在のフロー内に個別のページフローを含みます。
ページフローアクティビティはランタイム対象項目を実行します。 ページフローモデラーでは、ページフローアクティビティによって指定されたフローが、フロー内で実際に適切に動作するかの設計時確認は行なわれません。
別のページフロー内にページフローを含めた場合、含まれるフロー内のモードアクティビティは含むフローのモードタイプと一致するタイプを持つ必要があります。 また、含まれるフローは完了アクティビティを持つ必要があります。 完了アクティビティは、いつ含んでいるフローに戻るかをエンジンに知らせます。 含まれるフローが完了アクティビティを含まない場合、制御は含んでいるフローには戻りません。
ページフローが別のページフロー内に含まれる場合、含まれるフロー内のモードアクティビティと完了アクティビティは必要なスコープパス関数を実行し、転送操作を実行します。
プロパティ
ページフローアクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
ページフロー |
ページフロー |
リソースセットのページフロー記述子を指定することによって、どのページフローを実行するかを示します。 |
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
用途
ランタイム時には、ページフローアクティビティは自ら処理は実行しません。 代わりに、プロセスを開始する前にメインページフロー内の含まれるページフローを挿入するようにページフローエンジンに指示します。
別のページフロー内のページフローを含める場合に、エンジンが実行する基本手順は次のとおりです。
含まれる各フローに対してこのプロセスを繰り返します。
例
次のようなメインページフローがあるとします。
ページフローアクティビティは次のフローを指します。
ランタイム時、メインページフロードキュメントはこのようなフロー(ページフローモデラーで作成された場合)を作成するように操作されます。
説明
JSPアクティビティは、JSPページを呼び出すプレゼンテーションアクティビティです。
JSPアクティビティによって呼び出されるJSPページは、処理のために独自のURLの作成を処理する必要があります。 JSPアクティビティの正しいURLを取得するには、これらのコード行をJSPページに追加する必要があります。
RenderResponse renderResponse = (RenderResponse)request.getAttribute( "javax.portlet.response" ); String MYURL = renderResponse.createActionURL().toString();
文字列javax.portlet.response
はポートレット仕様によって定義されます。 exteNd Directorは、ポートレット仕様を完全サポートしているため、この文字列はexteNd Director内で実行中のすべてのJSPページ(およびサーブレット)で使用できます。
用途
JSPページで作成するフォームは次のようなります。
<form name=\qmyform\q method=\qpost\q action=\qMYURL\q>
JSPウィザードを使用して、JSPページファイルを作成できます。 JSPアクティビティからJSPページを呼び出す場合は、JSPページを現在のWARファイルに直接保存する必要があります。 JSPアクティビティは、WARファイルのJAR内に保存されているJSPページにはアクセスできません。
JSPアクティビティを含むフローを実行するには、ページフローモデラーによって生成されるポートレット記述子を変更する必要があります。 サポートされているmimeタイプのリストにcharset=ISO-8859-1
を追加してください。
<supports> <mime-type>text/html; charset=ISO-8859-1</mime-type> <portlet-mode>view</portlet-mode> </supports>
プロパティ
JSPアクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
JSP |
JSP |
呼び出すJSPページを指定します。 指定するJSPページは現在のWARのファイルにする必要があります。 スコープパスを使用してJSPを指定することができます。ただしパスがカレントWAR内のJSPファイルの場所を含んでいる必要があります。 一般に、JSPページを見つけるには「生成物」スコープを使用します。 たとえば、スコープパスとして |
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
例
次に、JSPアクティビティから呼び出すことのできるJSPページの例を示します。
<%@ page language="java" session="true" isThreadSafe="true" contentType="text/html; charset=ISO-8859-1" %> <% //************************************************************ // User needs to make sure to import "javax.portlet.*;" %> <%@ page import="javax.portlet.*" %> <% // For the JSP Activity to work, the user must build the correct // URL for their HTML Form to submit to. // The HttpRequest object is available to all JSPs by default. // The user can get the RenderResponse object from the HttpRequest // at the well-known location of JAVAX.PORTLET.RESPONSE on the // HttpRequest object. The user can then build the URL from that // RenderResponse by calling renderResponse.createActionUrl(). // Whatever the value of that URL is should be placed in the Form. // Get the RenderResponse RenderResponse renderResponse = (RenderResponse)request.getAttribute( "javax.portlet.response" ); String MYURL = ""; try { // Build the correct URL for the HTML Form MYURL = renderResponse.createActionURL().toString(); } catch( Exception e ) { e.printStackTrace(); } %> <% // Make sure the URL the user built is the "action" attribute // of the HTML Form %> <form method="post" action="<%= MYURL %>"> <% //*********************************************************** %> <hr> <br><br> <p>Enter a value to POST back to Tom: <input name="testValue"/> <br> <input type="text" name="tomText"/> <input type="submit" name="Submit" value="Submit"> <br><br> <hr> </form>
説明
サーブレットアクティビティは、サーブレットを呼び出すプレゼンテーションアクティビティです。
ランタイムでは、サーブレットアクティビティはサーブレットのdoGet()メソッド呼び出します。 doGet() メソッドはユーザに表示できるHTMLを戻す必要があります。
サーブレットアクティビティによって呼び出されるサーブレットページは、処理のための独自のURLの作成を処理する必要があります。 サーブレットアクティビティの正しいURLを取得するには、これらのコード行をサーブレットページに追加する必要があります。
RenderResponse renderResponse = (RenderResponse)request.getAttribute( "javax.portlet.response" ); String MYURL = renderResponse.createActionURL().toString();
文字列javax.portlet.response
はポートレット仕様によって定義されます。 exteNd Directorは、ポートレット仕様を完全サポートしているため、この文字列はexteNd Director内で実行しているすべてのサーブレットページ(およびJSPページ)で使用できます。
用途
サーブレットページで作成するフォームは次のようになります。
<form name=\qmyform\q method=\qpost\q action=\qMYURL\q>
サーブレットウィザードを使用すると、サーブレットJavaクラスファイルを作成できます。 作成すると、サーブレットウィザードは自動的に必要なエントリを新しいサーブレットのweb.xmlファイルに追加されます。
サーブレットアクティビティからサーブレットを呼び出す場合は、サーブレットクラスを現在のWARファイルに直接保存する必要があります。 サーブレットアクティビティは、WARファイルのJAR内に保存されているサーブレットにはアクセスできません。
プロパティ
サーブレットアクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
サーブレット |
サーブレット |
呼び出すサーブレットページを指定します。 指定するサーブレットはweb.xmlファイルのサーブレット名をマップしている必要があります。 |
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
例
次に、サーブレットアクティビティから呼び出すことのできるサーブレットの例を示します。
package com.test; import javax.portlet.*; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class myServlet extends HttpServlet { static final String CONTENT_TYPE = "text/html"; // Handle the HTTP GET request public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response.setContentType( CONTENT_TYPE ); PrintWriter out = response.getWriter(); //***************************************************************** String url = ""; try { // The Servlet Activity must have a certain URL as the value // of its HTML Form "action" attribute. // Like the HTML Activity, the user will be responsible for // building this URL themselves. They must do this, or the // flow will not move along to the next activity. // The way to get this URL is from the RenderResponse object. // The Portlet Spec tells us that the RenderResponse MUST BE // AVAILABLE on the HttpServletRequest // object as the JAVAX.PORTLET.RESPONSE attribute. // This object will be there for any servlet who wants it. RenderResponse renderResponse = (RenderResponse)request.getAttribute ( "javax.portlet.response" ); // Once we have the RenderResponse object, the user needs to // create an ActionURL from it, // and then turn that ActionURL into a String. // This is the URL the user should use as in the HTML form. url = renderResponse.createActionURL().toString(); } catch( Exception e ) { e.printStackTrace(); } // Now the user needs to put the String as the value of the // "action" attribute in the HTML Form. // This way the Engine understands that it // should move the flow along after a submit if that\qs what // the user wants. out.println( "<form name=\qmyForm\q method=\qpost\q action=\q" + url + "\q>" ); //***************************************************************** out.println( "<p>Servlet MyServlet has received an HTTP GET.</p>" ); out.println( "<p>The servlet generated this page in response to the request.</p>" ); out.println( "<input type=\qtext\q name=\qtomText\q/>"); out.println( "<input type=\qsubmit\q name=\qtomSubmit\q value=\qblah\q/>"); out.println( "</form>" ); } // Handle the HTTP POST request public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response.setContentType( CONTENT_TYPE ); PrintWriter out = response.getWriter(); out.println( "<p>Servlet has received an HTTP POST.</p>" ); out.println( "<p>The servlet generated this page in response to the request.</p>" ); out.println( "" ); } }
説明
「初期クエリアクティビティ」は、データベースからユーザの検索条件と一致するすべてのレコードのキーを取得します。 このアクティビティは検索条件を含むXMLドキュメントを入力として使用します。 データベースからキーが取得されると、その結果セットがレコードキャッシュに保存されます。
プロパティ
初期クエリアクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
データセット |
現在のページフローのデータセットの名前を指定します。 指定するデータセットには、データベースにアクセスするために必要なすべての設定が含まれている必要があります。 |
|
インスタンスデータ |
着信ドキュメント名 |
このアクティビティへの入力として使用されるドキュメントを指定します。 ドキュメントの場所は、スコープパスを使用して指定されます。 |
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「ページの取得アクティビティ」は1ページのレコードの概要データを取得します。 このアクティビティでは、初期クエリアクティビティによって返されたキーのセットを使用して、概要データに含めるレコードを決定します。
プロパティ
ページの取得アクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
データセット |
現在のページフローのデータセットの名前を指定します。 指定するデータセットには、データベースにアクセスするために必要なすべての設定が含まれている必要があります。 |
|
インスタンスデータ |
着信ドキュメント名 |
このアクティビティへの入力として使用されるドキュメントを指定します。 ドキュメントの場所は、スコープパスを使用して指定されます。 |
発信ドキュメント名 |
このアクティビティによって生成される出力を含むドキュメントを指定します。 ドキュメントの場所は、スコープパスを使用して指定されます。 |
|
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「レコードの取得アクティビティ」は単一レコードの詳細フィールドを取得します。
プロパティ
レコードの取得アクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
データセット |
現在のページフローのデータセットの名前を指定します。 指定するデータセットには、データベースにアクセスするために必要なすべての設定が含まれている必要があります。 |
|
インスタンスデータ |
着信ドキュメント名 |
このアクティビティへの入力として使用されるドキュメントを指定します。 ドキュメントの場所は、スコープパスを使用して指定されます。 |
発信ドキュメント名 |
このアクティビティによって生成される出力を含むドキュメントを指定します。 ドキュメントの場所は、スコープパスを使用して指定されます。 |
|
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「レコード挿入アクティビティ」は、SQL INSERTステートメントを実行することによって、新しいレコードのデータをデータベースに送信します。
注記: 変更ログを有効にしている場合、SQL INSERTは変更ログの適用アクティビティが実行されるまで実際には実行されません。
プロパティ
レコード挿入アクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
データセット |
現在のページフローのデータセットの名前を指定します。 指定するデータセットには、データベースにアクセスするために必要なすべての設定が含まれている必要があります。 |
|
インスタンスデータ |
着信ドキュメント名 |
このアクティビティへの入力として使用されるドキュメントを指定します。 ドキュメントの場所は、スコープパスを使用して指定されます。 |
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「レコード更新アクティビティ」は、SQL UPDATEステートメントを実行することによって、1つのレコードの更新データをデータベースに送信します。 オプティミスティック平行性制御をサポートするには、UPDATEステートメントのWHERE句に元の(キャッシュされた)値を含めます。
注記: 変更ログを有効にしている場合、SQL UPDATEは変更ログの適用アクティビティが実行されるまで実際には実行されません。
プロパティ
レコード更新アクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
データセット |
現在のページフローのデータセットの名前を指定します。 指定するデータセットには、データベースにアクセスするために必要なすべての設定が含まれている必要があります。 |
|
インスタンスデータ |
着信ドキュメント名 |
このアクティビティへの入力として使用されるドキュメントを指定します。 ドキュメントの場所は、スコープパスを使用して指定されます。 |
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「レコード削除アクティビティ」は、SQL DELETEステートメントを実行することによって、ユーザが選択したレコードを削除します。 オプティミスティック平行性制御をサポートするには、DELETEステートメントのWHERE句に元の(キャッシュされた)値を含めます。 レコード削除アクティビティは、選択された各レコードについて個別のDELETEステートメントを送信しますが、ステートメントはすべて1つのトランザクションで実行されます。
注記: 変更ログを有効にしている場合、SQL DELETEは変更ログの適用アクティビティが実行されるまで実際には実行されません。
プロパティ
レコード削除アクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
データセット |
現在のページフローのデータセットの名前を指定します。 指定するデータセットには、データベースにアクセスするために必要なすべての設定が含まれている必要があります。 |
|
インスタンスデータ |
着信ドキュメント名 |
このアクティビティへの入力として使用されるドキュメントを指定します。 ドキュメントの場所は、スコープパスを使用して指定されます。 |
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「変更ログの適用アクティビティ」は、変更ログのすべての変更をデータベースに適用します。
データベースページフローウィザードを実行すると、次のように変更ログの変更を保存するオプションが表示されます。
変更ログの使用を指定すると(上記参照)、ウィザードは生成されたフローに変更ログの適用アクティビティを含めます。
プロパティ
変更ログの適用アクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
データセット |
現在のページフローのデータセットの名前を指定します。 指定するデータセットには、データベースにアクセスするために必要なすべての設定が含まれている必要があります。 |
|
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「ルールアクティビティ」は、ランタイム時にビジネスルールを実行するシステムアクティビティです。
プロパティ
ルールアクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
ルール |
ルール ID |
ルールIDを指定します。 |
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「チェックポイントアクティビティ」は、フロー内のページを更新するために必要な処理を指定できるディレクティブアクティビティです。 トランザクションマーカーとして機能するチェックポイントアクティビティは、ページを表示するために必要な処理の開始点を示します。
チェックポイントアクティビティは、一般にページフロー内のプレゼンテーションアクティビティ(HTML、フォーム、またはポートレット)に関連付けられます。 ユーザがプレゼンテーションアクティビティを再ロードしようとすると、エンジンはプレゼンテーションアクティビティに先行するチェックポイントアクティビティに戻ってその時点から続行するようにフローに指示します。
パフォーマンスのヒント パフォーマンスの改善を考慮した場合、ポートレットの再表示に必要なバックグラウンド処理を実行するシステムアクティビティの前にチェックポイントアクティビティを含めたくない場合もあります。 たとえば、Webサービスを呼び出すページフローにおいては、ユーザがページを更新したり、ページ内の別のポートレットに対してアクションを実行したりするたびにWebサービスが実行されないように、チェックポイントアクティビティの削除が必要となります。 ページに関連付けられているデータが頻繁に変更されないことがわかっている場合、チェックポイントアクティビティは必要ない可能性があります。
注記: チェックポイントアクティビティを削除する別の方法として、ポートレットキャッシュを使用してページフローに関連付けられている表示操作の数を最小限に抑えるという方法もあります。
ポートレットキャッシュを使用してページフローのパフォーマンスを改善する方法については、ページフローのパフォーマンスとポートレットのキャッシュを参照してください。
用途
たとえば、Webサービス起動の結果を表示するWebサービスアクティビティとフォームアクティビティを含むページフローがあるとします。 Webサービスは株値表示に基づいて株式相場を取得します。 Webサービスがその処理を完了すると、フォームアクティビティが結果を表示します。 ユーザがページを再ロードするたびに、データを更新する必要があります。 これを達成するために、次のようなフローを作成することができます。
このフローのManualQuoteRefreshリンクの内容に注目してください。 要求(ManualQuoteRefreshリンクによって表示されている)によってトリガされた表示と、ブラウザまたはポートレットコンテナによってトリガされた表示との違いが分かります。 また、SelectAnotherQuoteリンクとViewAvailableStocksリンクがGetStocksCheckPointを対象にしていることにも注目してください。 QuoteSelectionアクティビティへの直接のリンクでは、GetStocksCheckPointおよびGetAvailableStocksアクティビティは実行されません。
前の例では、各再表示イベントに対して同じページが表示されますが、データは異なります。 また、各再表示イベントで別々のページが表示されるフローでチェックポイントアクティビティを使用することもできます。 たとえば、ヘルプモードでは、ユーザが再ロードを要求するたびに異なるヘルプページを表示するようなフローが必要となることがあります。
この場合は、helpCheckPointアクティビティからのリンクが各更新について評価され、どのヘルプページを表示するかが決定されます。
ページフローはチェックポイントアクティビティをいくつでも持つことができますが、チェックポイントアクティビティは一度に1つだけ有効にできます。 ランタイム時には、チェックポイントアクティビティによって次のタスクが実行されます。
エンジンがチェックポイントアクティビティを含めることに対してどのように反応するかを処理するロジックは、プレゼンテーションアクティビティに作成されます。
プロパティ
チェックポイントアクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「例外アクティビティ」は、ページフローの保護システムとして動作するディレクティブアクティビティです。 その目的は、ユーザがフロー内でどのように例外を処理するかをモデル化できるようにすることです。 各例外アクティビティは、1つ以上の例外を処理する処理の開始点です。
ページフローを作成する場合は、例外アクティビティを指す明示的なリンクを追加しないでください。 代わりに、例外アクティビティへのリンクは、どの例外が発生するかによってランタイム時にダイナミックに生成されます。 例外アクティビティがランタイム時に制御を得ると、リンクされているアクティビティに処理を単純に送ります。 いったん例外アクティビティが呼び出されると、制御はフローに返されません。
用途
たとえば、Webサービスアクティビティを含むページフローを定義するとします。 ランタイム時には、関係するWebサービスが利用できないようにすることができます。 これを処理するためには、java.rmi.ConnectExceptionをトラップするフローに例外アクティビティを追加します。この場合、エンジンはこの例外が発生するたびにこのアクティビティに処理を転送します。 次に例外アクティビティは、ユーザへの有効なメッセージを表示するHTMLアクティビティに処理を転送します。
ページフローはそれに対して定義されている例外アクティビティをいくつでも持つことができます。 指定された例外アクティビティは1つ以上の例外クラスに関連付けられます。 例外アクティビティをフローに置く場合は、その例外文字列を「例外プロパティ」で指定してください。 完全なクラス名(java.lang,NullPointerExceptionなど)、またはクラス名の一部(java.langなど)を指定して、このアクティビティが処理する一連の例外を指定することができます。
例外が発生すると、ページフローエンジンは例外をフロー内の例外アクティビティと一致させようとします。 エンジンの「再帰的プロパティ」をfalse
に設定することによって、特定の例外アクティビティと完全に一致する場合のみ受け入れるようにエンジンに指示することができます。 ただし、再帰的プロパティをtrueに設定した場合、あいまいな一致も検索され、継承構造同様にパッケージ階層も考慮されます。
一致が見つかると、例外アクティビティへのダイナミックリンクが作成され、多数のスコープパスが作成されてカスタム例外ハンドラに例外情報が提供されます。 作成されるスコープパスは次のとおりです。
スコープパス |
説明 |
---|---|
Flow/exception/EXCEPTION |
ベース例外の値を表す文字列値を含みます。 |
Flow/exception/STACK |
ベース例外のスタックトレースを含みます。 |
Flow/exception/CLASS |
ベース例外のクラス名を含みます。 |
Flow/exception/MESSAGE |
ベース例外のエラーメッセージ文字列を含みます。 |
一致が見つからない場合、または例外ハンドラそのものが例外をスローした場合、EboProcessExceptionが生成され、例外はページフローエンジンによって処理されます。
例
例外文字列java.lang
を持つ例外アクティビティを追加し、再帰的プロパティをtrue
に設定したとします。 この場合、java.lang.NullPointerExceptionがスローされたとします。 この例外は次のように解決されます。
エンジンはjava.lang.NullPointerExceptionをフロー内の既知の例外ハンドラの一覧と比較し、一致が見つかりません。
エンジンは修飾名の最後のセグメントをドロップして、再試行します。 このとき、エンジンはjava.langとの一致を見つけ、java.langの例外アクティビティにダイナミックにリンクします。
java.security.GeneralSecurityExceptionがスローされたとします。 この場合、この例外は次のように解決されます。
エンジンはjava.security.GeneralSecurityExceptionをフロー内の既知の例外ハンドラの一覧と比較し、一致が見つかりません。
エンジンは修飾名の最後のセグメントをドロップして、再試行します。それでもjava.securityとの一致が見つかりません。
そこで、エンジンは、java.lang.exceptionであるjava.security.GeneralSecurityExceptionのスーパークラスを検索することによって例外を解決しようとします。java.lang.exceptionとの一致を見つけられません。
エンジンは修飾名の最後のセグメントをドロップして、再試行します。 このとき、エンジンはjava.langとの一致を見つけ、java.langの例外アクティビティにダイナミックにリンクします。
例外アクティビティは、フローで例外を処理するための柔軟なアーキテクチャを提供します。 広範な例外を取得する特定の例外アクティビティが必要な場合は、クラス名の一部を持つ例外文字列を指定し、再帰的プロパティをtrueに設定します。 一方、特定の例外がスローされたときに発生する状況に対する制御を強化する場合は、例外文字列に完全なクラス名を指定し、再帰的プロパティをfalseに設定します。
プロパティ
例外アクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
例外 |
例外 |
完全なクラス名(java.lang,NullPointerExceptionなど)、またはクラス名の一部(java.langなど)を指定して、このアクティビティが処理する一連の例外を指定します。 |
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「Javaアクティビティ」は、ページフローのコンテキスト内でJavaクラスを実行するシステムアクティビティです。Javaアクティビティを使用することによって、ユーザの操作なしに自動的に実行されるカスタムビジネスロジックを作成できます。
Javaアクティビティウィザードは、ページフロー内で実行できるJavaクラスの作成に役立ちます。
Javaアクティビティウィザードの使用方法については、を参照してください。
プロパティ
Javaアクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
クラス名 |
クラス名 |
実行するJavaクラスの名前を指定します。 パッケージ名も指定する必要があります。 |
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「XSLアクティビティ」は、XSLを使用してXMLドキュメントを変換するシステムアクティビティです。
各XSLアクティビティは、変換に使用するXSLを指定するプロパティを含みます。 また、このアクティビティは「入力ドキュメント」と「出力ドキュメント」も指定します。 入力ドキュメントは変換するSMLも指定します。 出力ドキュメントは変換結果が入るドキュメントを指定します。
プロパティ
XSLアクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
XSL |
XSLドキュメント |
変換に使用するSXLを含むドキュメントを指定します。 ドキュメントの場所は、スコープパスを使用して指定されます。 |
入力ドキュメント名 |
このアクティビティへの入力として使用されるドキュメントを指定します。 このドキュメントは変換するXMLを含みます。 ドキュメントの場所は、スコープパスを使用して指定されます。 |
|
出力ドキュメント名 |
このアクティビティによって生成される出力を含むドキュメントを指定します。 このドキュメントはXSL変換の結果を含みます。 ドキュメントの場所は、スコープパスを使用して指定されます。 |
|
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「Webサービスアクティビティ」は、Webサービスを実行するシステムアクティビティです。
Webサービスアクティビティでは、スキーマを含むドキュメントスタイルのWSDLファイルのサポートのみが提供されます。ただし、Javaアクティビティを使用することによって、RPCスタイルのWebサービスを使用するページフローを作成できます。
Webサービスのバックグラウンド情報については、ユーティリティツールのWebサービスの基本に関する章を参照してください。 ページフローでRPCスタイルのWebサービスを使用する方法については、を参照してください。
Webサービスページフローウィザードを使用すると、Webサービスを実行するページフローを簡単かつ迅速に作成することができます。
Webサービスページフローウィザードの使用方法については、を参照してください。
プロパティ
Webサービスアクティビティのプロパティは、次のとおりです。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
ドキュメントスタイル |
Webサービス入力ドキュメントパス |
サービスに出された要求に対してインスタンスデータを提供します。入力ドキュメントは、スコープパスを使用して指定されます。一般的に、入力ドキュメントに使用されるスコープは、Flow/documentです。 |
Webサービス名 |
WSDLファイルで指定したサービスの名前 |
|
Webサービス操作 |
WSDLファイルで指定した操作の名前 |
|
Webサービス出力パラメータ(オプション) |
サービスによって返された要素のノード名。 |
|
Webサービスポートタイプ |
WSDLファイルで指定したサービスのポートタイプ |
|
Webサービス戻りドキュメントパス |
サービスから返された応答のインスタンスデータを提供します。出力ドキュメントは、スコープパスを使用して指定されます。一般的に、出力ドキュメントに使用されるスコープは、Flow/documentです。 |
|
ドキュメントスタイル |
WebサービスWSDLドキュメントパス |
Webサービスについて説明するWSDLファイルの名前を指定します。 TIP: ページフローモデラーで作業す る場合は、このプロパティを最初に入 力します。プロパティシートがWSDL ファイルへのパスを取得すると、アク ティビティに関連付けられているほか の多数のプロパティが自動的に入力さ れます。 |
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「Composerサービスアクティビティ」は、exteNd Composerサービスを実行するシステムアクティビティです。exteNd Composer「サービス」では、一般的に「コンポーネント」と呼ばれる実行可能な作業単位を結合し、これらの間のデータの流れを調整します。 一般的なサービスには、入力XMLドキュメントを受け取ったり、洗練されたドキュメントのマッピングや変換を実行したり、バックエンドのデータソースから情報を収集したり、メインフレームおよびAS/400でトランザクションを実行したり、エラー条件を処理したり、状況依存型電子メールやJMS通知を送信したり、元の要求者に1つまたは複数のXML応答ドキュメントを返したりする一連のコンポーネントが含まれます。サービスのタスクを独立したコンポーネントに分割することによって、テスト、デバッグ、コード管理およびコードの再利用という点で多大な効果を実現することができます。
Composerページフローウィザードを使用すると、exteNd Composerサービスを実行するページフローを簡単かつ迅速に作成することができます。
Composerページフローウィザードの使用方法については、を参照してください。
プロパティ
Composerサービスアクティビティのプロパティは、次のとおりです。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
Composerサービス |
入力ドキュメント |
サービスに出された要求に対してインスタンスデータを提供します。入力ドキュメントは、スコープパスを使用して指定されます。一般的に、入力ドキュメントに使用されるスコープは、Flow/documentです。 |
サービス |
リソースセットのサービス記述子を指定することによって、どのexteNd Composerサービスを実行するかを示します。 |
|
出力ドキュメント |
サービスから返された応答のインスタンスデータを提供します。出力ドキュメントは、スコープパスを使用して指定されます。一般的に、入力ドキュメントに使用されるスコープは、Flow/documentです。 |
|
スコープパスをコピーする |
実行前にコピー |
アクティビティが実行される前に、あるスコープパスの場所から別の場所にデータをコピーします。 |
実行後にコピー |
アクティビティが実行された後で、あるスコープパスの場所から別の場所にデータをコピーします。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「終了アクティビティ」は、ページフローの最後にマーク付けするシステムアクティビティです。 終了アクティビティは、別のページフロー内で使用されていない限りページフロー内では必要ありません。
終了アクティビティの動作は、ページフローがどのように使用されているかによって異なります。
スタンドアロンのページフローにおいては、終了アクティビティは何も処理しません。 終了アクティビティはスタンドアロンのページフロー内ではオプションです。
ページフローが別のページフロー内に含まれている場合、終了アクティビティは含んでいるページフロー内の次のアクティビティに処理を進めます。 この場合、含んでいるページフローにいつ戻るのかをページフローエンジンが知るために、終了アクティビティが必要です。
プロパティ
終了アクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
説明
「ワークフローリターンアクティビティ」はページフローに対し、そのワークアイテムをワークフローに進めるように知らせるシステムアクティビティです。
ワークフローのページフローを使用する
ワークフローから渡される持続性ワークアイテムを更新できるページフローを作成します。 ワークアイテムデータを保存するには、ページフローモデラーのFlowスコープを使用します。
ワークフローに戻るフロー内の場所にワークフローリターンアクティビティを追加し、次のワークフローアクティビティに進みます。
ページフローを含める地点のワークフローモデラーにページフローアクティビティを追加し、ページフロー記述子を指します。 更新したワークアイテムにアクセスするには、ページフローモデラーのFlowスコープを使用します。
詳細については、ワークフローガイドのワークフロー内のページフローの使用に関する節を参照してください。
ワークフローリターンアクティビティのプロパティを次に示します。
[プロパティインスペクタ]タブ |
プロパティ名 |
説明 |
---|---|---|
アクティビティ |
名前 |
アクティビティの名前を指定します。 |
説明 |
アクティビティが実行することを説明します。 |
|
ウィンドウを自動的に閉じる |
選択すると、ワークフローに戻った後でクライアントウィンドウが閉じます。 |
|
UIの設計 |
[UIの設計]プロパティは、アクティビティの設計時の外観を制御します。詳細については、オブジェクト表示プロパティの設定を参照してください。 |
用途
ワークフローリターンアクティビティを含むページフローを実行し、転送するワークフローキューがない(またはワークフローエンジンが実行中でなない)場合、ページフローエンジンはブラウザウィンドウに次のメッセージを表示します。
The Workflow Return Activity cannot find a workflow to forward.
ユーザは[続行]ボタンをクリックして処理を続行できます。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...