JSPカスタムタグをベースとした、Webアプリケーションフレームワークです。
SQLの知識さえあれば、データのCRUD操作をメインとした業務システムが
簡単に構築することができます。
このフレームワークは、村田機械株式会社の基幹システムを構築するために
開発され、ほぼ全ての基幹システムは、これを利用して構築し、稼動しています。
(基本機能)
・ユーザー管理 ・認証・アクセス制御
・多言語対応 ・Excel入出力機能
・ガントチャート表示、編集機能 ・定型帳票作成、発行機能
・定型メール送信機能 ・データベース定義管理機能
・バッチ処理機能
各種詳細情報及びドキュメントについては、openGion@Websiteを参照して下さい。
Java を含む標章は、米国 Sun Microsystems, Inc.の商標であり、同社のJava ブランドの技術を使用した製品を指します。
Excel は、Microsoft Corporationの米国及びその他の国における登録商標です。
コンテンツ中に記載された社名および製品名は、すべて各社の商標または登録商標です。
5.5.4.0 (2012/07/02)
[ガントチャート表示修正]
画面表示の1日のコマ数と、休憩時間の計算数がずれているため修正します。(時間軸の場合のみ)
エンジンの1日のピクセル数を小数点計算ではなく切り上げ計算させて対応しています。
hayabusa.taglib.GanttHeaderTag#makeZoomTime( final int hourOfPixcel,final int step,final boolean useTani )
[GanttHeader属性追加]
GanttHeaderタグの属性値を、HTMLに出力することでJavaScriptから情報を拾えるようにします。
次の属性については設定した値をそのまま出力します。
startDate,endDate,zoom,daySpan,breakTimes,skipHoliday
又、calDBについては取得した休日区分によって通常0、休日1とした文字列を連結して出力します。
原則枠単位に出力しますが、最小の単位は「日」です。つまり、時間系のガントでもcalDBについては日単位での出力となります。
skipHolidayをtrueとした場合も、この属性については休日を含めて出力します。
出力範囲はガントの開始日から終了日です。
これらの情報の出力は、idとclassが"ganttHeaderData"となっているganttHeaderタグの属性値です。
display=noneで出力しています。
hayabusa.taglib.GanttHeaderTag#makeHeaderData()
hayabusa.taglib.GanttHeaderTag#release2()
hayabusa.taglib.GanttHeaderTag#makeZoom2( final int add )
hayabusa.taglib.GanttHeaderTag#makeZoom( final String upper ,final String lower ,final int add, final boolean useMonth )
[一覧でのカラム説明表示機能]
reslut_info.jsp及びresult_FS_info.jspの?アイコンでVIEWのカラムマニュアルが表示される機能を追加します。
これは、VIEWヘッダのツールチップを一覧で表示するもので、カラムリソース上の概要でセットしておく必要があります。
概要が存在しないものは表示しません。
概要が全く存在しない場合は、img#viewHelpIconをdisplay:noneとします。(ヘルプアイコンを消します)
スクリプトはcommon/resultScript.js上で定義しているためHeadタグのtypeがresultの場合のみスクリプトが読み込まれます。
ドラッグ機能については、jquery-uiをインクルードした場合のみ動作します。
これは、回線が細い等の理由でuiをインクルードしたくない場合を考慮のためです。
標準のresult_infoではjquery-uiをインクルードします。
common/resultScript.js#shouViewManual
custom/result_info.jsp
custom/result_FSinfo.jsp
image/status_Close.png
[hiddenタグでのid出力]
hiddenタグでタグを出力した場合にもid属性を出力するようにします。(Nameと同じid)
eventColumnではidを利用していたため、hiddenからの値を取得できませんでしたが、以降は利用可能です。
fukurou.util.XHTMLTag#hidden( final String name,final String value )
fukurou.util.XHTMLTag#hidden( final String name, final String value, final String id )
[eventColumnでの{@USER.xxx}利用]
eventColumnでは{@xxx}をエンジン側で処理せずにJavaScriptで動的に処理していましたが、
{@USER.xxx}のような予約語関係についても取得できませんでした。
従来の処理から予約語の処理を分離し、適用するように対応します。
hayabusa.taglib.CommonTagSupport#getRequestValue( final String key, final boolean xssCheckFlg )
hayabusa.taglib.CommonTagSupport#getReservedValue( final String key )
hayabusa.taglib.CommonTagSupport#getReservedParameter( final String key )
hayabusa.taglib.ColumnTag#getInsertTag( final DBColumn clm, final String value )
hayabusa.taglib.ColumnTag#setEventColumn( final String col )
hayabusa.taglib.SelectTag#setRawParam( final String param )
hayabusa.taglib.ColumnEditorTag#doAfterBody
[eventColumnのラベル短利用]
5.5.1.0でcolumnタグやselectタグでラベル短を利用できるようにはしていますが、
一覧画面でのeventColumnを利用した際は自動でラベル短利用にはなっていませんでした。
一覧で利用された場合はラベル短フラグEC_USESLBLをtrueで送信します。
(XXX__0のように__xとsuffixが付いている場合を一覧からの送信と判断しています)
それ以外の場合は常にfalseで送信しますので、特殊な対応が必要な場合はeventColumnMaker.jspで対応して下さい。
common/eventScript/eventColumn( jEvCol, jTag, cid, cname, suffix, writable )
oommon/eventColumnMaker.jsp
[eventColumn実行後のCallback指定]
eventColumn動作後にCallbackとして実行させる関数を指定可能にします。
column,select,columnEditorタグに追加されたeventCallback属性に関数名を指定します。
ex) sampleCallback()を実行したい場合はeventCallback="sampleCallback"と指定
callback関数の第一引数には自動的に子カラムのID,変更後value値、変更前value値の順でセットされた配列を渡します。
動的カラムのサンプル画面もご覧下さい。
common/eventScript/eventColumn( jEvCol, jTag, cid, cname, suffix, writable )
hayabusa.taglib.ColumnEditorTag#setEventCallback( final String callback )
hayabusa.taglib.ColumnTag#setEventCallback( final String callback )
hayabusa.taglib.SelectTag#setEventCallback( final String callback )
hayabusa.db/AbstractEditor#getValue( final String value )
hybs-taglib.tld
gf/jsp/GF6410/query.jsp
[色選択用エディタ・レンデラ追加]
JavaScriptを利用したカラーピッカーより色を選択するエディタと、その色を表示するレンデラを追加します。
ピッカーは64色からの選択式を採用しています。手入力での編集はできません。
レンデラはreadonlyのinputタグで、入力欄と文字色が指定色になります。
ActiveXのピッカーはIE9以降でエラーになる場合があるため、こちらを利用して下さい。
pulugin.column.Editor_COLOR
pulugin.column.Renderer_COLOR
gf/jsp/common/eventScript.js#$.fn.simpleColorPicker
gf/jsp/common/default.css
gf/jsp/GF6000/result.jsp
コードリソース(**)
サンプル用ラベルリソース(GF)
[SplitViewTag利用時のnoDisplay扱い修正]
SplitViewTagタグとviewタグの組み合わせで左右分割スクロールを作成可能ですが、
「Viewタグの右側には、fixDisplay のカラムを noDisplay のカラムに設定します。
既存の設定値(noDisplay)があれば、それに追記されます。」
の記述通りに動作しておらずnoDisplayを上書きしていたため、追記するように修正します。
hayabusa.taglib.ViewFormTag#splitViewParamSet()
[サンプル画面標準化対応]
Oracle専用になっていた画面を{@DBF.xxx}を利用する事で他DBにも対応させます。
gf/jsp/GF6410/query.jsp
gf/jsp/GF6410/result.jsp
5.5.3.5 (2012/06/21)
[DocletPlugin修正]
javadocの属性クラス定義 を作成するDocletクラスで、廃止された ChartWriter を削除し、
追加された、TransferExec,TransferRead を追加します。
fukurou.taglet.DocletPlugin#mapInit()
バージョンアップの修正
gf/build.xml
hybs-taglib.tld
タグリブマニュアルの画面を見直します。(軽微な修正)
gf/jsp/DOC01/result.jsp
gf/jsp/DOC02/query.jsp , result.jsp
gf/jsp/DOC03/result.jsp
gf/jsp/DOC08/result.jsp
gf/jsp/DOC23/result.jsp
以前、クラス仕様書などの テーブルを廃止しましたが、XSL変換のノウハウは
残しておきたいので、GF36.xsl 、 GF37.xsl を戻しておきます。
ただし、現在は利用していないため、単に置いてあるだけです。
specific.xml を作成しているのは、ソースコメントの精度向上のための
チェックに使っているだけです。
gf/src/xslt/GF36.xsl
gf/src/xslt/GF37.xsl
[JavaDocの記述修正]
下記のJavaDocの記載が間違っていたので修正。
hayabusa.taglib.FileUpdateTag#setDisplayMsg( final String id )
hayabusa.taglib.QueryTag#setDisplayMsg( final String id )
5.5.3.4 (2012/06/19)
[JSPサンプル画面修正]
【TypeS:一覧検索】関係のサンプルGF95XXを、 GF90XX 関係にID変更します。
これは、検索画面という、もっとも単純な例を、最初に持ってくる意味合いと、
GF95XX に、一覧検索登録画面のサンプルを持ってきたかったからです。
今後も、GF96XX,GF97XX とひな形を増やす場合に、GF9500 という検索画面の
サンプルが途中に存在するのは、無計画に見えます。
これに基づき、BIZロジックのクラスファイル、および、この画面へリンクを
張っていた画面を、GF90XX に置き換えます。
src\biz\gf\GF9040S.java
gf\jsp\GF6030\result.jsp(72): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6050\result.jsp(56): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6070\result_sample1.jsp(37): <og:link column="{@CUBE_X}" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6070\result_sample1.jsp(40): <og:link column="KEI" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6070\result_sample1.jsp(44): <og:link column="7839" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6070\result_sample1.jsp(47): <og:link column="7788" gamenId="GF9500" href="index.jsp" target="CONTENTS" onLink="[DEPTNO]" markList="20"
gf\jsp\GF6070\result_sample3.jsp(35): <og:link column="{@CUBE_X}" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6070\result_sample3.jsp(38): <og:link column="KEI" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6070\result_sample4.jsp(64): <og:link column="{@CUBE_X}" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6070\result_sample4.jsp(67): <og:link column="KEI" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6130\result.jsp(61): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6140\result.jsp(84): <og:link column="RENDERER" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6180\result.jsp(60): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6190\result.jsp(60): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6300\result.jspXX1(59): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF6340\result.jsp(60): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS" title="[NAME_JA]"
gf\jsp\GF9100\query.jsp(46): <og:popup gamenId="GF9510" href="index.jsp"
gf\jsp\GF9100\result.jsp(81): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF9100\result.jsp(107): <og:popup column="PUP" gamenId="GF9510" href="index.jsp"
gf\jsp\GF9110\result.jsp(62): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF9110\20120112\result.jsp(62): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF9120\result.jsp(66): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF9140\result.jsp(60): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF9200\query.jsp(47): <og:popup gamenId="GF9510" href="index.jsp"
gf\jsp\GF9200\result.jsp(81): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF9210\result.jsp(60): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF9220\result.jsp(66): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF9240\result.jsp(60): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF9400\result.jsp(62): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF9410\result.jsp(60): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF9430\result.jsp(53): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GF9440\result.jsp(60): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
gf\jsp\GFX024\result.jsp(62): <og:link column="CLM" gamenId="GF9500" href="index.jsp" target="CONTENTS"
[JSPサンプル画面修正]
adjustFrameHeight() において、上下分割で、下部の左右分割時(3フレームと認識)の処理に対応。
これは、SUB_FRAME の高さ自動調整機能です。
gf\src\script\common\default.js adjustFrameHeight() {
adjustFrameWidth() 新規作成
[explainPlan修正]
標準組み込み画面の DB検索(03_DBSEARCH)で、explainPlan の実行結果が
表示されない現象が発生したので、対処しました。
OracleEX のためか、11gからか、もともとか不明ですが、セッションが異なると
見えないようです。
そこで、一連の処理を、transaction タグで囲うことで、同一セッションで実行できるようにしました。
gf\jsp\common\gamen\03_DBSEARCH\explainPlan.jsp
queryタグのtrace機能で、PLAN_TABLE のSTATEMENT_IDの設定で、ログインユーザーを利用している箇所で、
IDをうまく取れていなかった箇所を修正します。
また、trace 時は、実際の検索処理を行わない様に変更します。
hayabusa.taglib.QueryTag#doAfterBody() {
hayabusa.taglib.QueryTag#doEndTag() {
hayabusa.taglib.QueryTag#traceQuery( final String sql , final Transaction tran ) {
[ICC_PROFILE 配置場所修正]
ImageResizer で、外部の ICC_PROFILE (ISOcoated_v2_eci.icc)を利用していますが、この運用を変更します。
この処理自体は、画像のリサイズ処理で、通常の方法で作成された、RGB形式の画像ファイルではなく、
特殊なツールで作成された、CMYK形式のファイルを処理するときにのみ利用されます。
よって、非常にレアなケースであり、指定のファイルがなくても処理は可能(非常に遅いので実用的ではないが)
なため、標準に含めてファイル容量を増やすことを避けます。
1.fukurou.jar に含めて配布しているが、分離する。
2.ISOcoated_v2_eci.icc ファイルが見つからない場合は、標準の SimpleCMYKColorSpace を利用する。
3.ISOcoated_v2_eci.icc ファイルを、jar化し、javaエクステンションに配布する。
org.opengion.fukurou.util.ImageResizer#cmykToSRGB( final BufferedImage readImage )
なお、ISOcoated_v2_eci.icc ファイルを、javaエクステンションに配布する場合は、そのまま置くのではなく
zip圧縮後、拡張子を、zip から、jar に変更します。
C:\opengion\apps\jdk170u4\jre\lib\ext\ISOcoated_v2_eci.jar
[tld,build.xml]
verup に伴う、tld,build.xml の修正を行いました。
また、build.xml に関しては、ISOcoated_v2_eci.icc の copy 処理をコメントアウトしています。
hybs-taglib.tld
build.xml
5.5.3.3 (2012/06/15)
[新伝送修正]
ファイル書き込み後のclose処理がなかったため、追加します。
fukurou.transfer.TransferExec_SAMCB#execute( final String[] vals, final TransferConfig config, final Transaction tran )
5.5.3.2 (2012/06/08)
[ヘッダ固定修正]
5.5.1.0で対応したヘッダ固定の裏を非表示にする対応で、再度スクリプトが
動作した場合に表側のヘッダーまで非表示になってしまっていたものを対応します。
(例えばBulkセット部分のダブルクリックなど)
裏の内容を表にコピーする際に、セットしているtabindexとvisibilityを一度空にします。
jsp/common/scrollBar2.js
[ラベルリソース修正]
エンジン標準**リソースで、区分が「一般」になっていたものを正しく「メッセージ」に修正します。
MSG0080 掲載中のみ
MSG0081 掲載番号
MSG0082 過去分検索
MSG0083 取消済非表示
MSG0084 (質問番号:{0})
[拡張検索条件見直し]
拡張検索条件関連の見直しを行います。
1.QueryButtonTag のCOUNT_SWITCH で、alt="pageSize" に変更
2.HideMenuTag の alt 属性に、ラベルを設定できるようにする。
そのラベルをイメージの alt 属性に設定します。
hayabusa.taglib.QueryButtonTag#COUNT_SWITCH
hayabusa.taglib.HideMenuTag#doStartTag()
hybs-taglib.tld hideMenuに、lbl 属性追加
3.query.jspの 拡張検索条件を、fieldset から、hideMenu に置き換えます。
<og:fieldset lbl="MSG0076" > → <og:hideMenu> にします。
ge/jsp/
common\releaseNotes.jsp(1): <og:fieldset lbl="MSG0076" >
common\releaseNotes.jsp(29): </og:fieldset>
GE0009\query.jsp(39): <og:fieldset lbl="MSG0076" >
GE0009\query.jsp(56): </og:fieldset>
MAIL01\query.jsp(33): <og:fieldset lbl="MSG0076" >
MAIL01\query.jsp(52): </og:fieldset>
MAIL02\query.jsp(36): <og:fieldset lbl="MSG0076" >
MAIL02\query.jsp(49): </og:fieldset>
ge/jsp (以下は、ソースは変わらないが、releaseNotes.jsp を変えることで画面デザインが変わります)
GE0002\query.jsp(60): <jsp:directive.include file="/jsp/common/releaseNotes.jsp" />
GE0003\query.jsp(49): <jsp:directive.include file="/jsp/common/releaseNotes.jsp" />
GE0004\query.jsp(39): <jsp:directive.include file="/jsp/common/releaseNotes.jsp" />
GE0005\query.jsp(40): <jsp:directive.include file="/jsp/common/releaseNotes.jsp" />
REP03\query.jsp(40): <jsp:directive.include file="/jsp/common/releaseNotes.jsp" />
REP04\query.jsp(41): <jsp:directive.include file="/jsp/common/releaseNotes.jsp" />
REP05\query.jsp(47): <jsp:directive.include file="/jsp/common/releaseNotes.jsp" />
REP06\query.jsp(37): <jsp:directive.include file="/jsp/common/releaseNotes.jsp" />
REP11\query.jsp(52): <jsp:directive.include file="/jsp/common/releaseNotes.jsp" />
REP14\query.jsp(48): <jsp:directive.include file="/jsp/common/releaseNotes.jsp" />
gf/jsp/
common\releaseNotes.jsp(1): <og:fieldset lbl="MSG0076" >
common\releaseNotes.jsp(29): </og:fieldset>
GF2020\query.jsp(41): <og:fieldset lbl="MSG0076" >
GF2020\query.jsp(57): </og:fieldset>
GF2050\query.jsp(40): <og:fieldset lbl="MSG0076" >
GF2050\query.jsp(55): </og:fieldset>
GF9200\query.jsp(57): <og:fieldset lbl="MSG0076" >
GF9200\query.jsp(70): </og:fieldset>
GF9400\query.jsp(42): <og:fieldset lbl="MSG0076" >
GF9400\query.jsp(55): </og:fieldset>
GF9500\query.jsp(57): <og:fieldset lbl="MSG0076" >
GF9500\query.jsp(70): </og:fieldset>
GF9540\query.jsp(57): <og:fieldset lbl="MSG0076" >
GF9540\query.jsp(70): </og:fieldset>
[AccessStopFilter]
AccessStopFilter で、通過させるユーザーに、admin を追加します。
従来は、SYSTEM ユーザーのみ、通過させていました。
hayabusa.filter.AccessStopFilter#
[DatabaseMetaDataTag 改造]
引き出せる情報が増えているので、追加します。
また、データ件数が大きくなり、検索処理が非常に遅くなっていたため、
最大検索件数を、指定できるようにします。属性名は、maxRowCount ですが、
このタグだけ特別に、最大値は、初期値 20 に決め打ちしています。
hayabusa.taglib.DatabaseMetaDataTag#release2()
hayabusa.taglib.DatabaseMetaDataTag#resultToString( final ResultSet resultSet )
hayabusa.taglib.DatabaseMetaDataTag#supportsConvert( final DatabaseMetaData metaData )
hayabusa.taglib.DatabaseMetaDataTag#setMaxRowCount( final String maxSize )
hayabusa.taglib.DatabaseMetaDataTag#setLikeKey( final String key )
gf/jsp/GF1040 追加
gf/jsp/GF1050 JSPソース変更
hybs-taglib.tld databaseMetaDataに、maxRowCount 属性追加
5.5.3.1 (2012/06/06)
[リソース出力漏れ]
エンジン標準**リソースの区分が「システム」になっており、
出力されていないものがあったため、出力しなおします。