Download List

Project Description

Projectの概要

JSPカスタムタグをベースとした、Webアプリケーションフレームワークです。
SQLの知識さえあれば、データのCRUD操作をメインとした業務システムが 簡単に構築することができます。

このフレームワークは、村田機械株式会社の基幹システムを構築するために 開発され、ほぼ全ての基幹システムは、これを利用して構築し、稼動しています。

(基本機能)
・ユーザー管理         ・認証・アクセス制御
・多言語対応          ・Excel入出力機能
・ガントチャート表示、編集機能 ・定型帳票作成、発行機能
・定型メール送信機能      ・データベース定義管理機能
・バッチ処理機能

各種詳細情報及びドキュメントについては、openGion@Websiteを参照して下さい。


Java を含む標章は、米国 Sun Microsystems, Inc.の商標であり、同社のJava ブランドの技術を使用した製品を指します。
Excel は、Microsoft Corporationの米国及びその他の国における登録商標です。
コンテンツ中に記載された社名および製品名は、すべて各社の商標または登録商標です。

System Requirements

System requirement is not defined

Released at 2013-10-06 15:32
opengion 5.6.9.0 (4 files Hide)

Release Notes

5.6.9.0 (2013/10/04)
[リソース定義]
リソースのサーバ間差分データ設定(GE0011)を修正します。
pageSize を引数に追加と、maxRowCount を引数ではなく 0(制限なし)
で渡すように変更します。
ge\jsp\GE0011

[ソースチェック関係 DB更新]
①TARGET 属性の桁数を 10から 30に変更します。
これは、{@SAKI_TARGET} などの変数を使うケースがあるためです。
GF71,GF72
GF93 は、同じカラム名を使っているため、同時に更新しておきます。

②GF73 の FORM_NAME が、200桁で足りなく、500ケタに増やします。

③GF74 の CLMS が、500桁で足りなく、1000ケタに増やします。
GF74 の SQL_TYPE が、20桁で足りなく、30ケタに増やします。

④DB定義書とスキーマの差分削除
GF08 テーブル削除

⑤仕様書DBのカラム定義変更
GF92(画面項目定義テーブル) の JOINTYPE(連携タイプ) カラム削除
GF91(青紙明細テーブル) に JOINTYPE(連携タイプ) カラム追加

[GF リソース追加]
GFM0051 備考 全角文字チェック ラベルリソース追加

USE_RESOURCE リソース使用 カラムリソース、コードリソース追加

[SQL文見直し]
カラム別名を付けるときに、AS を省略可能であるが、別名カラムを探す場合などに
使えるため、基本的には、AS を記述することとします。
GF2060\dbdefIn.jsp(313): SELECT SYSTEM_ID,TBLSYU,TABLE_NAME,INDEX_NAME,'' BIKO,UNIQ
GF2120\GFM0007.jsp(3): select '1' WRITABLE, '' TABLE_NAME,CLM,NAME_JA,
GF2120\GFM0010.jsp(53): select '' TABLE_NAME,CLM,NAME_JA,CLS_NAME,RENDERER,EDITOR,DBTYPE,
GF2120\GFM0011.jsp(53): select '0' WRITABLE, '' TABLE_NAME,CLM,NAME_JA,CLS_NAME,
GF2120\GFM0012.jsp(3): select '1' WRITABLE,'' TABLE_NAME,CLM,NAME_JA,'' BIKO,UNIQ,SYSTEM_ID
GF2120\GFM0013.jsp(4): RENDERER,EDITOR,DBTYPE,0 SEQ,'' CODE,'' CODENAME,
GF2120\GFM0013.jsp(20): select '0' WRITABLE,'' TABLE_NAME,CLM,NAME_JA,
GF2120\GFM0013.jsp(21): RENDERER,EDITOR,DBTYPE,0 SEQ,'' CODE,'' CODENAME,'' BIKO,UNIQ,SYSTEM_ID
GF2120\GFM0049.jsp(3): select '1' WRITABLE, '' TABLE_NAME,A.CLM,COALESCE(B.LNAME,B.NAME_JA,A.NAME_JA) as NAME_JA,
GF2120\GFM0049.jsp(5): case when A.CLS_NAME = 'CLOB' then '' else A.USE_LENGTH end as USE_LENGTH ,
GF2120\GFM0050.jsp(19): select '' TABLE_NAME,CLM,NAME_JA,CLS_NAME,RENDERER,EDITOR,DBTYPE,
GF2252\insertGF92.jsp(117): , '' SEQ, A.CLM , MIN(A.TABLE_NAME) as TABLE_NAME, MIN(A.TABLE_NAME) || '.' || A.CLM as ZOKUSEI , MIN(C.AS_TABLE) AS AS_TABLE , FGJ , UNIQ
GF6010\result.jsp(41): select GUIKEY,NAME_JA,RWMODE,DECODE( MOD(SEQNO,3),0,'row_mark','' )
GF6030\result.jsp(34): CLM,NAME_JA,LABEL_NAME,KBSAKU ,SYSTEM_ID,LANG,FGJ,'' LBA
GF6050\result.jsp(36): CLM, PUP,NAME_JA,LABEL_NAME,KBSAKU,SYSTEM_ID,LANG,FGJ
GF6140\result.jsp(36): '' ABC
GF6430\result.jsp(37): || ':' || case when A.NAME_JA is null then '' else 'true' end -- 2は、must
GF6430\result.jsp(44): A.NAME_JA,B.LNAME,A.KBSAKU,A.SYSTEM_ID,A.EDITOR,A.USE_LENGTH,B.LANG,A.FGJ, REQVAL
GF6440\result.jsp(58): ,'' PUP <!-- ポップアップボタン -->
GF9100\result.jsp(59): ,'' PUP <!-- ポップアップボタン -->
GF9150\result.jsp(60): ,'' PUP <!-- ポップアップボタン -->
GFX001\result.jsp(34): '' OPEN
GFX022\result.jsp(49): VALUENAME, REQUIRED, DESCRIPTION, CONTENTS, HTMLEXT,
ORA05\result.jsp(29): 'ALTER SYSTEM KILL SESSION ''' || SID || ',' || SERIAL# || '''' DELETE_SID,
ORA10\result.jsp(27): select OWNER,OBJECT_NAME,OBJECT_TYPE,CREATED,LAST_DDL_TIME,TIMESTAMP,STATUS,'' DEL
ORA10\result.jsp(63): select OWNER,OBJECT_NAME,OBJECT_TYPE,CREATED,LAST_DDL_TIME,TIMESTAMP,STATUS,'' DEL
GF2120\GFM0011.jsp(3): select '1' WRITABLE, UPPER(TABLE_NAME) AS TABLE_NAME,UPPER(CLM) AS CLM,NAME_JA,CLS_NAME,
GF2120\GFM0030.jsp(3): select '1' WRITABLE, UPPER(TABLE_NAME) AS CLM,NAME_JA,0 UNIQ,SYSTEM_ID
GF2120\GFM0030.jsp(15): select '0' WRITABLE, CLM, NAME_JA, UNIQ,SYSTEM_ID
GF2120\GFM0031.jsp(3): select '1' WRITABLE, CLM, NAME_JA, UNIQ,SYSTEM_ID
GF2120\GFM0031.jsp(15): select '0' WRITABLE, UPPER(TABLE_NAME) AS CLM,NAME_JA,UNIQ,SYSTEM_ID
GFX000\result.jsp(24): select FGFAVORITE WRITABLE

[ファイル出力関連]
ファイル出力時に、fileout.xls というファイル名と、fileOut.xls や、FileOut.xls は、
Windows上では区別されませんが、リンクやWeb上では区別されるため、ファイルが見つからない
等のエラーになります。
ここでは、fileout.xls に統一します。
common\gamen\03_DBSEARCH\fileSave.jsp(23): filename = "FileOut.xls"
common\gamen\03_DBSEARCH\fileSave.jsp(28): <og:link href="../../../../{@SYS.FILE_URL}{@USER.ID}/FileOut.xls" target="_blank" useGamenId="false" >
common\gamen\03_DBSEARCH\fileSave.jsp(29): <img src="{@SYS.JSP}/image/floppy.gif" alt="Excel Open" /> FileOut.xls <og:message lbl="MSG0056" />
GF6240\index.jsp(23): pageContext.forward( "writeFileRedirect.jsp?filename=FileOut.xls" );
GF6240\query.jsp(40): out.print( "&amp;filename=FileOut" );
GF6440\result.jsp(112): <og:submit value="fileOut" command="NEW" lbl="File Out" target="_blank" />

※ jspのファイル名も変更します。いつものような上書きでは大文字小文字のファイル名は変更されませんので、
直接書き換える必要があります。
GF6440\fileOut.jsp → fileout.jsp

08_DBUPDATE で、カラムの選択に、CLMS 変数を使うと、ファイルダウンロードのカラム指定と
同じキーのため、指定のカラムが出力できない現象が発生しました。
そのため、キー名を変更します。 CLMS → SEL_CLMS
common\gamen\08_DBUPDATE\query.jsp
common\gamen\08_DBUPDATE\result.jsp

DB定義DB情報のXML出力時に、DYSET,DYUPDなどの共通属性を抜き出していなかったので、
それらも抜き出すように変更します。
現在、更新系の処理では、UNIQだけでなく、DYSETもキーとして使っています。
これは、UNIQ番号だけでは、他のテーブルの番号と同じ場合に誤って更新して
しまうので、サブキーの代わりに使っています。
本来は、すべてのテーブルでユニークになるような、UNIQ を採番すればよいのですが、
それには、数字ではなく、文字列で桁数を増やす必要があり、今は見送ります。
GF2150\result.jsp

5.6.8.3 (2013/09/27)
[columnCheckタグ修正]
カラムチェックタグのテーブルモデル有無チェックをcommandで行っていましたが、
実際にはcheckTypeに従ってチェックを行う必要があるため修正します。
hayabusa.taglib.ColumnCheckTag#doEndTag()
hayabusa.taglib.COlumnCheckTag#makeErrorDBTable()

5.6.8.2 (2013/09/20)
[Tomcat8 対応]
DBConfig.xml の読み取りで、ClassLoader から、getResource しているが、
Tomcat8では従来の方法では取れない。
そこで、取れない場合は、基準URLを作成してから、Fileオブジェクトで合成する
ようにしました。あくまで、取れなかった場合のみ、動作します。
fukurou.db.DatabaseConfig( final String xmlfile )

X ※ この修正には、<CATALINA_HOME>\endorsed 以下に、ogTomcat8.jar をコピーする必要がある為保留します。
X コピーしたファイルは、Tomcat7 上でコンパイルする為だけに必要なので、今は対応しません。
X
X javax.servlet.ServletOutputStream に、isReady() と、setWriteListener(WriteListener)
X の abstractメソッドが、追加されたため、オーバーライドしなければなりません。
X ただし、javax.servlet.WriteListener インターフェースがない為、この class ファイルだけを、
X ogTomcat8.jar という jar にまとめ、tomcat7.x.x の endorsed にコピーし、build.xml に
X クラスパスを追加することで、tomcat7 環境でもコンパイルできるようにします。
X なお、Tomcat8 に完全移行する時には、ogTomcat8.jar は不要になります。
X hayabusa.filter.FileResponseStream#isReady()
X hayabusa.filter.FileResponseStream#setWriteListener( final javax.servlet.WriteListener listener )
X hayabusa.filter.GZIPResponseStream#isReady()
X hayabusa.filter.GZIPResponseStream#setWriteListener( final javax.servlet.WriteListener listener )

[RegistryQueryTag 対応]
以前のPreferencesでは、HKEY_CURRENT_USER/Software 以下のキーを baseKey に指定しても
取得できていましたが、いつからかできなくなっています。
そこで、とりあえず、java.util.prefs.WindowsPreferences を直接変更して、
Software/muratec と、Software/microsoft だけは、取得できるようにしました。
これを実行するには、この改造したクラスを含む jarファイル(ogPreferences.jar)を
tomcatの\endorsed に入れておく必要があります。
ちょっと、このタグの見直しを検討します。
属性追加もあります。
hkeyType : HKEY_CURRENT_USER(="user") を読むか、HKEY_LOCAL_MACHINE(="system") を読むかを指定します(初期値:user)。
hayabusa.taglib.RegistryQueryTag.java 修正箇所多数あり
gf\src\META-INF\hybs-taglib.tld RegistryQueryTag に、hkeyType 属性追加
gf\WEB-INF\hybs-taglib.tld
gf/jsp/GF1020

[rawLongLabel対応]
一覧上でのプルダウンは表示にラベル短を利用し、ツールチップとしてラベル長を利用していました。
概要説明が存在する場合にラベル長がspanタグで囲われてしまって正常に表示されない不具合が
ありましたので、未加工のラベル長をツールチップで利用するように変更します。
haybusa.resource.LabelData#LabelData( final String inkey )
haybusa.resource.LabelData#LabelData( final String[] data )
haybusa.resource.LabelData#getRawLongLabel()
hayabusa.resource.CodeData#RLNAME,MAX_LENGTH
hayabusa.resource.CodeData#getRawLongLabel( final int seqNo )
hayabusa.resource.CodeData#CodeData( final String clm, final Map<String,String[]> data)
hayabusa.resource.CodeData#subsetList( final String codeCsv )
hayabusa.resource.CodeData#subsetGroup( final String group )
hayabusa.resource.CodeData#subsetRole( final RoleMode userRole )
hayabusa.resource.CodeDataLoader#loadDBResource()
hayabusa.resource.CodeDataLoader#getCodeData( final String key )
hayabusa.db.Selection_CODE#Selection_CODE( final CodeData cdData )

[クライアントガント(積上げ)の修正]
折りたたみ表示の場合に、正確に積上げされていない場合があったので修正します。
/jsp/common/option/adjustGanttTable.js

5.6.8.1 (2013/09/13)
[edit機能修正]
合計のBigDecimal化をした際に、上手く合計値が足されてない不具合があったため修正します。
hayabusa.db.DBTableModelEditor#addTotalRows( final int maxRowCount, final ResourceManager resource, final boolean[] sumFilter
, final boolean[] groupFilter, final boolean[] subTotalFilter, final boolean[] totalFilter )

[{@LAST.XXXX}対応]
最後に使用した値を利用する機能を追加します。
{@MEM.XXXX} と違い、ユーザーオブジェクト内で共有します。
{@LAST.XXXX} を見つけた場合、UserInfo内のメモリにキーを用意し、
command="NEW" が指定された時(RequestCacheTag)の XXXX の値を
メモリに設定します。

この設定された値は、ユーザー永続化情報(GE20)テーブル に、通常の情報と
区別する為、"LAST_REQUEST_" という接頭語を付けて保存されます。
hayabusa.taglib.CommonTagSupport#getLASTAttri( final String attkey )
hayabusa.taglib.CommonTagSupport#getReservedValue( final String key )
hayabusa.taglib.RequestCacheTag#commandExec( final String command,final ServletRequest request )
hayabusa.resource.UserInfo#getLastRequestValue( final String key,final String val )
hayabusa.resource.UserInfo#setLastRequestMap( final Map<String,String[] reqMap )
hayabusa.resource.UserInfo#dbLoad()
hayabusa.resource.UserInfo#clear()
hayabusa.resource.UserInfo#saveLastRequestValues()

[UserInfoのsetAttribute]
UserInfo で、セットする値が null、またはゼロ文字列の場合、
attribute変数に設定しない(DBへも書き込まない)ように変更します。
これは、無駄なメモリやDB書き込みを減らすためです。
hayabusa.resource.UserInfo#setAttribute( final String key,final String value, final boolean save, final boolean common )

Changelog

No Changelogs