Skip to content

UserGuide_Common.ja

daisuke nishino edited this page Jul 21, 2026 · 5 revisions

Open 棟梁 利用ガイド (共通編)

2026年7月更新版

はじめに

本ドキュメントの対象

  • Open 棟梁を用いたアプリケーション開発を検討しているマネージャ、SE・開発者
  • Open 棟梁を用いたアプリケーション開発を行う、SE・開発者

本ドキュメントの概要

本ドキュメントは、Open 棟梁の全利用者が把握しておくべき点について纏めています。

他社所有名称に対する表示

本ドキュメントに記載の会社名・商品名は、各社の商標または登録商標です。

ライセンス

本ドキュメントは、クリエイティブ・コモンズ CC BY 2.1 JP ライセンスの下で利用可能です。

目次

1. フレームワーク使用の前提条件

2. フレームワークの全体構造

3. 開発基盤プログラム

4. テスト・サンプル プログラムのセットアップ

5. 新規 Web サイトのセットアップ

6. 共通 API について

7. 制限事項について

1. フレームワーク使用の前提条件

Microsoft Visual Studio 2026、Microsoft Visual C#、Microsoft Visual Basic で開発する net48、net10.0 以上のアプリケーションを対象とします。

表 1 .NET 用アプリケーション フレームワーク "Open 棟梁" の開発に使用するシステム

区分 製品名 ドキュメント中の略号
開発環境 Microsoft Visual Studio 2026 VS
Microsoft Visual C# C#
Microsoft Visual Basic VB
実行環境 ランタイム net48、net10.0
データアクセス プロバイダ Microsoft.Data.SqlClient SQL Serverクライアント
System.Data.OleDb .NET Framework Data Provider for OLE DB
System.Data.Odbc .NET Framework Data Provider for ODBC
Oracle.ManagedDataAccess Managed Oracle Data Provider for .NET (ODP.NET)
MySql.Data MySQL Connector/NET
Npgsql .NET data provider for PostgreSQL
(ADO.NET のインターフェイスに従っていれば適宜、追加可能)
WWW ブラウザ モダン・ブラウザ

2. フレームワークの全体構造

本章では、フレームワークの全体構造について説明します。フレームワークの全体構造は、以下のようになっています。

図 2 フレームワークの全体構造

<凡例>

  • .NET基盤:.NET のコンポーネントとして提供されるモジュール
  • 基盤部品:汎用的に利用できる基盤部品
  • フレームワーク:アプリケーション構造に関わるフレームワーク クラス
  • 業務フレームワーク:プロジェクト固有になるような業務共通部品(カスタマイズ可能)
  • 業務アプリケーション:業務アプリケーションの業務ロジックを実装するモジュール

次に、各層の処理フロー、使用上の注意事項について説明します。

2.1 B、D層フレームワーク

本節では、B 層、D 層フレームワークの構造について説明します。B、D 層の処理フローは次のようになっています。

図 2.1 B、D層フレームワークの処理フロー

上記シーケンス図中の各 UOC メソッドについて以下説明します。

表 2.1 シーケンス図中の各 UOC メソッドの説明

項番 クラス/メソッド 処理 内容
1 業務コード親クラス2(実装方法は「纏め者編」を参照)
1-1 B層業務処理の前後処理
1-1-1 UOC_ConnectionOpen メソッド DB初期化処理 DB接続、閉塞チェック、分離レベル設定、トランザクション開始 .etc
1-1-2 UOC_PreAction メソッド 開始処理 処理時間の測定、アクセス ログの出力 .etc
1-1-3 UOC_DoAction メソッド メソッド振り分け処理 業務処理メソッドの自動振り分け処理
1-1-4 UOC_AfterAction メソッド 終了処理 処理時間の測定、アクセス ログの出力 .etc
1-1-5 UOC_AfterTransaction メソッド 終了処理2 トランザクション完了(COMMIT)後の後処理。処理時間の測定、アクセス ログの出力 .etc
1-1-6 UOC_ABEND メソッド 例外処理 例外振替、アクセス ログ出力、エラー ログ出力 .etc
2 業務コードクラス(実装方法は「開発者編」を参照)
2-1 B層業務処理
2-1-1 UOC_(メソッド名)メソッド 業務処理
3 データアクセス親クラス2(実装方法は「纏め者編」を参照)
3-1 D層データアクセス処理の前後処理
3-1-1 UOC_PreQuery メソッド 開始処理 処理時間の測定 .etc
3-1-2 UOC_AfterQuery メソッド 終了処理 処理時間の測定、SQLトレース ログ出力、エラー ログ出力、例外振替 .etc
4 データアクセス クラス(実装方法は「開発者編」を参照)
4-1 D層データアクセス処理
4-1-1 任意のメソッドを実装可能(共通 Dao、自動生成 Dao を使用する場合は既定のメソッドを使用) データアクセス処理

「業務コード親クラス2」、「データアクセス親クラス2」の実装方法については「纏め者編」を、「業務コードクラス」、「データアクセスクラス」の実装方法については「開発者編」を参照してください。

2.2 P層フレームワーク

本節では、P 層フレームワークの構造について説明します。

2.2.1 P層の処理フロー

P 層の処理フローは次のようになっています。

図 2.2 P層フレームワークの処理フロー

上記シーケンス図中の各 UOC メソッドについて以下説明します。

表 2.2.1 シーケンス図中の各 UOC メソッドの説明

項番 クラス/メソッド 処理 内容
1 画面コード親クラス2(実装方法は「纏め者編」を参照)
1-1 初期処理(ページ ロード処理)
1-1-1 UOC_CMNFormInit メソッド 初期処理 カスタム認証、権限チェック、閉塞チェック、キャッシュ無効化設定、ページ タイトルの設定、アクセス ログの出力 .etc
1-1-2 UOC_CMNFormInit_PostBack メソッド 初期処理(ポストバック) カスタム認証、権限チェック、閉塞チェック、キャッシュ無効化設定、ページ タイトルの設定、アクセス ログの出力 .etc
1-2 P層イベント処理の前後処理
1-2-1 UOC_PreAction メソッド 開始処理 処理時間の測定、アクセス ログの出力 .etc
1-2-2 UOC_AfterAction メソッド 終了処理 処理時間の測定、アクセス ログの出力 .etc
1-2-3 UOC_Screen_Transition メソッド 画面遷移処理 画面遷移の方法を規定する。
1-2-4 UOC_ABEND メソッド 例外処理 メッセージ編集、共通メッセージ表示、アクセス ログ、エラー ログ出力 .etc
1-2-5 UOC_Finally メソッド Finally 処理 必要に応じて処理を規定する。
2 画面コードクラス(実装方法は「開発者編」を参照)
2-1 初期処理(ページ ロード処理)
2-1-1 UOC_FormInit メソッド 初期処理 各画面の初期処理
2-1-2 UOC_FormInit_PostBack メソッド 初期処理(ポストバック) 各画面の初期処理
2-2 P層イベント処理
2-2-2 UOC_btnXXXX_Click メソッド 各コントロールのイベント処理

「画面コード親クラス2」の実装方法については「纏め者編」を、「画面コードクラス」の実装方法については「開発者編」を参照してください。

2.2.2 P層デザイン部の構成

P 層は、マスタ ページ・コンテンツ ページを組み合わせ、次のように作成されます。マスタ ページのネストにも対応しています。

図 2.2.2 P層デザイン部の構成

マスタ ページ、ユーザ コントロール上のコントロールのイベント ハンドラは、マスタ ページ、ユーザ コントロール側だけでなく、コンテンツ ページ側に実装することも可能です。

2.2.3 コントロール、イベント ハンドラの実装位置関係

コンテンツ ページのコード ビハインドである「画面コード クラス」は、「画面コード親クラス1」、「画面コード親クラス2」を継承しています。

図 2.2.3 P層の構成(実装部)

  • マスタ ページ(や Web ユーザ コントロール)上のコントロールのイベント処理
    図 2.2.2 のマスタ ページ(や Web ユーザ コントロール)上の [サブA] ~ [サブE] リンク ボタン、[利用の手引き] ボタン・[トピック] ボタン・[個人設定] ボタン・[ログアウト] ボタンなどの、「マスタ ページ(や Web ユーザ コントロール)上のコントロールの共通イベント処理」を共通化する場合は、「マスタ ページ」、「Web ユーザ コントロール」、「画面コード親クラス2」上の UOC メソッドに処理を実装することで、システム全体で処理を共通化できます。
    マスタ ページ上の [検索]・[取り消し]・[選択]・[追加]・[更新]・[削除] ボタンなどの、「マスタ ページ(や Web ユーザ コントロール)上のコントロールの個別イベント処理」は、「画面コード クラス」上の UOC メソッドに個別に処理を実装することにより、コンテンツ ページ毎に挙動を変えることができます。
    また、マスタ ページ上の [タブ1] ~ [タブ6] リンク ボタンなどの「マスタ ページ(や Web ユーザ コントロール)上のコントロールの共通イベント処理」をサブシステムなどの単位で共通化する場合は、「画面コード親クラス2」と「画面コード クラス」の間に、「画面コード親クラス3」を追加するなどして UOC メソッドに処理を実装します。
  • コンテンツ ページ上のコントロールのイベント処理
    「コンテンツ ページ上のコントロールの個別イベント処理」は、「画面コード クラス」上の UOC メソッドに個別に処理を実装します。
  • イベント ハンドラの実装方法
    コントロール イベント処理は、以下の4種類に分類できます。其々のイベント ハンドラの実装方法については、利用ガイド(別冊)に纏めます。

表 2.2.3-1 各種、イベント ハンドラの実装方法

項番 イベント内容 コントロール位置 UOCメソッドの実装位置 利用ガイド参照先
共通1 マスタ ページ 「画面コード親クラス2」 纏め者編
共通2 マスタ ページ 「画面コード親クラス3」 纏め者編
共通3 マスタ ページ マスタ ページ 纏め者編
共通4 Web ユーザ コントロール 「画面コード親クラス2」 纏め者編
共通5 Web ユーザ コントロール 「画面コード親クラス3」 纏め者編
共通6 Web ユーザ コントロール Web ユーザ コントロール 纏め者編
個別1 マスタ ページ 「画面コード クラス」 開発者編
個別2 Web ユーザ コントロール 「画面コード クラス」
個別3 コンテンツ ページ 「画面コード クラス」 開発者編

※ ASP.NET Mobile Web 開発では、マスタ ページは存在しないので、項番9のみ。

  • イベント ハンドラの共通引数
    イベント ハンドラ(コントロール イベントの UOC メソッド)では、共通引数として、「FxEventArgs」クラスの「FxEventArgs」オブジェクトを利用できます。この「FxEventArgs」クラスは、以下のプロパティ情報を保持しています。これらのプロパティ情報は、本フレームワークの P層イベント処理機能で自由に利用できます。

表 2.2.3-2 イベント ハンドラの共通引数のプロパティ

項番 プロパティ 対象コントロール/対象イベント 説明
ButtonID 全コントロール/全イベント イベント ハンドラに関係付けられているコントロール名
InnerButtonID リピータ/アイテム コマンド リピータ(,etc.) の内に配置されたコントロール
MethodName 全コントロール/全イベント イベント ハンドラにレイトバインドした際に利用したイベント ハンドラ(メソッド)名
イメージボタン/クリック イベント 押されたイメージボタンのX座標の値
イメージボタン/クリック イベント 押されたイメージボタンのY座標の値
PostBackValue ・イメージマップ
・リピータ(,etc.)
・クリック イベント
・アイテムコマンド
押されたイメージマップのホットスポットに設定されたポストバック バリューの値や、リピータ(,etc.) の内に配置されたコントロールのコマンド名 (,etc.)

2.2.4 コントロール、イベント ハンドラの名称付与基準

P 層のイベント処理を実装する場合は、以下の名称付与基準に従い、コントロール、イベント ハンドラ(コントロール イベントの UOC メソッド)を実装します。

● コントロール名

  • [プレフィックス]+任意の文字列

表 2.2.4-1 コントロール名の例

項番 コントロール種類 プレフィックスの例 コントロール名の例
ボタン コントロール btn btnButton
リンクボタン コントロール lbn lbnLinkButton
イメージボタン コントロール ibn ibnImageButton
イメージマップ コントロール imp impImageMap
テキストボックス コントロール txt txtTextBox
ドロップダウンリスト コントロール ddl ddlDropDownList
リストボックス コントロール lbx lbxListBox
ラジオボタン コントロール rbn rbnRadioButton
ラジオボタンリスト コントロール rbl rblRadioButtonList
10 チェックボックスリスト コントロール cbl cblCheckBoxListControl
11 リピータ コントロール rpt rptRepeater
12 グリッドビュー コントロール gvw gvwGridView
13 リストビュー コントロール lvw lvwListView

プレフィックスは、外部パラメタで任意の文字列として定義することができます。※ プレフィックスの設定方法については、「纏め者編」を参照してください。

● コントロール イベントのイベント ハンドラ名

・ コンテンツ ページ上のコントロールのイベント ハンドラ名

  • UOC_(コントロール名)_(イベント名)

表 2.2.4-2 イベント ハンドラ名の例

項番 コントロール種類 イベント名 イベント ハンドラ名の例
ボタン コントロール Click UOC_btnButton_Click
リンクボタン コントロール Click UOC_lbnLinkButton_Click
イメージボタン コントロール Click UOC_ibnImageButton_Click
イメージマップ コントロール Click UOC_impImageMap_Click
テキストボックス コントロール TextChanged UOC_txtTextBox_TextChanged
ドロップダウンリスト コントロール SelectedIndexChanged UOC_ddlDropDownList_SelectedIndexChanged
リストボックス コントロール SelectedIndexChanged UOC_lbxListBox_SelectedIndexChanged
ラジオボタン コントロール CheckedChanged UOC_rbnRadioButton_CheckedChanged
ラジオボタンリスト コントロール SelectedIndexChanged UOC_rblRadioButtonList_SelectedIndexChanged
10 チェックボックスリスト コントロール SelectedIndexChanged UOC_cblCheckBoxList_SelectedIndexChanged
11 リピータ コントロール ItemCommand UOC_rptRepeater_ItemCommand
12 グリッドビュー コントロール RowCommand
SelectedIndexChanged
RowUpdating
RowDeleting
PageIndexChanging
Sorting
UOC_gvwGridView_RowCommand
UOC_gvwGridView_SelectedIndexChanged
UOC_gvwGridView_RowUpdating
UOC_gvwGridView_RowDeleting
UOC_gvwGridView_PageIndexChanging
UOC_gvwGridView_Sorting
13 リストビュー コントロール ItemUpdating
ItemDeleting
ItemCommand
Sorting
PagePropertiesChanged
UOC_lvwListView_ItemUpdating
UOC_lvwListView_ItemDeleting
UOC_lvwListView_OnItemCommand
UOC_lvwListView_Sorting
UOC_lvwListView_PagePropertiesChanged

・ マスタ ページ上のコントロールのイベント ハンドラ名

  • 実装箇所:画面コード親クラス2・3、画面コード クラス … UOC_(マスタ ページ ファイル名)_(コントロール名)_(イベント名)
  • 実装箇所:マスタ ページ … UOC_(コントロール名)_(イベント名)

表 2.2.4-3 マスタ ページ上のコントロールのイベント ハンドラ名(実装箇所:画面コード親クラス2・3、画面コード クラス。マスタページ名:mp.master)

項番 コントロール種類 イベント名 イベント ハンドラ名の例
ボタン コントロール Click UOC_mp_btnButton_Click
リンクボタン コントロール Click UOC_mp_lbnLinkButton_Click
イメージボタン コントロール Click UOC_mp_ibnImageButton_Click
イメージマップ コントロール Click UOC_mp_impImageMap_Click
テキストボックス コントロール TextChanged UOC_mp_txtTextBox_TextChanged
ドロップダウンリスト コントロール SelectedIndexChanged UOC_mp_ddlDropDownList_SelectedIndexChanged
リストボックス コントロール SelectedIndexChanged UOC_mp_lbxListBox_SelectedIndexChanged
ラジオボタン コントロール CheckedChanged UOC_mp_rbnRadioButton_CheckedChanged
ラジオボタンリスト コントロール SelectedIndexChanged UOC_mp_rblRadioButtonList_SelectedIndexChanged
10 チェックボックスリスト コントロール SelectedIndexChanged UOC_mp_cblCheckBoxList_SelectedIndexChanged
11 リピータ コントロール ItemCommand UOC_mp_rptRepeater_ItemCommand
12 グリッドビュー コントロール RowCommand ほか UOC_mp_gvwGridView_RowCommand ほか(イベント名を付与)
13 リストビュー コントロール ItemUpdating ほか UOC_mp_lvwListView_ItemUpdating ほか(イベント名を付与)

表 2.2.4-3(続き)マスタ ページ上のコントロールのイベント ハンドラ名(実装箇所:マスタ ページ)

項番 コントロール種類 イベント名 イベント ハンドラ名の例
ボタン コントロール Click UOC_btnButton_Click
2〜13 (コンテンツ ページと同じ) (同左) UOC_(コントロール名)_(イベント名)

・ Web ユーザ コントロール上のコントロールのイベント ハンドラ名

  • 実装箇所:画面コード親クラス2・3、画面コード クラス … UOC_(Web ユーザ コントロールのID)_(コントロール名)_(イベント名)
  • 実装箇所:ユーザ コントロール … UOC_(コントロール名)_(イベント名)

表 2.2.4-4 Web ユーザ コントロール上のコントロールのイベント ハンドラ名(実装箇所:画面コード親クラス2・3、画面コード クラス。Web ユーザ コントロールの ID:uc1)

項番 コントロール種類 イベント名 イベント ハンドラ名の例
ボタン コントロール Click UOC_uc1_btnButton_Click
リンクボタン コントロール Click UOC_uc1_lbnLinkButton_Click
イメージボタン コントロール Click UOC_uc1_ibnImageButton_Click
イメージマップ コントロール Click UOC_uc1_impImageMap_Click
テキストボックス コントロール TextChanged UOC_uc1_txtTextBox_TextChanged
ドロップダウンリスト コントロール SelectedIndexChanged UOC_uc1_ddlDropDownList_SelectedIndexChanged
リストボックス コントロール SelectedIndexChanged UOC_uc1_lbxListBox_SelectedIndexChanged
ラジオボタン コントロール CheckedChanged UOC_uc1_rbnRadioButton_CheckedChanged
ラジオボタンリスト コントロール SelectedIndexChanged UOC_uc1_rblRadioButtonList_SelectedIndexChanged
10 チェックボックスリスト コントロール SelectedIndexChanged UOC_uc1_cblCheckBoxList_SelectedIndexChanged
11 リピータ コントロール ItemCommand UOC_uc1_rptRepeater_ItemCommand
12 グリッドビュー コントロール RowCommand ほか UOC_uc1_gvwGridView_RowCommand ほか(イベント名を付与)
13 リストビュー コントロール ItemUpdating ほか UOC_uc1_lvwListView_ItemUpdating ほか(イベント名を付与)

表 2.2.4-4(続き)Web ユーザ コントロール上のコントロールのイベント ハンドラ名(実装箇所:ユーザ コントロール)

項番 コントロール種類 イベント名 イベント ハンドラ名の例
ボタン コントロール Click UOC_btnButton_Click
2〜13 (コンテンツ ページと同じ) (同左) UOC_(コントロール名)_(イベント名)

以上の名称付与基準に従って、コントロール・イベント ハンドラを実装することにより、本フレームワークの P層イベント処理機能を利用できます。なお、コントロール名はコンテンツ ページ、マスタ ページ、Web ユーザ コントロールを跨いで重複しないこと(ASP.NET としては重複しても問題ないが、P 層フレームワークの「イベント処理機能」としては、重複を許可しない)。※ [1]

● コントロール イベントのイベント ハンドラのシグネチャ
コントロール イベントのイベント ハンドラのシグネチャは、protected string イベント ハンドラ名(FxEventArgs fxEventArgs) とします。

例外として、GridView コントロールの RowUpdating、RowDeleting、PageIndexChanging、Sorting イベントのイベント ハンドラのメソッド シグネチャは、もう一つのイベント引数として、オリジナルの EventArgs を取ります。この場合のイベント ハンドラのシグネチャは、protected string イベント ハンドラ名(FxEventArgs fxEventArgs, EventArgs e) となります。

※ イベント ハンドラのアクセス修飾子が private であったり、引数部分のメソッド シグネチャが異なっていたりすると、イベント ハンドラの呼び出しが正常に行われないことがあるので注意が必要です。

2.3 例外処理方式

本節では、全体のフレームワークの例外処理のベース(基本的な考え方)について説明します。

2.3.1 例外処理の処理フロー

本項では、例外処理の処理フローを、シーケンス図を使用して示します。例外処理の処理フローは、プログラムの最下層で例外がスローされた場合、次の流れで例外が伝播し、最上位層に伝わるようになっています。ただし、実際は、フレームワークで用意した「例外の型」毎に、処理フローが個別に設計されています。

図 2.3.1 例外処理の処理フロー

2.3.2 例外の型

本項では、例外処理に使用する「例外の型」の区分について説明します。

「例外の型」を決定する大きな区分として、「ユーザ定義エラー用」の例外と「ランタイム エラー用」の例外があります。このうち「ユーザ定義エラー用」の例外は、さらに「業務続行可能エラー」の例外と「業務続行不可能エラー」の例外に分けられます。以下の図に、其々の対応する「例外の型名」、「例外のデータ型名」を示します。

図 2.3.2 「例外の型」の区分

本フレームワークでは、「ユーザ定義エラー用」の「例外の型」を追加せず、「業務例外」の「エラーメッセージID」フィールド、「システム例外」の「エラーメッセージID」フィールドの値から、「業務例外」の種類、「システム例外」の種類を特定します。其々の「例外の型」について、以下の表にまとめます。

表 2.3.2-1 「例外の型」の説明

項番 例外の区分 例外の型 説明
ユーザ定義エラー 業務例外 業務続行可能なエラー用の例外をスローしたり、ハンドルしたりする。例えば、以下に列挙した、リトライ可能なエラーは、「業務例外」型を使用して例外をスローし業務を続行する。
・単項目チェック、関連チェック エラー
・検索件数0件、更新件数0件(タイムスタンプ アンマッチ)
・追加時のキー重複、デッドロック・ロックタイムアウト
・その他、対象イベントのみ閉塞(オンライン バッチ排他)となっている場合(※ 例えば、参照系処理のみ許可、更新系処理は閉塞など)
ユーザ定義エラー システム例外 業務続行不可能なエラー用の例外をスローしたり、ハンドルしたりする。例えば、以下に列挙した、アプリケーションで検出したが、リトライ不可能 or リトライさせたくないエラーは、「システム例外」の型を使用して例外をスローし業務を停止する。
・システムが閉塞(休日・祝日、運用日程・時間スケジュールでシステム停止)となっている場合
・リトライ不可能な、業務的なデータ不整合、インターフェイス不整合などのエラー
・リトライさせたくない、業務的なデータ不整合、インターフェイス不整合などのエラー
ランタイム エラー フレームワーク例外 フレームワークで検知した例外をスローしたり、ハンドルしたりする。メッセージ ID を持つが、それ以外の扱いは、下記の「その他、一般的な例外」と同様。
ランタイム エラー その他、一般的な例外 ランタイム エラーなど、UPで特別に検知しない例外。この例外が発生した後、例外の振替など特別な措置を取らない限り、リトライ不可能であり、業務を停止すること。

表 2.3.2-2 「例外の型」とフィールド

項番 例外の型 フィールド日本語名 フィールド名 説明
1 業務例外 System.Exception を継承するため、「その他、一般的な例外」が保有するフィールドも保持する。
1-1 メッセージID messageID メッセージの種類などを一意に表す ID を設定・保持・取得できる。メッセージの雛形が外部媒体に定義されている場合は、その雛形を検索するためのキーとして利用できる。
1-2 メッセージ Message エラーの原因を説明するメッセージを設定・保持・取得できる。ただし、メッセージの雛形が外部媒体に定義されている場合は、この部分をメッセージの雛形に組込む可変文字列として使用できる。
1-3 エラー情報 Information チェック エラーなど、「業務例外」発生時のエラー情報(チェック結果)を設定・保持・取得できる。string 型なので複雑な情報を戻す場合は、「戻り値クラス」を利用する。
2 システム例外 System.Exception を継承するため、「その他、一般的な例外」が保有するフィールドも保持する。
2-1 メッセージID messageID メッセージの種類などを一意に表す ID を設定・保持・取得できる。メッセージの雛形が外部媒体に定義されている場合は、その雛形を検索するためのキーとして利用できる。
2-2 メッセージ Message エラーの原因を説明するメッセージを設定・保持・取得できる。ただし、メッセージの雛形が外部媒体に定義されている場合は、この部分をメッセージの雛形に組込む可変文字列として使用できる。
3 フレームワーク例外 System.Exception を継承するため、「その他、一般的な例外」が保有するフィールドも保持する。
3-1 メッセージID messageID メッセージの種類などを一意に表す ID を設定・保持・取得できる。
3-2 メッセージ Message エラーの原因を説明するメッセージを設定・保持・取得できる。
3-3 内部例外 InnerException ランタイム エラーを振り替える場合は、オリジナルの例外情報をここに格納する。
4 その他、一般的な例外 System.Exception クラスの一般的なフィールドのみ使用する。

表 2.3.2-3 「例外の型」と「例外の型毎の処理」(業務例外)

項番 処理区分 説明
1-1 B層側の処理 catch コードブロックで「業務例外」を catch し、以下の処理を実行する。
・トランザクションをロールバックする。
・対応する「例外処理用の UOC メソッド」を呼び出す(ログ出力処理などを実装する)。
・例外はリスローせず、正常系の戻り値として「戻り値」を戻す。
・コネクションを切断する。
1-2 P層への戻り値 「エラーフラグ」、「エラーメッセージID」、「エラーメッセージ」、「エラー情報」が設定された、「戻り値親クラス1」から、ユーザの設定した「戻り値親クラス2」~「戻り値クラス」までの情報。
1-3 P層側の処理 B層で「業務例外」をスローした場合は、P層に正常系の戻り値が返るので、戻り値判定をすることで「業務例外」の発生を検知し、終了処理を実装する(ログ出力処理、ユーザ向けメッセージ生成 [2]、メッセージ ダイアログ表示、入力チェック エラーの赤表示や業務の開始画面に戻る など)。
P層で「業務例外」をスローした場合は、catch コードブロックで「業務例外」を catch し、対応する「例外処理用の UOC メソッド」を呼び出す(ログ出力処理、ユーザ向けメッセージ生成 [3]、メッセージ ダイアログ表示 など)。
複雑な制御が必要な場合は前者、メッセージ ボックスの表示で済む場合は後者の方式で業務処理を実装できる。

表 2.3.2-4 「例外の型」と「例外の型毎の処理」(システム例外/フレームワーク例外・その他一般的な例外)

項番 処理区分 説明
2-1 B層側処理 catch コードブロックで「システム例外」を catch し、以下の処理を実行する。
・トランザクションをロールバックする。
・対応する「例外処理用の UOC メソッド」を呼び出す(ログ出力処理などを実装する)。
・例外をリスローする。
・コネクションを切断する。
2-2 P層への戻り値 「エラーメッセージID」、「エラーメッセージ」が設定された、リスローされた「システム例外」。
2-3 P層側処理 catch コードブロックで「システム例外」を catch し、対応する「例外処理用の UOC メソッド」を呼び出し、例外をリスローする。最終的に「Global.asax」の「Application_Error」イベント ハンドラや「エラー用画面」などに実装された共通処理で、「エラーメッセージID」、「エラーメッセージ」をもとにユーザ向けのメッセージを生成 [4] し、エラー画面を表示する。
3-1 (フレームワーク例外・その他一般的な例外)B層側の処理 catch コードブロックで「フレームワーク例外」、「その他、一般的な例外」を catch し、トランザクションをロールバック、対応する「例外処理用の UOC メソッド」を呼び出し、例外をリスロー、コネクションを切断する。
3-2 P層への戻り値 リスローされた「フレームワーク例外」、「その他、一般的な例外」。
3-3 P層側の処理 catch コードブロックで「フレームワーク例外」、「その他、一般的な例外」を catch し、対応する「例外処理用の UOC メソッド」を呼び出し、例外をリスローする。最終的に「Global.asax」の「Application_Error」イベント ハンドラや「エラー用画面」などに実装された共通処理で、ユーザ向けのメッセージを生成し、エラー画面を表示する。

3. 開発基盤プログラム

開発基盤プログラム一式については、付属の「内容物一覧(Content_list.xlsx)」の「リソース類」・「ソース類(C#)」シートを参照してください。

3.1 基盤プロジェクト一覧

付属の「内容物一覧(Content_list.xlsx)」の「基盤プロジェクト一覧」シートを参照してください。

3.2 外部ファイルの確認

本節では、開発基盤のコンフィギュレーション ファイル、外部ファイルについて説明します。コンフィギュレーション ファイル、外部ファイルには、以下のものがあります。其々のファイルの設定方法については、利用ガイド(別冊)に纏めます。

表 3.2 各種、コンフィギュレーション ファイル、外部ファイル

項番 ファイル日本語名 ファイル名 説明 必須/任意 参照先
web.config Web アプリケーションのルートに配置する。
app.config [5] フレームワーク、アプリケーションに関する各種の設定を定義する。任意(基本的には、web.config と同じ Web アプリケーションのルートに配置)。 必須
ログ出力 XML定義ファイル xxxx.xml log4net によるログ出力に関する各種の設定を定義する。任意(app.config のパラメタで指定可能)。 必須(ログ使用)
SQL定義ファイル xxxxx.sql アプリケーションの実行する静的パラメタライズド クエリを定義するファイル。任意(app.config のパラメタで指定可能)。 必須(DB アプリ) 開発者編
xxxxx.xml アプリケーションの実行する動的パラメタライズド クエリを定義するファイル。任意(app.config のパラメタで指定可能)。 動的パラメタライズド クエリ編
共有情報 XML定義ファイル SPDefinition.xml ※[ファイル名]は定義で変更可能 共有情報取得機能で使用する。任意(app.config のパラメタで指定可能)。 任意 各機能説明編
メッセージ XML定義ファイル MSGDefinition.xml メッセージ取得機能で使用する。任意(app.config のパラメタで指定可能)。 任意 各機能説明編
トランザクション XML定義ファイル TCDefinition.xml トランザクション制御機能で使用する。任意(app.config のパラメタで指定可能)。 任意 各機能説明編
画面遷移 XML定義ファイル SCDefinition.xml 画面遷移制御機能で使用する。任意(app.config のパラメタで指定可能)。 任意 各機能説明編
通信制御 XML定義ファイル TMInProcessDefinition.xml 通信制御機能で、サービス論理名称から、呼び出す DLL 名、クラス名を特定する。任意(app.config のパラメタで指定可能)。 任意 各機能説明編
TMProtocolDefinition.xml 通信制御機能で、サービス論理名称から、呼び出すプロトコルを特定する。任意(app.config のパラメタで指定可能)。 各機能説明編

4. テスト・サンプル プログラムのセットアップ

本章では、テスト・サンプル プログラムのセットアップ方法について説明します。

4.1 テスト・サンプル プログラム一覧

提供した一式(~\root フォルダ)の中にある、テスト プログラム、サンプル プログラムについては、付属の「内容物一覧(Content_list.xlsx)」の「サンプル・プロジェクト一覧」シートを参照してください。

4.2 セットアップ手順

以下に、テスト プログラム、サンプル プログラムを実行させるまでのセットアップ手順を示します。ここの具体的な手順を確認・理解するには、付属のチュートリアルを消化すると良いでしょう。

  1. 初めに必要な開発環境を整える。 通常、Visual Studio と利用するデータプロバイダのインストールなどが必要になります。

  2. データベースを構築する。

    • テスト プログラム、サンプル プログラム用のテーブルを作成する。テスト プログラム、サンプル プログラムは、SQL Server 2000 付属の NorthWind データベースの Shippers テーブルに対する CRUD データ アクセス処理を実行します [6]。このため、SQL Server 2005-2016 や、Oracle データベースなどの他のデータベースを対象とする場合であれば、Shippers テーブルを新規作成する必要があります。
      • <DDL 系 SQL ファイル(Shippers テーブルの作成)> … SQL Server:C:\files\resource\Sql\sqlserver、Oracle:…\oracle、DB2:…\db2、HiRDB:…\hirdb、MySQL:…\mysql、PostgreSQL:…\pstgrs。上記フォルダにある「TestTable.txt」の DDL 系 SQL を実行して Shippers テーブルを作成する。
    • テスト プログラム、サンプル プログラム用のクエリを準備する。DML 系 SQL には、対応するデータプロバイダに合わせて「SQL Server」、「Oracle」、「DB2」、「HiRDB」、「MySQL」、「PostgreSQL」用のものがあります。
      • <DML 系 SQL ファイル> … 上記と同じ各フォルダ。上記フォルダにある DML 系 SQL ファイルを「C:\files\resource\Sql」フォルダに移動(もしくはコピー)する。自動生成 Dao が使用するものがある場合は、これも移動する。
  3. IIS 配下に配置する。 最新バージョンでは、IIS ではなく「開発用 Web サーバ」を標準の構成としました。このため標準通り「開発用 Web サーバ」を使用する場合、以下(4)の手順は不要となります。

    • フォルダのアクセス許可を設定する。「C:\Inetpub\wwwroot」フォルダ以下のアクセス許可設定と合わせて、フォルダのアクセス許可を設定する必要があります。IIS 配下に配置すべき Web アプリケーションのフォルダには、サービス インターフェイス(~\Frameworks\Infrastructure\ServiceInterface\ASPNETWebService)、ASP.NET Web アプリケーション(~\Samples\WebApp_sample\ProjectX_sample)、ASP.NET Mobile Web アプリケーション(~\Samples\WebApp_sample\ProjectXM_sample)があります [7]。アクセス許可の設定は、上記フォルダを一度「C:\Inetpub\wwwroot」以下に「コピー」し、その後「移動」させる(同一ドライブ内でのみ可能)方法などで行います。
    • Web アプリケーション フォルダを IIS の仮想ディレクトリに設定する [8][9]。仮想ディレクトリのエイリアスはフォルダ名と同じ名称で設定する(サービス インターフェイス:ASPNETWebService、ASP.NET Web:ProjectX_sample、ASP.NET Mobile Web:ProjectXM_sample)。
    • IIS の管理コンソールから、仮想ディレクトリがアプリケーションとして作成されており、[ASP.NET] タブでランタイムとして ASP.NET のバージョン 2.0 or 4.0 が有効になっていることを確認する。
    • IIS 設定に戻す場合は、(既存の)「Web サイト」をローカル IIS から開き sln ファイルを上書きする。
  4. アップグレードする場合。 VS2010 プロジェクトを VS2012-2015.etc プロジェクトにアップグレードする場合は、対象の sln ファイルをアップグレード先の VS で開いて Visual Studio 変換ウィザードにより各プロジェクトをアップグレードします。アップグレード後は、必要に応じて .NET のバージョン、ASP.NET のバージョンを適切なものに変更しておきます。

  5. ビルド前に確認すること。 実際にはビルドしながらの作業となるので、(6)の手順を行き来しながらの作業となります。使用しないサンプルやツールがあれば、この時点で削除しておくと良いでしょう。

    • 参照設定を確認する [10]。必要なコンポーネントへの「参照設定」を追加し、不要なコンポーネントへの「参照設定」を削除(利用不可能なプロジェクト・クラス・コードブロックを削除 [11][12][13][14])、または適切なバージョンに変更してから、ソリューションをリビルドする。なお、DPQuery_Tool・DaoGen_Tool のツールはビルドに全てのデータ プロバイダと対応する Dam を必要としますが、「参照設定」を削除する場合、「DummyDaps.cs」ファイルからダミー型のコメントアウトを外すことでビルドを通すことができます。
    • Web サイトでは web.config ファイルを確認する [15]。
  6. プロジェクトをビルドする。 「~\root\programs\(C# or VB)」直下のバッチ ファイルを先頭に付与された番号順にダブル クリックして、プロジェクトをビルドします(コマンド プロンプトから実行する場合は、カレント ディレクトリをバッチ ファイルの存在する位置に cd しておくこと)。ビルド バッチにはビルドのシーケンスが細かく書かれているため、番号順に一読し内容を確認しておきます [16][17]。

    • devenv.exe へのパス … ビルド バッチ中の devenv.exe へのパスを VS2010 → VS2012-2015 へ切替える必要があります(64bit 環境では Program Files(x86) に注意)。
    • Debug、Release ビルド … 提供のビルド バッチはデフォルトで Debug ビルド。Release ビルドで実行する場合はビルド バッチに「/Release」オプションを付与します。
    • ビルド オプション … 環境によってはプラットフォーム ターゲット(Any CPU、x86、x64 など)を見直す必要があります。
    • 電子署名 … ClickOnce や XBAP では、署名に使用する電子証明書のインポート時にパスワードを要求される場合、必要であれば「seigi」を入力してビルドします。
  7. 実行前の設定確認。 ビルドが正常に完了したら、デバッグ実行を開始する前に、以下の設定を行います。

    • 接続文字列の設定(web.config の connectionStrings セクション)を当該環境に合わせる。
    • 偽装の設定(web.config の identity セクション)を削除(コメントアウト)するか、当該環境に合わせる。
    • 「ASP.NET 状態サービス」を起動する。デフォルトではセッション モードが「StateServer」なので、「aspnet_state-stat.bat」を実行して起動しておく(「InProc」に変更しても良いが、「StateServer」の設定を推奨)。
    • スタート ページを「~/Aspx/start/menu.aspx」に設定して、Web サイトのデバッグを開始する。
  8. エラーになる場合。 フレームワーク、テスト・サンプル プログラムがエラーになる場合は、次の可能性を確認します。

    • IIS 上で実行している場合、メタベースに対するアクセス許可が無い場合がある(aspnet_regiis -i/-u + -i/-ga で解決 [18])。外部ファイルに対するアクセス許可が無い場合がある(C:\files\resource\Log には ASPNET アカウントの読み書き権限、Sqltestxml には読み取り権限の ACL が必要)。
    • web.config、app.config の設定が当該環境に合っていない場合がある [19]。
    • データ プロバイダ(DB クライアント)、DB サーバの環境設定が間違っている場合がある。特に sqlClient 以外のデータプロバイダ(ODP.NET [20]、DB2.NET などのサードパーティ製)を使用する場合は要注意。フレームワーク経由でなく、素のデータ プロバイダで DB に接続できるか確認して問題を切り分けると良いでしょう。

5. 新規 Web サイトのセットアップ

以下に、新規 Web サイトをセットアップするための設定手順を示します。

  1. IIS を使用する場合。 新規 Web サイト(HTTP)を作成する場合にのみ必要となる手順です。

    • アクセス許可の設定(「コピー + 移動」による方法。同一ドライブ内でのみ可能)。
    • 仮想ディレクトリの設定(IIS の管理コンソールから)。
    • ASP.NET のバージョンを設定([ASP.NET] タブでランタイム 2.0 or 4.0 を有効に)。
    • VS の Web サイトを作成([ファイル]⇒[新規作成]⇒[Web サイト]、[ASP.NET Web サイト]テンプレート、[場所]で「HTTP」を選択し、作成したローカル IIS の仮想ディレクトリを選択)。
  2. IIS を使用しない場合。 新規 Web サイト(ファイル システム)を作成する場合にのみ必要となる手順です([場所]で「ファイル システム」を選択)。

  3. Infrastructure を適切な相対パス位置にコピー。 必要に応じて「~\root\programs\(C# or VB)\Frameworks\Infrastructure」フォルダを、新規 Web サイトのフォルダからの適切な相対パス位置にコピーします。IIS を使用する場合、サービス インターフェイス基盤(ASPNETWebService)の仮想ディレクトリを作成します。

  4. Web サイトから、必要なファイルをコピー。 テスト・サンプル プログラムの Web サイト(ProjectX_sample、ProjectXM_sample)から、新規 Web サイトに必要なファイルをコピーします。

  5. 必要なファイルは以下の通り(フォルダ構成は、そのままとする)。

表 5 新規 Web サイトに必要なファイル

項番 フォルダ ファイル
1 ルート フォルダ web.config、app.config、Global.asax
2 CSS style.css
3 Framework
3-1 Framework/Img information.ico、warning.ico、error.ico [21]、question.ico [22]、loading.gif [23]
3-2 Framework/Js common.js [24]、common(4.0).js [25]、ie_key_event.js [26]
4 Aspx
4-1 Aspx/Common ErrorScreen.aspx、ErrorScreen.aspx.cs [27]
4-2 Aspx/FrameWork DialogFrame.htm、DialogLoader.htm [28]、myOKMessageDialog.aspx(.cs) [29]、myYesNoMessageDialog.aspx(.cs) [30]
4-3 Aspx/start menu.aspx(.cs) [31]、login.aspx(.cs) [32]、logout.aspx(.cs) [33]
5 Bin 参照設定している or リフレクションで使用するアセンブリ
  • ※ 網掛けは、ASP.NET Mobile Web アプリケーションでは不要なもの。
  • ※ ASP.NET 4.0 の場合、common.js ファイルの差し替えが必要なので注意する。
  1. 必要に応じて、リネーム(文字列置換)を行う。 ファイルの検索・一括置換ソフト(Grep and Replace [34] など)を使用すると良いでしょう。Infrastructure 中のファイルに含まれる「Touryo」名前空間の文字列や、旧 Web サイト名(ProjectX_sample or ProjectXM_sample)の仮想パス中の文字列を、新規 Web サイト名に合わせリネームします。

  2. プロジェクトをリビルドする。 リネーム後はリビルド、Bin フォルダの更新が必要になります(開発時はデバッグ ビルド、本番時はリリース ビルドを参照設定。必要に応じ GAC 格納)。

  3. 新規 Web サイトのデバッグ。 スタート ページを「~/Aspx/start/menu.aspx」に設定してデバッグを開始し、menu.aspx まで表示できることを確認したら、以降の手順に従って開発に着手します。

6. 共通 API について

Open 棟梁の全利用者は、Open 棟梁の提供する共通的に利用可能な API について把握しておく必要があります。詳細については付属の、

  • 「各機能編」1章:「共通API」
  • 機能一覧(Content_list.xlsx)
  • API リファレンス マニュアル(1a_API_Reference_Manual.zip)

を参照してください。

7. 制限事項について

以下、制限事項を纏めます。それぞれの機能については「各機能編」を参照してください。

  • クロスブラウザ対応
    • 「キーイベント抑止機能(クライアント側の JS)」… IE 限定の機能とする。
    • 「二重送信抑止機能」… IE6.0、Sleipnir に於いて、href の __doPostBack() で、二重送信の抑止ができない。
  • セッション
    • Open 棟梁の P 層フレームワークを使用する場合、必ずセッションを使用する。
    • 「Session タイムアウト検出機能」を使用している場合は、BaseController.FxSessionAbandon() メソッドを使用し、Session タイムアウト検出用 Cookie を削除したうえで、セッションの解放を行う。ただし、FxSessionAbandon() を実行したのちに、同一画面でのポストバックを実行すると「不正操作防止機能」によるエラーが発生するため、セッション解放後は、メニュー画面等へ Get 画面で遷移すること。
  • その他
    • 「ベターユース・FAQ編」を参照。

脚注

  1. ASP.NET Mobile Web 開発では、マスタ ページ(コンテンツ プレイス ホルダー)は存在せず、コントロールは Command コントロール、イベントは Click イベントのみとなる。
  2. 必要であれば、「メッセージ取得機能」を使用する。
  3. 必要であれば、「メッセージ取得機能」を使用する。
  4. 必要であれば、「メッセージ取得機能」を使用する。
  5. 本ドキュメントでは、app.config を、appSettings セクションを定義するファイルと定義する。ASP.NET Web アプリケーションの場合、web.config から参照される別ファイルを指す(<appSettings file="app.config">)。Windows フォーム/WPF/WPF ブラウザ/コンソール アプリケーションの場合は、アプリケーション構成ファイル([実行プログラム名].exe.config)を作成するための app.config を指す。
  6. 一部、NorthWind データベース中の Shippers テーブル以外のテーブル、各 DB のサンプル スキーマ中のテーブル、独自のテーブルを使用するテスト・サンプル プログラムも存在する。
  7. VB の場合、~\root\programs\VB\Frameworks\Infrastructure\~ 以下にプロジェクトが存在しない場合、C# 版のアセンブリを参照設定する。
  8. 「管理ツール」中の「インターネット インフォメーション サービス」に該当する。
  9. ウィザード中の「ASP などのスクリプトを実行する」チェックボックスをオンにした場合、自動的に IIS のアプリケーションとして設定される。
  10. 主に、ODP.NET、DB2.NET などのデータ プロバイダや対応する Dam などへの参照設定(再頒布に問題があるため、再頒布しないデータ プロバイダと Dam は削除が必要)。
  11. Mobile Web Form など、アップグレード先の .NET でサポートされなくなるものもある。
  12. System.Web.Extensions など、アップグレード先の .NET 用のバージョンに変更する必要があるものがある。
  13. System.Xaml.dll など、アップグレード先の .NET で分割された DLL がある場合、必要に応じて参照設定を追加する必要がある。
  14. 使用しないデータ プロバイダや対応する Dam、Mobile Web Form を削除した場合、関連クラス(MyBaseLogic、MyFcBaseLogic ほか)中のコードブロックをコメントアウトする。
  15. web.config 設定の詳細は「纏め者編」を参照のこと。
  16. ~\root\programs\C#\Frameworks\Infrastructure\ 以下の各プロジェクト(ServiceInterface を除く)、~\root\programs\C#\Samples\WS_sample\ 以下の WSIFType_sample、WSServer_sample のプロジェクト。
  17. ~\Frameworks\Infrastructure\ServiceInterface\ASPNETWebService~\Samples\WebApp_sample\ProjectX_sample~\Samples\WebApp_sample\ProjectXM_sample の各 Web サイト。
  18. ASP.NET IIS 登録ツール(Aspnet_regiis.exe): http://msdn.microsoft.com/ja-jp/library/k6h9cz8h.aspx
  19. app.config 設定の詳細は「纏め者編」を参照のこと。
  20. 11g Release 1 以降の ODAC には、ODP.NET と Instant Client が同梱されている。
  21. OK メッセージ ダイアログ用のアイコン。
  22. Yes・No メッセージ ダイアログ用のアイコン。
  23. レスポンス待ちアイコン。
  24. ダイアログ表示、モードレス画面表示 .etc の機能を実装した JavaScript ファイル。
  25. common.js ファイルの ASP.NET4.0 対応版(Form の名称の変更に伴う修正)。common.js にリネームして使用するか、マスタページ側の JS リンクを書きかえる。
  26. IE 限定のキーイベント抑止機能を実装した JavaScript ファイル。
  27. 開発用エラー画面。
  28. モーダルダイアログ表示。
  29. OK メッセージ ダイアログ。
  30. Yes・No メッセージ ダイアログ。
  31. メニュー画面。
  32. ログイン画面(Forms 認証に対応)。
  33. ログアウト画面(Forms 認証に対応)。
  34. Vector > ユーティリティ > テキストファイル用 > テキスト変換 > ファイルの検索・一括置換 Grep and Replace: http://www.vector.co.jp/soft/win95/util/se205255.html

-以上-

Clone this wiki locally