JSONキー一覧

  1. datasetの値を、validation.jsonのルールでチェックする
  2. チェックした値を、tran.jsonのrequestの同じidのレコードにコピーし、サーバーに送信する
  3. sql.jsonのinputに、requestの値を設定する
  4. sql.jsonの定義からSQLを組み立てて実行し、結果をoutputに受け取る
  5. tran.jsonのresponseに、sql.jsonのoutputの値を設定する
  6. responseの値を、datasetの同じ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
キー説明
idrecord構造体のid(「共通キー」を参照)
defaultlineUI初期表示行数(multilineがyesの場合に有効)
recordrecord構造体
∟{項目名}項目名
 ∟value値(固定値の場合[“XXXX”]、変動の場合[“”])
※共通キー:comment・html・message(status・msg)・multiline
※list系の画面タイプの一覧画面では、画面を表示する前に、ヘッダー項目の値が空にクリアされます。
 このため、valueは項目の構造を示すだけで、初期値にはなりません。
dataset(例:一覧照会(親子テーブル)OrderList)
{
  "comment": "一覧照会(親子テーブル) dataset",
  "html": "Sample/Json/Apps/OrderList",
  "message": {
    "status": "OK",
    "msg": "データを入力して、実行ボタンを押下して下さい。"
  },
  "records": [
    {
      "id": "login",
      "multiline": "no",
      "defaultline": "0",
      "record": {
        "ユーザID": {
          "value": [""]
        },
        "ユーザ名称": {
          "value": [""]
        }
      }
    }
  ]
}
キー説明
modelmodel処理(SQL実行)の有無(yes/no)
idrecord構造体のid(「共通キー」を参照)
recordrecord構造体
∟{項目名}項目名
 ∟value 値(固定値の場合[“XXXX”]、変動の場合[“”])
※共通キー:comment・html・mode・prog・message(status・msg)・multiline・before・after
request(例:一覧照会(親子テーブル)OrderList)
"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": [""]
        }
      }
    }
  ]
}
キー説明
dbnameDB名(haluconf.pyのdef_databaseのキー)。
sqls[]の各要素にも指定でき、その場合は、そのSQLだけ接続先を切り替える
idSQLのid(tran.jsonのresponseや、ほかのSQLのinputから参照する名前)
※共通キー:comment・html・mode・prog・message(status・msg)・before・after
キー説明
typeSQLの種類(select/insert/update/delete/param/nosql/doRun)
check 実行結果の件数によるエラー判定(”not found error”:0件の場合にエラー、”found error”:1件以上の場合にエラー)
errormsg checkでエラーになった場合のメッセージ
freesqlSQL文(自由記述。設定した場合はgenesqlより優先される)
crud freesql・doRunを記述する場合に宣言する、対象テーブルと操作(例:{“受注”: “C”, “受注取込”: “R”}。操作はC・R・U・Dの組み合わせ)。
実行には影響せず、仕様書の自動生成に使用される
genesqlSQL文の自動生成の情報(構造体)
∟distDISTINCTの設定有無(yes/””(空白))
∟fromSQL文のFROM句(JOINする場合は配列で記述。insert・update・deleteでは先頭の要素だけを使用する)
∟whereSQL文のWHERE句
∟orderSQL文のORDER BY句
∟limitSQL文のLIMIT句(”? OFFSET ?” のように指定でき、? にはinputのrecordの記述順に値が設定される)
キー説明
recordrecord構造体
∟{項目名}項目名
 ∟value値
 ∟fieldDBの列名(項目名と同じ場合は省略可)
 ∟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)
キー説明
recordrecord構造体
∟{項目名}項目名
 ∟value値
 ∟fieldDBの列名(項目名と同じ場合は省略可)
 ∟table列が属するテーブル名(別名も可)
 ∟funct関数式(利用する場合)
sql(例:一覧照会(親子テーブル)OrderList)
{
  "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.受注番号)"
          }
        }
      }
    }
  ]
}
キー説明
idレスポンスデータのid(「共通キー」を参照)
recordrecord構造体
∟{項目名}項目名
 ∟value値(固定値の場合 [“XXXX”]、変動の場合 [“”])
 ∟fromtypeデータ取得元の種類(request/sqls。sqlと記述しても同じ)(省略可)
 ∟fromidデータ取得元のid(省略可)
 ∟fromio取得元(input/output。fromtypeがsqlsの場合)(省略可)
 ∟fromnameデータ取得元の項目名(省略可)
※共通キー:comment・multiline・before・after
response(例:一覧照会(親子テーブル)OrderList)
"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": "トータル件数"
        }
      }
    }
  ]
}
キー説明
idrecord構造体のid(「共通キー」を参照)
recordrecord構造体
∟{項目名}項目名
 ∟validation必須設定とデータ型の配列(「validationの設定値」を参照)。
複数指定した場合は、順にすべてチェックされる
 ∟min最小文字数
 ∟max最大文字数
 ∟minbyte最小バイト数
 ∟maxbyte最大バイト数
 ∟format表示の整形指定(「formatの設定例」を参照)(省略可)。
画面の表示だけに使用し、サーバーのチェックには影響しない
※共通キー:comment・html・multiline
設定値説明
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)
※詳細はvalidation.pyおよびhaluvalidation.mixin.jsを参照してください。
設定値説明
yyyySmmSdd日付(yyyy/mm/dd)
money数量(通貨)
※詳細はhaluview.mixin.jsを参照してください。
validation(例:明細一覧登録(子テーブル)OrderDetailListMainte)
{
  "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定義する場所説明
batchStartup起動画面のsql.json バッチ処理を起動する情報(このSQLを定義しない場合、バッチ処理は起動されない)
batchParam起動画面・起動用の定義のsql.jsonバッチ処理に渡すパラメータ(ユーザー情報など)(省略可)
batchKey起動用の定義のsql.json処理の対象のキーを取得するSELECT
batchControll起動用の定義のsql.jsonバッチ管理情報
項目名説明
バッチ処理名ログに出力する処理名
バッチロードパス名起動するバッチ処理のプログラム(Server\BatchLoad の .py)のパス
項目名説明
処理名バッチ管理に記録する処理名
ロードパス名処理用の定義のJSONを配置したディレクトリ
処理モード処理用の定義のtran.jsonのファイル名の前半({処理名}_{処理のトランザクション名})
分割数キーを分割して処理する数
DB名使用するDB名(haluconf.pyのdef_databaseのキー)
※そのほかの項目は、SampleアプリのBatchOrderUploadStart_start_sql.jsonを参照してください。
sql(例:受注データアップロードの起動OrderUpload。batchStartupの部分。抜粋)
{
  "id": "batchStartup",
  "sql": {
    "type": "nosql"
  },
  "input": {
    "multiline": "no",
    "record": {
      "バッチ処理名": {
        "value": ["受注ヘッダ・受注明細データ更新"]
      },
      "バッチロードパス名": {
        "value": ["Sample/Server/BatchLoad/BatchOrderUploadStart.py"]
      }
    }
  }
}
キー説明
excelinfoExcel処理関連情報構造体
∟progyes固定(フレームワークがExcel出力処理を実行する)
∟templateテンプレートのExcelファイル名
∟savefile作成するExcelのファイル名
∟pdfnamePDFの表示名(Sampleでは、ダウンロード時のファイル名(拡張子なし)に使用する)
キー説明
excelinfoExcel処理関連情報構造体
∟beforeExcelのセルに項目を出力する前に呼び出す処理
∟afterExcelのセルに項目を出力した後に呼び出す処理
∟pagecontrol出力する場所
(page_header:ページヘッダー、
 detail:明細、page_footer:ページフッター)
∟outputcontrol出力するページ(all_page:全ページ)
∟templatepageテンプレートのページ
∟pagelines1ページの最大行数(detail の場合)
∟rowposition明細の最初の行(detail の場合)
∟movedown2行目以降の相対行(detail の場合)
キー説明
excelinfoExcelのセルデータ情報構造体
∟typeデータ型(str/int/date など。画像は image)
∟cellセル位置情報構造体
 ∟column列位置(例:C)
 ∟row行位置(例:3。detailの場合は空)
response(例:受注一覧表(ヘッダー・明細)OrderListPrint。抜粋)
"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": ""
            }
          }
        }
      }
    }
  ]
}