高度なカスタマイズ > Info*Engine ユーザーガイド > Task Webject リファレンス > Group Webject > Diff-Groups
  
Diff-Groups
説明
2 つのグループの差を計算し、その差を出力グループに配置します。
一般に、一方のグループに属するが両方のグループには属さない要素は、2 つのグループの差に含まれます。たとえば、要素 x がグループ A とグループ B の両方に含まれる場合、要素 x は出力グループには配置されません。さらに、要素 y がグループ A には含まれるがグループ B には含まれない場合、出力グループに配置されます。ただし、グループ A に一意なアイテムのみが出力に配置されるため、要素 z がグループ B には含まれるがグループ A には含まれない場合、要素 z は出力グループには配置されません。
構文
<ie:webject name="Diff-Groups" type="GRP">
  <ie:param name="CASE_IGNORE" data="[TRUE | FALSE]"/>
  <ie:param name="CLASS" data="class"/>
  <ie:param name="COMPARISON" data="[ALPHA | NUMERIC]"/>
  <ie:param name="DIFFBY" data="attribute"/>
  <ie:param name="GROUP_IN" data="group_name1"/>
  <ie:param name="GROUP_IN" data="group_name2"/>
  <ie:param name="GROUP_OUT" data="output_group_name"/>
  <ie:param name="SORTBY" data="attribute"/>
  <ie:param name="SORTED" data="[ASC | DESC]">
</ie:webject>
パラメータ
必須
選択
オプション
DIFFBY
CASE_IGNORE
GROUP_IN
CLASS
GROUP_OUT
COMPARISON
SORTBY
SORTED
CASE_IGNORE
大文字と小文字のフラグとして機能します。TRUE を指定すると、大文字と小文字は無視されます。FALSE を指定すると、大文字と小文字は区別されます。このパラメータのデフォルトは FALSE です。このパラメータはオプションです。
CLASS
GROUP_OUT パラメータによって指定された出力グループに含まれているオブジェクトのタイプを指定します。たとえば、Webject が CLASS=MyClassNameGROUP_OUT=data_1 を指定する場合、出力グループの XML 表現には以下のタグが含まれます。
<MyClassName NAME="data_1" TYPE="Object" STATUS="0">
</MyClassName>
このパラメータのデフォルトは、Unknown-Class-Name です。このパラメータはオプションです。
COMPARISON
2 つのグループの比較方法を説明します。英数字を比較する ALPHA と数字を厳密に比較する NUMERIC があります。このパラメータのデフォルトは ALPHA です。このパラメータはオプションです。
DIFFBY
要素を比較して異なるかどうかを調べるときに使用する属性の名前を識別します。比較されるグループに同名の属性を持つ要素が含まれている場合、1 つの DIFFBY 値を指定できます。それ以外の場合は、2 つの DIFFBY パラメータを指定して、比較するそれぞれのグループから属性名を指定します。
出力グループに配置する属性名は、最初に使用した DIFFBY パラメータの属性名です。このパラメータは必須です。
GROUP_IN
違いを比較する 2 つのグループを指定します。このパラメータは必須です。
GROUP_OUT
1 つの結果グループ比較の名前を指定します。このパラメータは必須です。
SORTBY
並べ替えを実行する属性の名前を指定します。このパラメータを指定していない場合は、結果は並べ替えられません。このパラメータはオプションです。
SORTED
結果グループ内の値を並べ替える方法を決定します。SORTBY パラメータで指定した属性によって、並べ替える値が決定します。ASC を指定して昇順で並べ替えるか、または DESC を指定して降順で並べ替えます。このパラメータのデフォルトは ASC です。このパラメータはオプションです。
以下の例は、Create-Group Webject を使用してから、Diff-Groups Webject を使用してグループ間の NAME 属性の差を特定します。"DIFF‑RESULTS" という名前の出力グループを作成し、ローカル出力グループのコレクションにグループを追加します。
%@page language="java" session="false"%>
<%@taglib uri="http://www.ptc.com/infoengine/taglib/core"
                                               prefix="ie"%>
<!-- Create Group containing the difference between two
                                                  groups -->
<ie:webject name="Create-Group" type="GRP">
  <ie:param name="ELEMENT" data="NAME=Sam
                  Johnson:ADDRESS=1234 Main
                  St.:EMAIL=sjohnson@somewhere.com"/>
  <ie:param name="ELEMENT" data="NAME=Harvy
                  Anderson:ADDRESS=1234 Amber
                  St.:EMAIL=handerson@somewhere.com"/>
  <ie:param name="ELEMENT" data="NAME=James
                  O'Connor:ADDRESS=775 Main St.:EMAIL="/>
  <ie:param name="ELEMENT" data="NAME=Harvey
                  Hampton:ADDRESS=775 Main
                  St.:EMAIL=hhampton@somewhere.com"/>
  <ie:param name="CLASS" data="EmployeeData"/>
  <ie:param name="GROUP_OUT" data="CREATE-RESULTS"/>
</ie:webject>
<ie:webject name="Create-Group" type="GRP">
  <ie:param name="ELEMENT" data="NAME=Sam
             Johnson:POSITION=Engineer:PHONE=555-111-1111"/>
  <ie:param name="ELEMENT" data="NAME=Harvy
           Anderson:POSITION=Marketing:PHONE=555-222-2222"/>
  <ie:param name="ELEMENT" data="NAME=James
                  O'Connor:POSITION=Management"/>
  <ie:param name="CLASS" data="EmployeeHrData"/>
  <ie:param name="GROUP_OUT" data="CREATE-HR-RESULTS"/>
</ie:webject>
<ie:webject name="Diff-Groups" type="GRP">
  <ie:param name="GROUP_IN" data="CREATE-RESULTS"/>
  <ie:param name="GROUP_IN" data="CREATE-HR-RESULTS"/>
  <ie:param name="DIFFBY" data="NAME"/>
  <ie:param name="CLASS" data="NewEmployees"/>
  <ie:param name="GROUP_OUT" data="DIFF-RESULTS"/>
</ie:webject>
この例を実行することにより生成される XML 出力は以下のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<wc:COLLECTION xmlns:wc="http://www.ptc.com/infoengine/1.0">
<NewEmployees NAME="DIFF-RESULTS" TYPE="Object" STATUS="0">
  <wc:INSTANCE>
    <NAME>Harvey Hampton</NAME>
    <ADDRESS>775 Main St.</ADDRESS>
    <EMAIL>hhampton@somewhere.com</EMAIL>
  </wc:INSTANCE>
</NewEmployees>
</wc:COLLECTION>