このページでは、画面・バッチ・帳票の各JSON(dataset.json・validation.json・tran.json・sql.json)に記述するキーを説明します。
JSONの配置と役割は「HaluProject詳細>Json」、データの受け渡しは「データ移送の仕組み」を参照してください。
ファイル間の参照関係

1つの画面の処理では、4種類のJSONが次の順に参照されます。
- datasetの値を、validation.jsonのルールでチェックする
- チェックした値を、tran.jsonのrequestの同じidのレコードにコピーし、サーバーに送信する
- sql.jsonのinputに、requestの値を設定する
- sql.jsonの定義からSQLを組み立てて実行し、結果をoutputに受け取る
- tran.jsonのresponseに、sql.jsonのoutputの値を設定する
- responseの値を、datasetの同じidのレコードに反映し、画面に表示する
dataset.json・validation.json・tran.jsonは、レコードのid(records[].id)で対応づけられます。
sql.jsonは、fromidで、requestや別のSQLを参照します。
詳しくは「共通キー」を参照してください。
共通キー
複数のJSONで共通して使用するキーです。
records[].id
レコード(record構造体)の名前です。
dataset.json・validation.json・tran.json(request・response)で同じidを使用し、どのレコードのデータかを対応づけます。
例:header(画面上部の項目・検索条件)、detail(明細の一覧)、login(ログインユーザーの情報)
※sql.jsonのsqls[].idは、SQLごとに付ける名前です。tran.jsonのresponseや、ほかのSQLのinputは、fromidにこのidを指定して値を設定します。
そのほかの共通キー
| キー | 説明 | 使用するファイル |
| comment | このファイルの説明(画面名+処理内容)。 records・sqlsの各要素にも記述可(処理には影響しない) | すべて |
| html | このファイルのあるディレクトリ (例: Sample/Json/Apps/OrderList) | すべて |
| mode | 処理モード。ファイル名の{モード}と同じ値(例:select) | tran.json・sql.json |
| prog | 画面ごとのPythonの処理の呼び出しの要否(yes/no)。 requestはcontroller.py、responseはview.py、sql.jsonはmodel.pyを呼び出す | tran.json・sql.json |
| message | メッセージ情報 | dataset.json・tran.json・sql.json |
| ∟status | 状態(OK/ERROR) | |
| ∟msg | メッセージ | |
| multiline | データ行数が複数になる可能性の有無(yes/no) | dataset.json・validation.json ・tran.json・sql.json |
| before | レコード(sql.json はSQL)の処理の前に呼び出すメソッド。 呼び出し先は prog と同じ | tran.json・sql.json |
| after | レコード(sql.json はSQL)の処理の後に呼び出すメソッド。 呼び出し先は prog と同じ | tran.json・sql.json |
dataset.json
画面で使用する、すべてのデータ項目を定義するファイルです。
画面を開いたときに、このファイルをもとにDatasetが作成されます。
検索条件などのデータ項目は、リクエストデータに設定されます。
各処理のあと、レスポンスデータから移送されたデータ項目は、画面が参照し、表示などの処理に使用します。
次の構造体を含みます。
・message(メッセージ情報)
・records(record構造体配列)
| キー | 説明 |
| id | record構造体のid(「共通キー」を参照) |
| defaultline | UI初期表示行数(multilineがyesの場合に有効) |
| record | record構造体 |
| ∟{項目名} | 項目名 |
| ∟value | 値(固定値の場合[“XXXX”]、変動の場合[“”]) |
※list系の画面タイプの一覧画面では、画面を表示する前に、ヘッダー項目の値が空にクリアされます。
このため、
valueは項目の構造を示すだけで、初期値にはなりません。{
"comment": "一覧照会(親子テーブル) dataset",
"html": "Sample/Json/Apps/OrderList",
"message": {
"status": "OK",
"msg": "データを入力して、実行ボタンを押下して下さい。"
},
"records": [
{
"id": "login",
"multiline": "no",
"defaultline": "0",
"record": {
"ユーザID": {
"value": [""]
},
"ユーザ名称": {
"value": [""]
}
}
}
]
}tran.json(request)
dataset.jsonの各項目から、tran.jsonのrequest内の各項目へデータを移送したものです。
データの設定後、リクエストデータとして画面からサーバーへ送信されます。
次の構造体を含みます。
・message(メッセージ情報)
・records(record構造体配列)
| キー | 説明 |
| model | model処理(SQL実行)の有無(yes/no) |
| id | record構造体のid(「共通キー」を参照) |
| record | record構造体 |
| ∟{項目名} | 項目名 |
| ∟value | 値(固定値の場合[“XXXX”]、変動の場合[“”]) |
"request": {
"comment": "一覧照会(親子テーブル) 照会処理 リクエストデータ",
"html" : "Sample/Json/Apps/OrderList",
"mode": "select",
"prog": "no",
"model": "yes",
"message": {
"status": "OK",
"msg": ""
},
"records": [
{
"id": "header",
"before": "",
"after": "",
"multiline": "no",
"record": {
"ページライン数": {
"value": [""]
},
"カレントページ": {
"value": [""]
},
"検索顧客ID": {
"value": [""]
},
"検索顧客氏名": {
"value": [""]
},
"検索受注日カラ": {
"value": [""]
},
"検索受注日マデ": {
"value": [""]
}
}
}
]
}sql.json
SQLの実行に必要な情報と、実行結果の情報を定義するファイルです。
次の構造体を含みます。
・message(メッセージ情報)
・sqls(SQL情報構造体配列。sql構造体、input構造体、output構造体を含む)
| キー | 説明 |
| dbname | DB名(haluconf.pyのdef_databaseのキー)。sqls[]の各要素にも指定でき、その場合は、そのSQLだけ接続先を切り替える |
| id | SQLのid(tran.jsonのresponseや、ほかのSQLのinputから参照する名前) |
sql(SQL文作成情報構造体)
| キー | 説明 |
| type | SQLの種類(select/insert/update/delete/param/nosql/doRun) |
| check | 実行結果の件数によるエラー判定(”not found error”:0件の場合にエラー、”found error”:1件以上の場合にエラー) |
| errormsg | checkでエラーになった場合のメッセージ |
| freesql | SQL文(自由記述。設定した場合はgenesqlより優先される) |
| crud | freesql・doRunを記述する場合に宣言する、対象テーブルと操作(例:{“受注”: “C”, “受注取込”: “R”}。操作はC・R・U・Dの組み合わせ)。 実行には影響せず、仕様書の自動生成に使用される |
| genesql | SQL文の自動生成の情報(構造体) |
| ∟dist | DISTINCTの設定有無(yes/””(空白)) |
| ∟from | SQL文のFROM句(JOINする場合は配列で記述。insert・update・deleteでは先頭の要素だけを使用する) |
| ∟where | SQL文のWHERE句 |
| ∟order | SQL文のORDER BY句 |
| ∟limit | SQL文のLIMIT句(”? OFFSET ?” のように指定でき、? にはinputのrecordの記述順に値が設定される) |
input(input情報構造体)
| キー | 説明 |
| record | record構造体 |
| ∟{項目名} | 項目名 |
| ∟value | 値 |
| ∟field | DBの列名(項目名と同じ場合は省略可) |
| ∟fromtype | データ取得元の種類(request/sqls。sqlと記述しても同じ) |
| ∟fromid | データ取得元のid |
| ∟fromio | 取得元(input/output。fromtypeがsqlsの場合) |
| ∟fromname | データ取得元の項目名 |
| ∟fieldtype | 値の埋め込み形式(char:文字型、num:数値型、doublequote:文字型(値内の ‘ を ” に変換)、noquote:クォートなし、like:LIKE検索用) |
| ∟empty | 値が空の場合に ? を置き換える値(例:NULL) |
| ∟funct | ? の代わりに埋め込むSQL関数(例:nextval(‘sequence_name’)、CURRENT_TIMESTAMP) |
output(output情報構造体)
| キー | 説明 |
| record | record構造体 |
| ∟{項目名} | 項目名 |
| ∟value | 値 |
| ∟field | DBの列名(項目名と同じ場合は省略可) |
| ∟table | 列が属するテーブル名(別名も可) |
| ∟funct | 関数式(利用する場合) |
{
"comment": "一覧照会(親子テーブル) 照会処理",
"html": "Sample/Json/Apps/OrderList",
"dbname": "sample",
"mode": "select",
"prog": "yes",
"message": {
"status": "OK",
"msg": "照会処理は正常に終了しました。"
},
"sqls": [
{
"comment": "総件数を取得する",
"id": "total_count",
"before": "setSql_OrderList('header', 'total_count', 'genesql')",
"after": "",
"sql": {
"type": "select",
"freesql": "",
"genesql": {
"dist": "",
"from": [
"受注ヘッダ AS hdr",
"LEFT OUTER JOIN 受注明細 AS dtl ON (hdr.受注番号 = dtl.受注番号)",
"LEFT OUTER JOIN 顧客 AS cst ON (hdr.顧客ID = cst.顧客ID)"
],
"where": "true &&",
"order": ""
}
},
"input": {
"multiline": "no",
"record": {
}
},
"output": {
"multiline": "no",
"record": {
"トータル件数": {
"value": [""],
"funct": "count(distinct hdr.受注番号)"
}
}
}
}
]
}tran.json(response)
sql.jsonのoutputとinput、およびtran.jsonのrequestから、tran.jsonのresponse内の各項目へデータを移送したものです。
データの設定後、レスポンスデータとしてサーバーから画面へ送信されます。
次の構造体を含みます。
・message(メッセージ情報)
・records(record構造体配列を含むデータ情報)
※共通キー:comment・html・mode・prog・message(status・msg)
records(record構造体配列を含むデータ情報)
| キー | 説明 |
| id | レスポンスデータのid(「共通キー」を参照) |
| record | record構造体 |
| ∟{項目名} | 項目名 |
| ∟value | 値(固定値の場合 [“XXXX”]、変動の場合 [“”]) |
| ∟fromtype | データ取得元の種類(request/sqls。sqlと記述しても同じ)(省略可) |
| ∟fromid | データ取得元のid(省略可) |
| ∟fromio | 取得元(input/output。fromtypeがsqlsの場合)(省略可) |
| ∟fromname | データ取得元の項目名(省略可) |
"response": {
"comment": "一覧照会(親子テーブル) 照会処理 レスポンスデータ",
"html" : "Sample/Json/Apps/OrderList",
"mode": "select",
"prog": "yes",
"message": {
"status": "OK",
"msg": "照会処理は正常に終了しました。"
},
"records": [
{
"comment": "テーブルページング情報(行数・カレント行・総ページ数・総件数)getMaxPageCount:総ページ数を計算する。",
"id": "header",
"before": "",
"after": "getMaxPageCountOfOrderList('header')",
"multiline": "no",
"record": {
"ページライン数": {
"value": [""],
"fromtype": "request",
"fromid": "header",
"fromio": "",
"fromname": "ページライン数"
},
"カレントページ": {
"value": ["1"],
"fromtype": "request",
"fromid": "header",
"fromio": "",
"fromname": "カレントページ"
},
"最大ページ": {
"value": [""]
},
"トータル件数": {
"value": [""],
"fromtype": "sqls",
"fromid": "total_count",
"fromio": "output",
"fromname": "トータル件数"
}
}
}
]
}validation.json
tran.jsonのrequestのチェック時に使用するvalidation情報です。
チェックは次の2つのタイミングで実行されます。
・画面での項目入力直後
・サーバーで、リクエストデータを受信した直後
次の構造体を含みます。
・records(record構造体配列を含むデータ情報)
| キー | 説明 |
| id | record構造体のid(「共通キー」を参照) |
| record | record構造体 |
| ∟{項目名} | 項目名 |
| ∟validation | 必須設定とデータ型の配列(「validationの設定値」を参照)。 複数指定した場合は、順にすべてチェックされる |
| ∟min | 最小文字数 |
| ∟max | 最大文字数 |
| ∟minbyte | 最小バイト数 |
| ∟maxbyte | 最大バイト数 |
| ∟format | 表示の整形指定(「formatの設定例」を参照)(省略可)。 画面の表示だけに使用し、サーバーのチェックには影響しない |
validationの設定値
| 設定値 | 説明 |
| required | 必須(空文字はエラー) |
| nonrequired | 省略可(常にOK) |
| free | 制限なし |
| integerP | 符号なし整数(0以上の整数) |
| integer | 符号付き整数(+・- 可) |
| decimals | 小数(符号なし) |
| decimalS | 符号付き小数(+・- 可) |
| alphabet | 英字のみ(大文字・小文字) |
| alphabetS | 英字(小文字のみ) |
| alphabetB | 英字(大文字のみ) |
| alphanum | 英数字(大文字・小文字・数字) |
| alphanumspace | 英数字+半角スペース |
| alphanumS | 英数字(小文字+数字) |
| alphanumB | 英数字(大文字+数字) |
| hiragana | ひらがな(ー・全角スペースを含む) |
| katakana | カタカナ(、。ー・を含む) |
| katakanaH | 半角カタカナ |
| halfchar | 半角文字(半角カタカナ+ASCII) |
| zenkaku | 全角文字(現在は常にOK。将来の拡張用) |
| kanji | 漢字(現在は常にOK。将来の拡張用) |
| yyyymmdd | 日付(8桁。例:20240101) |
| yyyysmmsdd | 日付(スラッシュ区切り10桁。例:2024/01/01) |
| yyyyhmmhdd | 日付(ハイフン区切り10桁。例:2024-01-01) |
| yyyymm | 年月(6桁。例:202401) |
| yyyysmm | 年月(スラッシュ区切り7桁。例:2024/01) |
| yyyyhmm | 年月(ハイフン区切り7桁。例:2024-01) |
| hhmm | 時刻(4桁。例:0930) |
formatの設定例
| 設定値 | 説明 |
| yyyySmmSdd | 日付(yyyy/mm/dd) |
| money | 数量(通貨) |
{
"comment": "明細一覧登録(子テーブル) validation",
"html": "Sample/Json/Apps/OrderDetailListMainte",
"records": [
{
"id": "detail",
"multiline": "yes",
"record": {
"受注数量": {
"validation": ["required", "integerP"],
"min": "1",
"max": "11",
"format": "money"
},
"納期日": {
"validation": ["nonrequired", "yyyyhmmhdd"],
"min": "10",
"max": "10"
}
}
}
]
}バッチ処理のキー
バッチ処理では、次のidのSQLを、sql.jsonに定義します。
各SQLの記述方法は、通常のsql.jsonと同じです。
| id | 定義する場所 | 説明 |
| batchStartup | 起動画面のsql.json | バッチ処理を起動する情報(このSQLを定義しない場合、バッチ処理は起動されない) |
| batchParam | 起動画面・起動用の定義のsql.json | バッチ処理に渡すパラメータ(ユーザー情報など)(省略可) |
| batchKey | 起動用の定義のsql.json | 処理の対象のキーを取得するSELECT |
| batchControll | 起動用の定義のsql.json | バッチ管理情報 |
batchStartupの項目
| 項目名 | 説明 |
| バッチ処理名 | ログに出力する処理名 |
| バッチロードパス名 | 起動するバッチ処理のプログラム(Server\BatchLoad の .py)のパス |
batchControllの主な項目
| 項目名 | 説明 |
| 処理名 | バッチ管理に記録する処理名 |
| ロードパス名 | 処理用の定義のJSONを配置したディレクトリ |
| 処理モード | 処理用の定義のtran.jsonのファイル名の前半({処理名}_{処理のトランザクション名}) |
| 分割数 | キーを分割して処理する数 |
| DB名 | 使用するDB名(haluconf.pyのdef_databaseのキー) |
処理用の定義のtran.jsonのrequestには、batchParam・batchKeyのレコードを定義します。
処理用の定義のsql.jsonで値を設定するときは、fromtypeにrequest、fromidにbatchKey(またはbatchParam)を指定します。
{
"id": "batchStartup",
"sql": {
"type": "nosql"
},
"input": {
"multiline": "no",
"record": {
"バッチ処理名": {
"value": ["受注ヘッダ・受注明細データ更新"]
},
"バッチロードパス名": {
"value": ["Sample/Server/BatchLoad/BatchOrderUploadStart.py"]
}
}
}
}帳票出力のキー
帳票出力処理の場合、tran.jsonのresponseに、画面表示で使用する内容に加えて次を設定します。
| キー | 説明 |
| excelinfo | Excel処理関連情報構造体 |
| ∟prog | yes固定(フレームワークがExcel出力処理を実行する) |
| ∟template | テンプレートのExcelファイル名 |
| ∟savefile | 作成するExcelのファイル名 |
| ∟pdfname | PDFの表示名(Sampleでは、ダウンロード時のファイル名(拡張子なし)に使用する) |
records(records構造体)
| キー | 説明 |
| excelinfo | Excel処理関連情報構造体 |
| ∟before | Excelのセルに項目を出力する前に呼び出す処理 |
| ∟after | Excelのセルに項目を出力した後に呼び出す処理 |
| ∟pagecontrol | 出力する場所 (page_header:ページヘッダー、 detail:明細、page_footer:ページフッター) |
| ∟outputcontrol | 出力するページ(all_page:全ページ) |
| ∟templatepage | テンプレートのページ |
| ∟pagelines | 1ページの最大行数(detail の場合) |
| ∟rowposition | 明細の最初の行(detail の場合) |
| ∟movedown | 2行目以降の相対行(detail の場合) |
record(record構造体)
| キー | 説明 |
| excelinfo | Excelのセルデータ情報構造体 |
| ∟type | データ型(str/int/date など。画像は image) |
| ∟cell | セル位置情報構造体 |
| ∟column | 列位置(例:C) |
| ∟row | 行位置(例:3。detailの場合は空) |
"response": {
"comment": "受注一覧表(HM)帳票処理 レスポンスデータ",
"html" : "Sample/Json/Apps/OrderListPrint",
"mode": "printHM",
"prog": "no",
"excelinfo": {
"prog": "yes",
"template": "OrderListPrint_printHM.xlsx",
"savefile": "OrderListPrint_printHM.xlsx",
"pdfname": "受注一覧表(HM)"
},
"records": [
{
"comment": "受注明細",
"id": "detail",
"multiline": "yes",
"excelinfo": {
"before": "",
"after": "",
"pagecontrol": "detail",
"outputcontrol": "all_page",
"pagelines": "10",
"rowposition": "9",
"movedown": "1"
},
"record": {
"商品名称": {
"value": [""],
"excelinfo": {
"type": "str",
"cell": {
"column": "B",
"row": ""
}
}
}
}
}
]
}