クエリで選択されるパッケージを対象外にする

<< 目次を表示 >>

ページ位置:  ドキュメントの生成 > DOCX/PDF/RTFドキュメント > ドキュメントの生成手順 > オプション >

クエリで選択されるパッケージを対象外にする

ドキュメントの生成時やテンプレートのオプションでは、独自のSQLクエリを指定したり、独自のスクリプトを指定したりすることができます。この仕組みを利用して、選択したパッケージやその子パッケージの一部を、条件を指定してドキュメントの生成対象外にすることができます。このページでは、その具体的な方法をお知らせします。

 

このような場合に利用できるパラメータとして、次の2つがあります。

 

 

独自のSQLクエリ

例えば、以下のようなSQLクエリを指定することで、一部のパッケージを対象外に指定することができます。以下のように、対象外にするIDをExcludePackageとして渡します。

 

SELECT Package_ID AS ExcludePackage FROM t_package

WHERE Package_ID = #PACKAGEID# and Name = 'Test'

 

あるいは、以下のように指定することもできます。この例は、要素のステレオタイプで判断しています。

 

SELECT t_package.Package_ID AS ExcludePackage

FROM t_package,t_object

WHERE t_package.Package_ID = #PACKAGEID#

AND t_object.Object_ID =#OBJECTID#

AND t_object.Stereotype = 'NoDoc'

 

 

独自のスクリプト

スクリプトで指定する場合には、以下の定義のメソッド(関数)を定義し、その中で決まった形のXMLを返す必要があります。

 

ExcludePackage(#PACKAGEID#)

 

 

戻されるXMLの例は以下の通りです。

 

<?xml version="1.0"?>

<EADATA version="1.0" exporter="Enterprise Architect">

<Dataset_0>

        <Data>

                <Row>

                        <ExcludePackage>

                        89

                        </ExcludePackage>

                </Row>

        </Data>

</Dataset_0>

</EADATA>

 

 

以下の内容は、該当の内容を返すスクリプトの例です

 

!INC Local Scripts.EAConstants-JScript

 

/*

 

* Script Name: RTF Exclude Packages Script Sample

 

*/

 

function ExcludePackage(packageID)

 

{

var xmlDOM = new ActiveXObject("MSXML2.DOMDocument.4.0");

 

xmlDOM.validateOnParse = false;

 

xmlDOM.async = false;

 

var node = xmlDOM.createProcessingInstruction("xml", "version='1.0'

 encoding='ISO-8859-1'");

xmlDOM.appendChild(node);

 

var xmlRoot = xmlDOM.createElement("EADATA");

xmlDOM.appendChild(xmlRoot);

 

var xmlDataSet = xmlDOM.createElement("Dataset_0");

xmlRoot.appendChild(xmlDataSet);

 

var xmlData = xmlDOM.createElement("Data");

xmlDataSet.appendChild(xmlData);

 

var xmlRow = xmlDOM.createElement("Row");

xmlData.appendChild(xmlRow);

 

var package as EA.Package;

package = Repository.GetPackageByID(packageID)

 

 

if(package.StereotypeEx == "NoDoc")

{

var xmlName = xmlDOM.createElement("ExcludePackage");

 

xmlName.text = "" + package.PackageID;

xmlRow.appendChild(xmlName);  

}

 

return xmlDOM.xml;

 

};

 

 

参照: