biz-Streamマニュアル XMLドキュメントレイアウトタグ リファレンス 第6章 データ設定について 6.15 データソースマスタ<bs:datasource-master>

6.15 データソースマスタ<bs:datasource-master>


6.15.1機能説明

RDB,CSV,XML,アプリケーションデータなどのデータマスタをページレイアウトから参照可能にします。データマスタは複数指定することができます。この場合、データソースマスタは指定された複数のデータマスタのデータを行単位にまとめます。



6.15.2属性説明

1bs:datasource-master属性説明

master-nameは他のマスタから参照されるキーとなります。ユニークな名称で設定してください。

属性名指定説明指定内容初期値
master-name必須定義名CDATA
position任意データの読み込み方法(Choice)first:常に先頭から /
inherit:続きから
inherit

2bs:query-master-reference属性説明

master-nameは他のマスタから参照されるキーとなります。ユニークな名称で設定してください。

属性名指定説明指定内容初期値
master-reference必須関連付けを行います。
<bs:query-master>のname属性への参照名
CDATA

3bs:csv-master-reference属性説明

master-nameは他のマスタから参照されるキーとなります。ユニークな名称で設定してください。

属性名指定説明指定内容初期値
master-name必須関連付けを行います。
<bs:csv-master>のname属性への参照名
CDATA

4bs:application-data-master-reference属性説明

master-nameは他のマスタから参照されるキーとなります。ユニークな名称で設定してください。

属性名指定説明指定内容初期値
master-name必須関連付けを行います。
<bs:application-data-master>のname属性への参照名
CDATA

5bs:xml-master-reference属性説明

master-nameは他のマスタから参照されるキーとなります。ユニークな名称で設定してください。

属性名指定説明指定内容初期値
master-name必須参照するXMLマスタ定義xsd:IDREF<bs:xmlmaster>のname


6.15.3記述例

bs:datasource-masterサンプル1

複数のデータマスタをまとめ、1つのデータソースとして扱うサンプルです。

bs:datasource-masterサンプル1
(『<biz-Stream_home>/sample/xml/datasource-master/datasource-masterSample1-doc.xml』)


<?xml version="1.0" encoding="UTF-8"?>
<!-- XML file created by biz-Stream Designer -->
<!-- biz-Stream Copyright BrainSellers.com Corp. -->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:pdf="http://www.brainsellers.com/schema" xmlns:svg="http://www.brainsellers.com/schema" xmlns:bs="http://www.brainsellers.com/schema" xmlns:form="http://www.brainsellers.com/schema" version="5.0.0">
    <bs:datasource-master-set>
        <bs:datasource-master master-name="DataSource" position="inherit">
            <bs:query-master-reference master-reference="SQL-DB2"/>

            <bs:query-master-reference master-reference="SQL-Oracle"/>

        </bs:datasource-master>
        <bs:database-resource-master master-name="RDB-DB2" driver="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://brain_db:50000/SAMPLE" userid="administrator" password="ZGIyYWRtaW4= "/>

        <bs:database-resource-master master-name="RDB-Oracle" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@brain_db:1521:XE" userid="scott" password="dGlnZXI="/>

        <bs:query-master master-name="SQL-DB2">
            <bs:query-statement master-reference="RDB-DB2">select STAFF.ID,STAFF.NAME from STAFF where (STAFF.ID < 100) </bs:query-statement>
            <bs:data-type column-name="ID" type="char"/>
            <bs:data-type column-name="NAME" type="varchar"/>
            <!-- TableName = STAFF	 AliasTableName = STAFF	 FieldName = ID	 TOTAL = 	 SORT = 	 ExtractionCnditions = 	 orStr = < 100	 type = char
 TableName = STAFF	 AliasTableName = STAFF	 FieldName = NAME	 TOTAL = 	 SORT = 	 ExtractionCnditions = 	 orStr = 	 type = varchar
-->

        </bs:query-master>
        <bs:query-master master-name="SQL-Oracle">
            <bs:query-statement master-reference="RDB-Oracle">select EMP.EMPNO,EMP.ENAME from EMP where (EMP.EMPNO >= 7800) </bs:query-statement>
            <bs:data-type column-name="EMPNO" type="integer"/>
            <bs:data-type column-name="ENAME" type="varchar"/>
            <!-- TableName = EMP	 AliasTableName = EMP	 FieldName = EMPNO	 TOTAL = 	 SORT = 	 ExtractionCnditions = 	 orStr = >= 7800	 type = decimal
 TableName = EMP	 AliasTableName = EMP	 FieldName = ENAME	 TOTAL = 	 SORT = 	 ExtractionCnditions = 	 orStr = 	 type = varchar
-->

        </bs:query-master>
    </bs:datasource-master-set>
    <fo:layout-master-set>
        <fo:simple-page-master master-name="A4" page-height="297mm" page-width="210mm">
            <fo:region-body/>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="A4" bs:local-page-control="none">
        <fo:flow flow-name="xsl-region-body">
            <bs:block-container>
                <bs:include href="${base-dir}/sample/xml/datasource-master/datasource-masterSample1-page.xml"/>

            </bs:block-container>
        </fo:flow>
    </fo:page-sequence>
</fo:root>

生成されるPDF(『<biz-Stream_home>/sample/xml/datasource-master/datasource-masterSample1.pdf』)


06_14_bs-datasource-master_01.png

DB2とOracleのデータマスタをまとめて1つのデータソースとして扱えます。
データ件数が異なる場合、データ件数が少ないデータマスタのカラムは空白で表示されます。



bs:datasource-masterサンプル2

<bs:datasource-master>のposition属性の違いについて説明します。
position属性にはfirstとinheritの2つ値があります。
firstはデータソースからデータを取得するとき、常に先頭から取得できます。
ただし、自動改ページ機能は機能しません。
ヘッダー行のように全ての画面で同じ内容を表示するようなケースに有効です。
inheritはデータソースの現在のレコード位置から取得できます。


bs:datasource-masterサンプル2<position="inherit"の例>
(『<biz-Stream_home>/sample/xml/datasource-master/datasource-masterSample2-doc.xml』)


<?xml version="1.0" encoding="UTF-8"?>
<!-- XML file created by biz-Stream Designer -->
<!-- biz-Stream Copyright BrainSellers.com Corp. -->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:pdf="http://www.brainsellers.com/schema" xmlns:svg="http://www.brainsellers.com/schema" xmlns:bs="http://www.brainsellers.com/schema" xmlns:form="http://www.brainsellers.com/schema" version="5.0.0">
    <bs:datasource-master-set>
        <bs:datasource-master master-name="STAFF-DATA" position="inherit">
            <bs:query-master-reference master-reference="STAFF"/>

        </bs:datasource-master>
        <bs:query-master master-name="STAFF">
            <bs:query-statement master-reference="DB2">select STAFF.NAME,STAFF.YEARS,STAFF.SALARY from STAFF where (STAFF.YEARS = 7) </bs:query-statement>
            <bs:data-type column-name="NAME" type="varchar"/>
            <bs:data-type column-name="YEARS" type="integer"/>
            <bs:data-type column-name="SALARY" type="decimal"/>
            <!-- TableName = STAFF	 AliasTableName = STAFF	 FieldName = NAME	 TOTAL = 	 SORT = 	 ExtractionCnditions = 	 orStr = 	 type = varchar
 TableName = STAFF	 AliasTableName = STAFF	 FieldName = YEARS	 TOTAL = 	 SORT = 	 ExtractionCnditions = null	 orStr = null	 type = char
 TableName = STAFF	 AliasTableName = STAFF	 FieldName = SALARY	 TOTAL = 	 SORT = 	 ExtractionCnditions = 	 orStr = 	 type = decimal
-->

        </bs:query-master>
        <bs:database-resource-master master-name="DB2" driver="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://brain_db:50000/SAMPLE" userid="administrator" password="ZGIyYWRtaW4="/>

    </bs:datasource-master-set>
    <fo:layout-master-set>
        <fo:simple-page-master master-name="A4H" page-height="210mm" page-width="297mm">
            <fo:region-body/>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="A4H" bs:local-page-control="none">
        <fo:flow flow-name="xsl-region-body">
            <bs:block-container>
                <bs:include href="${base-dir}/sample/xml/datasource-master/datasource-masterSample2-page.xml"/>

            </bs:block-container>
        </fo:flow>
    </fo:page-sequence>
</fo:root>

生成されるPDF(『<biz-Stream_home>/sample/xml/datasource-master/datasource-masterSample2.pdf』)


3つの表に同じデータソースを関連付けしています。
1番左の表は先頭から5件を使用して表を表示しています。
左から2番目の表では、続きの6件目から使用しています。
1番右の表はすでにデータがないので表示されません。

06_14_bs-datasource-master_02.png


bs:datasource-masterサンプル3

bs:datasource-masterサンプル3<position="first"の例>
(『<biz-Stream_home>/sample/xml/datasource-master/datasource-masterSample3-doc.xml』)

<?xml version="1.0" encoding="UTF-8"?>
<!-- XML file created by biz-Stream Designer -->
<!-- biz-Stream Copyright BrainSellers.com Corp. -->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:pdf="http://www.brainsellers.com/schema" xmlns:svg="http://www.brainsellers.com/schema" xmlns:bs="http://www.brainsellers.com/schema" xmlns:form="http://www.brainsellers.com/schema" version="5.0.0">
    <bs:datasource-master-set>
        <bs:datasource-master master-name="STAFF-DATA" position="first">
            <bs:query-master-reference master-reference="STAFF"/>

        </bs:datasource-master>
        <bs:query-master master-name="STAFF">
            <bs:query-statement master-reference="DB2">select STAFF.NAME,STAFF.YEARS,STAFF.SALARY from STAFF where (STAFF.YEARS = 7) </bs:query-statement>
            <bs:data-type column-name="NAME" type="varchar"/>
            <bs:data-type column-name="YEARS" type="integer"/>
            <bs:data-type column-name="SALARY" type="decimal"/>
            <!-- TableName = STAFF	 AliasTableName = STAFF	 FieldName = NAME	 TOTAL = 	 SORT = 	 ExtractionCnditions = 	 orStr = 	 type = varchar
 TableName = STAFF	 AliasTableName = STAFF	 FieldName = YEARS	 TOTAL = 	 SORT = 	 ExtractionCnditions = null	 orStr = null	 type = char
 TableName = STAFF	 AliasTableName = STAFF	 FieldName = SALARY	 TOTAL = 	 SORT = 	 ExtractionCnditions = 	 orStr = 	 type = decimal
-->

        </bs:query-master>
        <bs:database-resource-master master-name="DB2" driver="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://brain_db:50000/SAMPLE" userid="Administrator" password="ZGIyYWRtaW4="/>

    </bs:datasource-master-set>
    <fo:layout-master-set>
        <fo:simple-page-master master-name="A4H" page-height="210mm" page-width="297mm">
            <fo:region-body/>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="A4H" name="bizsheet" bs:local-page-control="none">
        <fo:flow flow-name="xsl-region-body">
            <bs:block-container>
                <bs:include href="${base-dir}sample\xml\datasource-master\datasource-masterSample3-page.xml"/>

            </bs:block-container>
        </fo:flow>
    </fo:page-sequence>
</fo:root>

生成されるPDF(『<biz-Stream_home>/sample/xml/datasource-master/datasource-masterSample3.pdf』)


3つの表に同じデータソースを関連付けしています。
常に先頭からデータを取得するため全ての表が同じに表示されています。
ヘッダー行のように全ての画面で同じ内容を表示するようなケースに有効です。

06_14_bs-datasource-master_03.png