2011/03/31

チャート: タイトルの設定 (Chart titles)

チャート内のタイトルの設定についてまとめます。
GUIからも一定の設定が可能ですが、XMLを直接操作することで、より細かい設定が可能です。

Title、Subtitle、および Footnote には以下の属性が定義されています。
  • text
  • visible (true | false)
  • fontSizeAbsolute (true | false)
  • horizontalAlignment (LEFT | CENTER | RIGHT)
  • verticalAlignment (TOP | CENTER | BOTTOM)
  • textRotation (TR_HORIZ | TR_HORIZ_ROTATE_90 | TR_HORIZ_ROTATE_270 )

また、軸タイトルを設定する O1Title、X1Title、Y1Title、Y2Title、ZTitle には上記の属性に加え、以下の属性が定義されています。
  • wordWrapEnabled (true | false)

以下にサンプルコードと実行結果を示します。
<Title    visible="true" text="(1) Title" />
<Subtitle visible="true" text="(2) Subtitle" />
<Footnote visible="true" text="(3) Footnote" />
<O1Title  visible="true" text="(4) O1 Axis Title" />
<Y1Title  visible="true" text="(5) Y1 Axis Title" />


文字スタイルの指定は GraphFont にて行います。以下の例では Title に文字スタイルの設定を行います。他のタイトル要素も同様の書式で設定できます。
<Title text="(1) Title" visible="true">
  <GraphFont size="14" bold="true" fontColor="#FF0000"/>
</Title>




[ Summary ]
BI Publisher provides Title, Subtitle and Footnote elements. The attributes are listed above.
In addition, O1Title, X1Title, Y1Title, Y2Title, and ZTitle are defined for the axises. The axis titles support wordWrapEnabled additionally.  The result of the source code below is shown in the first figure.

<Title    visible="true" text="(1) Title" />
<Subtitle visible="true" text="(2) Subtitle" />
<Footnote visible="true" text="(3) Footnote" />
<O1Title  visible="true" text="(4) O1 Axis Title" />
<Y1Title  visible="true" text="(5) Y1 Axis Title" />




You can specify font and style with GraphFont.  The result of the following code is shown in the second figure.

<Title text="(1) Title" visible="true">
  <GraphFont size="14" bold="true" fontColor="#FF0000"/>
</Title>



2011/03/30

11g でのフォント・マッピング (Font mapping on BI Publisher 11g)

BI Publisher 11g では、フォント・マッピングに使用するフォントファイルの配置場所が変更されています。
標準構成では ORACLE_HOME/common/fonts がデフォルトの配置場所となります。

配置場所に関しては以下のマニュアルを参照して下さい。
Oracle Fusion Middleware Report Designer's Guide for Oracle Business Intelligence Publisher Release 11g (11.1.1)


マニュアルによれば、フォントの配置場所は XDO_FONT_DIR で定義されます。ためしに、手元環境の setDomainEnv.cmd (C:\mwhome\user_projects\domains\bifoundation_domain\bin\setDomainEnv.cmd) の設定箇所を以下の様に変更すると、フォント・マッピング設定画面のコンボボックスに、Windowsにインストールされているフォントがそのまま現れます。
(※あくまでもサンプルとしての設定です)
set EXTRA_JAVA_PROPERTIES=-Dxdo.server.config.dir=c:\mwhome\user_projects\domains\bifoundation_domain\config\bipublisher -DXDO_FONT_DIR=C:\WINDOWS\Fonts %EXTRA_JAVA_PROPERTIES%




[ Summary ]
The font location (for Font mapping) has been changed in BI Publisher 11g. It is ORACLE_HOME/common/fonts.
Manual:
Oracle Fusion Middleware Report Designer's Guide for Oracle Business Intelligence Publisher Release 11g (11.1.1)


The font location is specified by XDO_FONT_DIR variable. The example above shows its setting and the result.

2011/03/29

チャート: X軸の設定 (Chart X axis)

今回はX軸の設定について、主要な要件の実装方法をまとめます。

BI Publisher(およびOracle Reports等)では、いわゆるX軸は O軸(Ordinal axis: O1Axis)と表します。
X1Axisはバブルチャート、散布図および鶏頭図を設定する際に使用します。

O1Axisに定義されている項目は多くありません。
  • lineWidth
  • lineColor
  • visible (true | false)

また、O軸のラベルの設定に関する定義として、O1TickLabelが用意されています。以下の項目が定義されています。
  • tickLabelSkipMode (TLS_NOSKIP | TLS_AUTOMATIC | TLS_MANUAL)
  • tickLabelSkipCount
  • tickLabelSkipFirst
  • textFittingAutomatic (true|false)
  • fontSizeAbsolute (true | false)
  • horizontalAlignment (LEFT | CENTER | RIGHT)
  • textRotation (TR_HORIZ | TR_HORIZ_ROTATE_90 | TR_HORIZ_ROTATE_270)
  • tickLabelStaggered (true|false)
  • tickLabelWrapped (true|false)
  • wordWrapEnabled (true|false)
  • automaticRotation (AR_NO_ROTATE | AR_HORIZ_ROTATE_90 | AR_HORIZ_ROTATE_270)
これらの他、ViewFormatも使用可能です。ViewFormatに関してはY軸と同等の設定が可能ですので、「チャート: Y軸の書式設定」を参照して下さい。

主な項目について、以下にサンプルで説明します。


【ラベルの互い違い表示の制御】
標準構成の自動レイアウトでは、O軸(X軸)のラベルが以下のように互い違いに表示されることがあります。



この表示を明示的に停止するには tickLabelStaggered を false に設定します。また、tickLabel の設定はチャート全体の autoLayout 属性の影響下にあるため、併せて Graph の autoLayout を"AL_NEVER"に設定します。設定例は以下の通りです。
<Graph seriesEffect="SE_AUTO_GRADIENT" autoLayout="AL_NEVER">
<O1TickLabel tickLabelStaggered="false" />




【O軸(X軸)のラベルの間隔】
前述の設定だけでは、ラベルが重なって表示されます。ラベルの間隔は以下のように調整できます。tickLabelSkipFirst で表示の開始位置を指定し、tickLabelSkipCount でラベルを表示する要素の間隔を指定します。
<Graph seriesEffect="SE_AUTO_GRADIENT" autoLayout="AL_NEVER">
<O1TickLabel tickLabelSkipMode="TLS_MANUAL" tickLabelSkipCount="2" tickLabelSkipFirst="0" />




【O軸(X軸)のラベルの向き】
ラベルの向きを縦向きに変える例は以下の通りです。なお、斜め45度などは定義されていません。
<Graph seriesEffect="SE_AUTO_GRADIENT" autoLayout="AL_NEVER">
<O1TickLabel tickLabelStaggered="false" textRotation="TR_HORIZ_ROTATE_270" />





[ Summary ]
* In chart XML, X axis is written as "O Axis (Ordinary Axis)".


AutoLayout often put O axis labels staggered. To prevent it, set tickLabelStaggered "false". By default, tickLabelStaggered is suppressed by autoLayout attribute of Graph. You need to set these attributes as follow:

<Graph seriesEffect="SE_AUTO_GRADIENT" autoLayout="AL_NEVER">
<O1TickLabel tickLabelStaggered="false" />


To configure label step, set tickLabelSkipCount and tickLabelSkipFirst.

<Graph seriesEffect="SE_AUTO_GRADIENT" autoLayout="AL_NEVER">
<O1TickLabel tickLabelSkipMode="TLS_MANUAL" tickLabelSkipCount="2" tickLabelSkipFirst="0" />


To rotate O axis labels, set textRotation "TR_HORIZ_ROTATE_90" or "TR_HORIZ_ROTATE_270".

<Graph seriesEffect="SE_AUTO_GRADIENT" autoLayout="AL_NEVER">
<O1TickLabel tickLabelStaggered="false" textRotation="TR_HORIZ_ROTATE_270" />


O axis supports ViewFormat, same as Y axis. Refer Format chart Y axis labels for more detail.

2011/03/25

チャート: Y軸の書式設定 (Format chart Y axis labels)

今回は、Y軸の書式設定について、主要な要件の実装方法をまとめます。

書式を設定する ViewFormat には以下の項目が定義されています。
  • numberType (NUMTYPE_GENERAL | NUMTYPE_CURRENCY | NUMTYPE_PERCENT)
  • thousandSeparator
  • decimalSeparator
  • currencySymbol
  • leadingZero (true | false)
  • decimalDigit
  • posNumFmt (POS_NUMFMT_NUM | POS_NUMFMT_POS_NUM | POS_NUMFMT_NUM_POS )
  • negNumFmt (NEG_NUMFMT_OP_NUM_CP | NEG_NUMFMT_NEG_NUM | NEG_NUMFMT_NUM_NEG)
  • posCurFmt (POS_CURFMT_CUR_NUM | POS_CURFMT_NUM_CUR | POS_CURFMT_CUR_SPAC_NUM |POS_CURFMT_NUM_SPAC_CUR | POS_CURFMT_POS_CUR_NUM | POS_CURFMT_CUR_NUM_POS | POS_CURFMT_POS_NUM_CUR | POS_CURFMT_NUM_POS_CUR | POS_CURFMT_NUM_CUR_POS | POS_CURFMT_POS_NUM_SPAC_CUR | POS_CURFMT_POS_CUR_SPAC_NUM | POS_CURFMT_NUM_SPAC_CUR_POS )
  • negCurFmt (NEG_CURFMT_OP_CUR_NUM_CP | NEG_CURFMT_NEG_CUR_NUM | NEG_CURFMT_CUR_NEG_NUM | NEG_CURFMT_CUR_NUM_NEG | NEG_CURFMT_OP_NUM_CUR_CP | NEG_CURFMT_NEG_NUM_CUR | NEG_CURFMT_NUM_NEG_CUR | NEG_CURFMT_NUM_CUR_NEG | NEG_CURFMT_NEG_NUM_SPAC_CUR | NEG_CURFMT_NEG_CUR_SPAC_NUM | NEG_CURFMT_NUM_SPAC_CUR_NEG )
  • scaleFactor (SCALEFACTOR_NONE | SCALEFACTOR_THOUSANDS | SCALEFACTOR_MILLIONS | SCALEFACTOR_BILLIONS | SCALEFACTOR_TRILLIONS | SCALEFACTOR_QUADRILLIONS )
  • scaleDownThousands
  • scaleDownMillions
  • scaleDownBillions
  • scaleDownTrillions
  • scaleDownQuadrillions
  • javaDateFormat
  • oracleDateFormat
  • numberTypeUsed (true | false)
  • thousandSeparatorUsed (true | false)
  • decimalSeparatorUsed (true | false)
  • currencySymbolUsed (true | false)
  • leadingZeroUsed (true | false)
  • decimalDigitUsed (true | false)
  • posNumFmtUsed (true | false)
  • negNumFmtUsed (true | false)
  • posCurFmtUsed (true | false)
  • negCurFmtUsed (true | false)
  • scaleFactorUsed (true | false)
  • scaleDownThousandsUsed (true | false)
  • scaleDownMillionsUsed (true | false)
  • scaleDownBillionsUsed (true | false)
  • scaleDownTrillionsUsed (true | false)
  • scaleDownQuadrillionsUsed (true | false)
  • javaDateFormatUsed (true | false)
  • oracleDateFormatUsed (true | false)


主な項目について、以下にサンプルで説明します。

【単位設定】
標準構成では、Y軸の単位設定(1K, 2K 等)が自動で行われます。単位の自動設定を無効にするには、scaleFactorUsed および scaleFactor を設定します。
<Y1Axis>
<ViewFormat scaleFactorUsed="true" scaleFactor="SCALEFACTOR_NONE" />
</Y1Axis>





また、単位を明示的に指定する場合には scaleFactorUsed に加え、scaleDown*Used および scaleDown* を設定します。単位に定義されている定数は前述の一覧を参照して下さい。なお、単位をあらわす文字列には日本語も使用できます。
<Y1Axis>
<ViewFormat scaleFactorUsed="true" scaleFactor="SCALEFACTOR_THOUSANDS" scaleDownThousandsUsed="true" scaleDownThousands="千" />
</Y1Axis>




左下の「0千」を表示したくないという場合には、以下のように記載することで表示を消すことができます。
※Y1Axisの設定については「チャート: Y軸の設定」を参照して下さい。
<Y1Axis axisMinLabelVisible="false">
<ViewFormat scaleFactorUsed="true" scaleFactor="SCALEFACTOR_THOUSANDS" scaleDownThousandsUsed="true" scaleDownThousands="千" />
</Y1Axis>





【小数点以下の表示】
小数の表示書式は以下のように定義します。
<Y1Axis>
<ViewFormat decimalDigitUsed="true" decimalDigit="3" />
</Y1Axis>





[ Summary ]
Set ViewFormat to display dates and numbers using a specified format.
ViewFormat has many attributes. Here's some examples.


Scale factor:
By default, BI Publisher applies scale factor automatically. To prevent it, set "SCALEFACTOR_NONE" as follows:
<Y1Axis>
<ViewFormat scaleFactorUsed="true" scaleFactor="SCALEFACTOR_NONE" />
</Y1Axis>


To specify the scale factor, set scaleDown*. See the scale factor definitions listed above.

<Y1Axis>
<ViewFormat scaleFactorUsed="true" scaleFactor="SCALEFACTOR_THOUSANDS" scaleDownThousandsUsed="true" scaleDownThousands="Kilo" />
</Y1Axis>

If you do not want the first Y label ("0Kilo"), set axisMinLabelVisible attribute on Y1Axis.
* Refer Chart Y axis for details of Y1Axis attributes.
<Y1Axis axisMinLabelVisible="false">
<ViewFormat scaleFactorUsed="true" scaleFactor="SCALEFACTOR_THOUSANDS" scaleDownThousandsUsed="true" scaleDownThousands="Kilo" />
</Y1Axis>




Number of decimal places to display:
Set decimalDigit.
<Y1Axis>
<ViewFormat decimalDigitUsed="true" decimalDigit="3" />
</Y1Axis>

2011/03/24

チャート: 2軸のY  (Chart dual-Y axis / multiple Y axis)

BI Publisher 10gでは2軸のYをGUIから設定できません。
10gにおいて2軸のYを設定するには、GraphおよびSeriesItemsを手動で設定します。

10gにおける設定サンプルは以下の通りです。
chart:
<Graph markerDisplayed="true" graphicAntialiasing="true" graphType="BAR_VERT_CLUST2Y">
<LegendArea visible="false" />
<SeriesItems>
<Series id="0" markerType="MT_BAR"/>
<Series id="1" markerType="MT_MARKER" assignedToY2="true" />
</SeriesItems>
<LocalGridData ...


graphTypeには以下の定数(グラフ種類)が定義されています。これらの内、「2Y」のつくものが2軸のYをサポートしています。
graphType (
  AREA_HORIZ_ABS | AREA_HORIZ_ABS_SPLIT2Y | AREA_HORIZ_PERCENT |
  AREA_HORIZ_STACK | AREA_HORIZ_STACK_SPLIT2Y | AREA_VERT_ABS |
  AREA_VERT_ABS_SPLIT2Y | AREA_VERT_PERCENT | AREA_VERT_STACK |
  AREA_VERT_STACK_SPLIT2Y |
  BAR_HORIZ_CLUST | BAR_HORIZ_CLUST_2Y | BAR_HORIZ_CLUST_SPLIT2Y |
  BAR_HORIZ_PERCENT | BAR_HORIZ_STACK | BAR_HORIZ_STACK_2Y |
  BAR_HORIZ_STACK_SPLIT2Y | BAR_VERT_CLUST | BAR_VERT_CLUST_SPLIT2Y |
  BAR_VERT_CLUST2Y | BAR_VERT_PERCENT | BAR_VERT_STACK |
  BAR_VERT_STACK_SPLIT2Y | BAR_VERT_STACK2Y |
  BUBBLE | BUBBLE_2Y | BUBBLE_LABELS | BUBBLE_LABELS_2Y |
  HIST_HORIZ | HIST_VERT |
  LINE_HORIZ_ABS | LINE_HORIZ_ABS_2Y | LINE_HORIZ_ABS_SPLIT2Y |
  LINE_HORIZ_PERCENT | LINE_HORIZ_STACK | LINE_HORIZ_STACK_2Y |
  LINE_HORIZ_STACK_SPLIT2Y | LINE_VERT_ABS | LINE_VERT_ABS_2Y|
  LINE_VERT_ABS_SPLIT2Y | LINE_VERT_PERCENT | LINE_VERT_STACK |
  LINE_VERT_STACK_2Y | LINE_VERT_STACK_SPLIT2Y |
  PARETO |
  PIE | PIE_BAR | PIE_MULTI | PIE_MULTI_PROP |
  POLAR | POLAR_2Y |
  RADAR_AREA | RADAR_LINE | RADAR_LINE_2Y |
  RING | RING_BAR | RING_MULTI | RING_MULTI_PROP |
  SCATTER | SCATTER_2Y |
  SCATTER_LABELS | SCATTER_LABELS_2Y |
  SPECTRAL | STOCK_2Y | STOCK_CANDLE | STOCK_CANDLE_VOLUME |
  STOCK_HILO | STOCK_HILO_2Y | STOCK_HILO_CLOSE |
  STOCK_HILO_CLOSE2Y | STOCK_HILO_CLOSE_SPLIT2Y |
  STOCK_HILO_CLOSE_VOLUME | STOCK_HILO_SPLIT2Y | STOCK_HILO_VOLUME |
  STOCK_OPEN_HILO_CLOSE | STOCK_OHLC_CANDLE | STOCK_OHLC_CANDLE_VOLUME |
  STOCK_SPLIT_2Y | STOCK_VOLUME |
  THREED_AREA_GROUP | THREED_AREA_SERIES | THREED_BAR | THREED_CUBE |
  THREED_DIAMOND | THREED_OCTAGON | THREED_PYRAMID | THREED_RIBBON_GROUP |
  THREED_RIBBON_SERIES | THREED_START | THREED_SURFACE |
  THREED_SURFACE_HONEYCOMB | THREED_SURFACE_SIDES | THREED_END )


なお、Y2Axisに設定可能なプロパティはY1Axisと同等です。
11g ではTemplate BuilderでGUIから設定できるようになっています。


[ Summary ]
BI Publisher 10g does not provide dual-Y axis (multiple Y axis) settings with its GUI.
The example above shows how to display dual-Y axis. You have to set graphType and SeriesItems.  Choose the graphType named "*2Y".  For SeriesItems, put "assignedToY2="true" on the data item you want.
11g Template Builder provides GUI for  dual-Y axis setting.

2011/03/23

チャート: Y軸の設定 (Chart Y axis)

BI Publisherのチャートにはさまざまなプロパティが定義されていますが、これらに関する情報はあまり多くはありません。また、RTFテンプレートを作成する際には、GUIで設定できるプロパティは非常に限られます(これはBI Publisher 11g においてもほとんど改善されていません)。
これから数回にわたり、チャートの設定についてまとめます。
設定項目については、US-OTNに投稿されているGraph.dtdの内容を参考にします。
参考URL:
http://forums.oracle.com/forums/thread.jspa?threadID=2172523&tstart=90


今回は、Y軸設定についてまとめます。Y軸(Y1Axis)には以下の属性が定義されています。
  • lineWidth
  • lineColor
  • axisMinAutoScaled (true | false)
  • axisMinValue
  • axisMaxAutoScaled (true | false)
  • axisMaxValue
  • axisMaxLabelVisible (true | false)
  • axisMinLabelVisible (true | false)
  • majorTickStepAutomatic (true | false)
  • majorTickStep
  • minAutoMajorTickStep
  • scaledLogarithmic (true | false)
  • logarithmicBase
  • axisAutoScaledFromZero (true | false)
  • ascending (true | false)
  • axisLocation (AL_LEFT | AL_RIGHT | AL_BOTH)
  • visible (true | false)

主な項目について、以下にサンプルで説明します。


【Y軸ラベルの間隔】
以下の例ではY軸の基点をゼロとせず、また、間隔を500に設定します。なお、BI PublisherがmajorTickStepに設定する値が小さすぎると判断した場合、設定が無視されるようです。また、ゼロまたはマイナス値を指定した場合も無視されます。
<Y1Axis axisAutoScaledFromZero="false" majorTickStepAutomatic="false" majorTickStep="500"/>





【Y軸の色、ラベル間隔の自動設定】
以下の例ではY軸の色を白に設定し、ラベルの間隔の自動計算最小値を2500に設定します。
<Y1Axis lineColor="#ffffff" minAutoMajorTickStep="2500" />







【最小値・最大値】
以下の例ではY軸の最大値を、SAL列の値から動的に設定し、2000単位で最大値を切り上げて設定します。

(フィールドにて設定 / set on field)
<xsl:variable name="valTemp"><?xdoxslt:maximum(SAL) div 2000?></xsl:variable>
<xsl:variable name="valMaxY"><xsl:value-of select="(floor($valTemp)+1)*2000" /></xsl:variable>


(チャートにて設定 / set on chart)
<Y1Axis axisMaxAutoScaled="false" axisMaxValue="{$valMaxY}" />





次回は2軸のY座標についてまとめます。


[ Summary ]
BI Publisher provides many chart properties.  Previously, the properties (attributes) were listed in Graph.dtd.  It is posted in OTN.  Its version is old though, I use it so far.



The Y axis properties are listed below.
  • lineWidth
  • lineColor
  • axisMinAutoScaled (true | false)
  • axisMinValue CDATA #IMPLIED
  • axisMaxAutoScaled (true | false)
  • axisMaxValue
  • axisMaxLabelVisible (true | false)
  • axisMinLabelVisible (true | false)
  • majorTickStepAutomatic (true | false)
  • majorTickStep
  • minAutoMajorTickStep
  • scaledLogarithmic (true | false)
  • logarithmicBase
  • axisAutoScaledFromZero (true | false)
  • ascending (true | false)
  • axisLocation (AL_LEFT | AL_RIGHT | AL_BOTH)
  • visible (true | false)

You can set runtime variables for these properties.  See the third example.  The variable valMaxY defined in a field is set for axisMaxValue.

2011/03/10

QRコード (QR code)

QRコードの差込表示を検証します。
BI Publisher本体にはQRコードを生成する機能が実装されていません。今回のサンプルでは、QRコードの生成にはGoogle Chart APIを使用します。なお、画像の挿入については「画像の表示(URLによる画像の動的切替)」を併せて参照してください。
※帳票出力のプロダクトとして仮にも「Publisher」の名を冠するのであれば、QRコード程度の機能実装はしておいてほしいものです。


テンプレートに200px × 200px の画像を用意し、Web欄に以下のソースを記載します。
url:{'http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http://yahoo.co.jp/'}

テンプレート上の画像はレイアウトに合わせて適宜調整します。実行結果は以下の通りです。





値を動的に埋め込む場合、以下の書式では実行時に列(QRY_TEXT)の値を受け渡すことができませんでした。
url:{concat('http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http://www.bing.com/search?q=%22', QRY_TEXT, '%22')}


試行錯誤の末、一度列の値を変数に代入することで回避できました。フィールドに以下のコードを記述し、列QRY_TEXTの値を変数valTextに代入します。
<xsl:variable name="valText"><?QRY_TEXT?></xsl:variable>

画像のWebタブにて、以下のように設定します。
url:{concat('http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http://www.bing.com/search?q=%22', $valText, '%22')}



なお、URLを生成する際は、URLエンコードを終えておく必要があります。


【補足】
手元の環境でQRコードをPDFに出力し、印刷を行った限りでは、出力精度に問題は認められませんでした。しかしながら、商用サービスでの運用に際しては、事前に出力結果の検査を行うことをお勧めします。


[ Summary]
The example above gets QR code from Google API.  Put a dummy image (200px * 200px) and write the code on its Web tab.  i.e. BI Publisher handles QR code as image.
url:{'http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http://yahoo.co.jp/'}

The code below doesn't work.
url:{concat('http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http://www.bing.com/search?q=%22', QRY_TEXT, '%22')}

Workaround:
1. put your value into a variable.
<xsl:variable name="valText"><?QRY_TEXT?></xsl:variable>

2. On the Web tab of dummy image, put the code below.  The variable valText is set instead of data element QRY_TEXT.
url:{concat('http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http://www.bing.com/search?q=%22', $valText, '%22')}

2011/03/09

ハイパーリンク (Hyperlink)

出力結果にハイパーリンクを埋め込むには、MS-Wordのダイアログから埋め込む方法と、フィールドにコードを記述する方法の2種類があります。


【MS-Wordのダイアログを利用する方法】
MS-Wordのメニューから新規にハイパーリンクを挿入します。


データ項目の指定方法が、表示文字列とアドレスの設定で異なります。
表示文字列: <?EMPNO?>
アドレス: http://empsrv.company.com/emp.jsp?empnumber={EMPNO}
※もちろん、固定文字列でもOKです。


【フィールドにする方法】
フィールドのプロパティに以下のコードを記述します。


<fo:basic-link>
<xsl:attribute name="external-destination">http://empsrv.company.com/emp.jsp?empnumber=<xsl:value-of select="EMPNO"/>
</xsl:attribute>
<xsl:value-of select="EMPNO"/>
</fo:basic-link>



[ Summary ]
There are two ways to embed hyperlinks in RTF template.  The examples above results in same output.  You can set URL text on runtime.
1) Use MS-Word dialog (the first figure)
2) Write basic-link tags in field property (the second figure)

2011/03/08

日付の書式とタイムゾーン (Timezone)

BI Publisher で日付型を出力する際には、タイムゾーンの注意が必要です。
今回は時刻部分をtruncした日付をテンプレートで書式設定すると、日付に誤差が生じる例を説明します。

データソースに以下のSQLを設定します。
select sysdate as col_sysdate,
       trunc(sysdate) as col_sysdate_trunc
 from dual


このデータソースから得られる実データは以下の様になります。
<DATA_DS>
<G_1>
  <COL_SYSDATE>2011-03-07T21:31:59.000+09:00</COL_SYSDATE> 
  <COL_SYSDATE_TRUNC>2011-03-07T00:00:00.000+09:00</COL_SYSDATE_TRUNC>
</G_1>
</DATA_DS>


これらのデータをテンプレート上でyyyy/MM/ddに書式設定してプレビュー表示します。



col_sysdate_truncの値が1日ずれます。



これはレポートタイムゾーンがデフォルトでUTCと認識されるために発生します。表示形式をyyyy/MM/dd  hh:mm:ssに設定した実行結果を以下に示します。実際には、タイムゾーンの時差、9時間前の値として認識されていることが確認できます。



参考URLでは「RTFテンプレートでの日付書式設定は使用しないこと」という身も蓋もない回避策と、format-dateにてタイムゾーンを設定する方法が紹介されています。format-dateの書式は以下の通りです。なお、format-dateにおけるタイムゾーンはJavaタイムゾーン書式ですが、日付書式はオラクル書式ですので注意してください。
<?format-date:HIREDATE;'yyyy-mm-dd';'Asia/Tokyo'?>

参考URL:
http://blogs.oracle.com/xmlpublisher/2009/06/how_to_keep_your_dates_from_go.html



[ Summary ]
Date value in BI Publisher is Timezone sensitive.  With format-date, you can settle the date value in certain timezone.  Note that while the timezone parameter is based on Java formula, date format parameter is based on Oracle formula.
For more details, refer the URL above.

2011/03/07

罫線でrowspanを表現する (Drawing rowspan)

rowspanを簡易的に表現する方法を説明します。要件となる出力結果は以下の通りです。deptnoをグループと見なし、罫線の表示を切り替えます。



連続するdeptnoの値の出力を抑制する方法については、「連続する値の表示を抑制する方法」を参照して下さい。

設定は罫線の正業を行うセル(deptno)にて行います。以下の図の[F]が該当します。


[F]には以下の2つの設定を記述します。
1) 次の行のdeptnoが同じであれば、border-bottomを白で描画
2) 前の行のdeptnoが同じであれば、border-topを白で描画

<?if:following-sibling::ROW[1]/DEPTNO=DEPTNO?><?attribute@incontext:border-bottom;'0.5px solid #ffffff'?><?end if?>
<?if:preceding-sibling::ROW[1]/DEPTNO=DEPTNO?><?attribute@incontext:border-top;'0.5px solid #ffffff'?><?end if?>


レンダリング時、隣接する行で罫線が上書きされるため、これら2つの設定はどちらか片方ではなく、両方記述する必要があります。
罫線の設定書式はxsl-foの書式に従い、「太さ スタイル 色」の順に設定を記載します。

border-leftまたはborder-rightに同様の設定を行うことで、colspanの表現も可能です。



[ Summary ]
The example above draws rowspan look by controling border color.  [F] in the second figure contains two settings.  They are for border-bottom and border-top.  Because top / bottom borders are overwritten by the neighboring rows, you need to write these two settings, not one of them only.
The formula of border setting is 'weight style color', separated by space.


Refer the past entry "Suppress duplicated values" also.



2011/03/04

ロゴの変更 (Replace the header image)

画面上部のORACLEのロゴを(自社/自社製品のロゴなどに)変更する場合は、以下のファイルを置き換えます(標準構成の場合)。置き換えるイメージのサイズは、オリジナルに合致させて下さい。

【10.1.3】
bi_home\bi\oc4j_bi\j2ee\home\applications\xmlpserver\xmlpserver\xdo\images\oracle.gif
(155px * 20px)

【11.1.1】
middleware_home\user_projects\domains\bifoundation_domain\servers\bi_server1\tmp\_WL_user\bipublisher_11.1.1.3.0\rww81x\war\resource\blafplus\branding\oracleLogo.png
(119px * 25px)

11gでロゴを入れ替えた結果は以下の通りです。




また、BI Publisher 10.1.3.4.1では、ヘッダ部をユーザから完全に隠蔽する機能が追加されています。
手順は、ファイル<BI Publisher repository>/Admin/Configuration/xmlp-server-config.xml に以下の設定を追加し、再起動するだけです。

<property name="DISPLAY_HEADER_LOGO_MENU" value="false"/>

※なお、画像の差し替えに際しては著作権およびサポート上の問題がない旨をSRにて都度、確認して下さい。

参考URL: (マニュアル(新機能ガイド))

http://download.oracle.com/docs/cd/E12844_01/doc/bip.1013/e14667/toc.htm#BABEHCCG




[ Summary ]
To change ORACLE logo image, replace the image files listed above.  The pixel size of new image should be same as the original.


If you use 10.1.3.4, you can remove the whole header region.  Add following setting on <BI Publisher repository>/Admin/Configuration/xmlp-server-config.xml
<property name="DISPLAY_HEADER_LOGO_MENU" value="false"/>


Note: Before you replace the image, you should better ask Oracle Support about copyright and support issue always.

Refer the url below for more details. (BI Publisher New Features Guide)
http://download.oracle.com/docs/cd/E12844_01/doc/bip.1013/e14667/toc.htm#BABEHCCG

2011/03/03

関数とフィルタ (Filter with functions)

テンプレート上でsumを使用した場合、当該列にNULLが含まれると集計結果に "NaN" が表示されてしまいます。これを避けるためには、以下の様にsumのフィルタに .!="" を記述します。
<?sum(COMM[. != ""])?>

同様に、特定の値のカウントなども可能です。以下の例ではSALが3000以上の値のみをカウントします。
<?count(SAL[. >= 3000])?>

参考URL:
http://blogs.oracle.com/xmlpublisher/2008/02/summing_nulls.html


[ Summary]
When sum function encounters null value, it shows NaN.  To skip null values, set filter [ . != "" ] .
Also, filter is available with count function.

2011/03/02

日付の計算 (Adding days to a date)

日付に加算・減算を行うには xdoxslt:ora_format_date_offset を使用します。書式は以下の通りです。
<?xdoxslt:ora_format_date_offset(date, offset, 'operator')?>

前日の日付を表示する場合は以下のように offset に1、operator にマイナス記号を設定します。
<?xdoxslt:ora_format_date_offset(HIREDATE, 1, '-')?>


また、参考URLで紹介されているように、offset に列名を指定することもできます。以下の例では INVOICE_DATE の INVOICE_TERM 日後の日付が取得できます。
<?xdoxslt:ora_format_date_offset(INVOICE_DATE, INVOICE_TERMS, '+')?>


参考URL:



[ Summary ]
xdoxslt:ora_format_date_offset provides date value addition and subtraction.  See the formula above.


Refer the URL above for more details.

2011/03/01

rpad関数で簡易グラフを表現する (Simple chart with RPAD function)

一覧表に簡単なグラフを表現するサンプルです。RPAD関数で”|” (0x7c) を並べて出力します。




設定は以下の通りです。テンプレートの文字色を変えることで目盛を表現します。



<?xdoxslt:rpad('', floor(SAL div 250), '|')?><?xdoxslt:rpad('', 20-floor(SAL div 250), '|')?>


[ Summary ]
With '|' (0x7c), you can show simple chart.  On the RTF template, use RPAD function with two colors.