サーバースクリプト
サーバースクリプトについて、公式マニュアルに書かれていない仕様や挙動を、プリザンターのソースコードと実際の動作をもとにまとめたセクションです。context に入る値、context.AddResponse の全 Method、日付・タイムゾーン、httpClient やタイムアウトの落とし穴、$ps.file の制限、拡張サーバースクリプトやバックグラウンドサーバースクリプトの使い方、本体を改修して言語やメソッドを拡張する方法を扱います。
- サーバースクリプトの内部構造 — 保存場所、スクリプトの集め方と結合、
//Include:・共有スクリプト・デバッグ、見えるオブジェクト、フォルダで動く条件 - 操作別に見るサーバースクリプトと拡張 SQL の実行順 — 一覧・編集・保存・フォーム送信を起点に、各条件と SQL の前後関係を図で追う
- context.Condition と context.Action — 実行条件と実行元の画面・操作を判定する値の一覧と、その値の出どころ、
context.QueryStringsが取得できる条件 - model の内部構造と反映条件 — 値の型・権限・保存との関係、実行条件別の対象、行の CSS・データ
- context.AddResponse の Method と引数 — マニュアル未記載のものを含む全 Method の動作と引数の指定例
- 日付の扱い — 取得した日付が UTC になる理由と、JST にまとめて変換する方法
- view.OnSelectingWhere とフィルター — 拡張 SQL へのパラメータの渡し方、多数の IN 条件、
BeforeOpeningPageからgridrowsにフィルターを渡す方法 - セクション(見出し)の制御 —
siteSettings.Sectionsの隠しプロパティと、自動ポストバック時の開閉 - columns の内部構造と適用範囲 — 行全体と項目単位、ページと行の実行差、プロパティごとの反映条件と制約
- $ps.file と添付ファイル — 添付ファイル項目のパース、
copyFile、ネットワーク共有を操作できない理由と代替構成 - httpClient と外部 API 呼び出しの落とし穴 —
httpClientの状態共有や multipart 非対応など、外部 API を呼ぶときに詰まりやすい点 - タイムアウト — 同じ条件のスクリプトは結合され、タイムアウトは最大値が適用される
- サーバースクリプトの処理を非同期に実行する — 通常・拡張スクリプトで処理要求を受け付け、バックグラウンドで実行する方法
- バックグラウンドサーバースクリプトの仕組み — Quartz.NET への登録、スケジュールから作られる cron 式、実行時の Context と権限、有効化の条件とログ
- 拡張サーバースクリプトとバックグラウンドサーバースクリプト — 変更履歴を手動・スケジュール実行で自動削除する実装例
- 拡張サーバースクリプトの適用条件 —
Controllers・Actionsの評価ルール(小文字、肯定指定と除外指定を混ぜない)と通常のスクリプトとの違い - C# スクリプト・Python は使えるか — ClearScript(V8)の仕組みと、C# スクリプト・IronPython 対応の試作と設計
- サーバースクリプトのメソッドを拡張する — 本体を改修して
columns.AddChoiceHashを値だけで呼べるようにする例