高度なカスタマイズ > Info*Engine ユーザーガイド > Info*Engine データ管理 > ダイナミックパラメータ値の置換 > ユーザー指定の値の置換定義式
  
ユーザー指定の値の置換定義式
タスクの設計者ではなくユーザーが情報を指定する必要がある場合、テンプレートやタスクの設計時の正確な値を知らなくても、@FORM コンテキストグループにアクセスする置換定義式によってこの情報を Webject 内で利用できます。
置換定義式は、param タグのどのデータ属性値でも使用できます。
Web ベースフォームまたは URL でユーザーが 1 つのパラメータ値を入力として指定する場合は、以下のようなパラメータ値になります。
data="$(@FORM[]variable[])"
@FORM コンテキストグループには要素が 1 つしかないので、これらのフォーマットでは @FORM[] を使用します。変数と等しい値が 1 つしかないので、フォーム変数として空の値にセレクタである [] を使用します。
入力として複数のパラメータ値を指定するには、アスタリスク (*) を値セレクタとして含めます。複数のパラメータ値を正確にフォーマットするには、置換されている文字列でコンマをセパレータとして識別する delim 属性も含める必要があります。複数の値の場合は、以下のようなパラメータ値になります。
data="$(@FORM[]variable[*])" delim=","
値セレクタ内のアスタリスク ([*]) によって値をすべて選択し、コンマをセパレータとして使用して 1 つの文字列に連結します。Webject は、delim 属性によって、データ属性の複数の値がコンマで区切られていることを認識します。
* 
アップロードするファイルを選択するための file select という制御タイプを持つ INPUT 要素が、使用するファイルに組み込まれている場合、パラメータの置換で使用するフォーム変数はすべて INPUT 要素の前のフォームに設定する必要があります。詳細については、BLOB のアップロードおよびダウンロードを参照してください。
例: @FORM を使用した Display-Object の置換
以下の変数によって、ユーザーが参照するテーブルフォーマットと属性が設定されます。変数の値は、@FORM コンテキストグループで使用可能であり、このグループから取得できます。
border=2
att=ename
att=phone
headers=Name
headers=Telephone
また、以下の Display-Object Webject は Info*Engine JSP ページにあり、フォームからの変数を使用して従業員のリストを表示すると仮定します。
<ie:task uri="listemployees"/>
<ie:webject name="Display-Object" type="DSP">
<ie:param name="BORDER" data=$(@FORM[]border[])/>
<ie:param name="ATTRIBUTE" data=$(@FORM[]att[*]) delim=","
                           default="*"/>
<ie:param name="HEADER" data=$(@FORM[]headers[*]) delim=","/>
</ie:webject>
Info*Engine による置換処理の後、Webject のパラメータは以下のようになります。
<ie:webject name="Display-Object" type="DSP">
<ie:param name="BORDER" data="2"/>
<ie:param name="ATTRIBUTE" data="ename,phone" delim=","
                          default="*"/>
<ie:param name="HEADER" data="Name,Telephone" delim=","/>
</ie:webject>
例: @FORM を使用した Query-Object の置換
以下の URL が WebServer1 にサブミットされていると仮定します。
http://webServer1/Windchill/servlet/IE/tasks/QueryObject.xml?CLS=EMPLOYEES&ATTS=
NAME&ATTS =EMPNO&ATTS=SALARY&WHR=NAME='&SMITH'
このとき、@FORM コンテキストグループには以下の変数が含まれています。
CLS=EMPLOYEES
ATTS=NAME
ATTS=EMPNO
ATTS=SALARY
WHR=NAME='&SMITH'
また、以下の Query-Objects Webject は QueryObject.xml タスクにあり、URL の変数を使用して “jdbc” アダプタに接続されている情報システムを照会すると仮定します。
<ie:webject name="Query-Objects" type="ACT">
<ie:param name="INSTANCE" data="jdbc"/>
<ie:param name="ATTRIBUTE" data="$(@FORM[]ATTS[*])" delim=","
                             default="*"/>
<ie:param name="CLASS" data="$(@FORM[]CLS[0])" default="EMP"/>
<ie:param name="WHERE" data="$(@FORM[]WHR[0])" default="()"/>
<ie:param name="GROUP_OUT" data="queryStatus"/>
</ie:webject>
Info*Engine による置換処理の後、Webject のパラメータは以下のようになります。
<ie:webject name="Query-Objects" type="ACT">
  <ie:param name="INSTANCE" data="jdbc"/>
  <ie:param name="ATTRIBUTE" data="NAME,EMPNO,SALARY" delim=","
                             default="*"/>
  <ie:param name="CLASS" data="EMPLOYEES" default="EMP"/>
  <ie:param name="WHERE" data="NAME='&SMITH'" default="()"/>
  <ie:param name="GROUP_OUT" data="queryStatus"/>
</ie:webject>
Info*Engine によって処理がすべて完了すると、Webject のパラメータは以下のようになります。
<ie:webject name="Query-Objects" type="ACT">
  <ie:param name="INSTANCE" data="jdbc"/>
  <ie:param name="ATTRIBUTE" data="NAME"/>
  <ie:param name="ATTRIBUTE" data="EMPNO"/>
  <ie:param name="ATTRIBUTE" data="SALARY"/>
  <ie:param name="CLASS" data="EMPLOYEES"/>
  <ie:param name="WHERE" data="NAME='&SMITH'"/>
  <ie:param name="GROUP_OUT" data="queryStatus"/>
</ie:webject>