IndexCreator によるサイト・選択肢の SQL View
IndexCreator v0.3.0(最新版)は、サイト一覧と選択肢マスタの SQL View を作れます。View の機能は v0.1.0 から使え、生成規則は v0.3.0 まで変わっていません(変更履歴・対応表)。索引の操作とは別のコマンドで実行し、索引の最小件数に関係なく対象サイトから計画します。接続は 導入と接続設定 と共通です。
プリザンターの権限判定は行いません
SQL View は DB の格納値を参照する仕組みです。プリザンターのユーザー・レコード権限は判定せず、保存ビューのフィルタ・並べ替えや画面の表示書式も再現しません。利用者と連携処理の DB 参照権限を別途設定してください。
計画と適用のコマンド
| 生成する View | 計画のみ | 適用 |
|---|---|---|
| サイト一覧 | views | _views / views-apply |
| 選択肢マスタ | choice-lists | _choice-lists / views-choices-apply |
適用時は計画を表示して yes の入力を求めます。/y は確認省略、/c は確認のみ、/output は計画 SQL の保存です。View の作成・変更権限が必要です。
dotnet VehicleVision.PleasanterTools.IndexCreator.dll views /output views-plan.sql
dotnet VehicleVision.PleasanterTools.IndexCreator.dll _views
dotnet VehicleVision.PleasanterTools.IndexCreator.dll choice-lists /output choices-plan.sql
dotnet VehicleVision.PleasanterTools.IndexCreator.dll _choice-listsサイト一覧の View
Results・Issues・Wikis のサイトごとに、GridColumns の順序で列を投影します。名前は View_vvplic_{ReferenceType}_{SiteId}_{SiteName} です。例えば View_vvplic_Results_100_案件 になります。サイト名は Sites.Title を使い、記号・空白を _ にまとめ、UTF-8 の63バイト以内に収まるよう名前部分を短縮します。
一覧の表示列が省略されている場合は、/p で指定した本体の列定義から既定列を読みます。Title と TitleBody は Items のタイトルを返します。
| 指定 | 列名 |
|---|---|
/names label | 表示名。GridLabelText → LabelText → 本体の列定義 → 物理列名の順。既定値 |
/names column | ResultId・ClassA・NumA などの ColumnName |
同じ表示名がある場合は物理列名を付記します。column モードで GridColumns に同じ列が複数ある場合は停止します。列名を変更すると連携先の SQL も影響を受けるため、計画・適用で同じモードを使い、運用中は固定してください。
dotnet VehicleVision.PleasanterTools.IndexCreator.dll views /names column
dotnet VehicleVision.PleasanterTools.IndexCreator.dll _views /names column値は DB の格納値です。分類の表示テキスト、ユーザー名、リンク先の表示値、添付の表示を再現しません。取得順が必要なら参照する SQL で ORDER BY を指定します。
リンク先項目・計算項目など投影できない列がある場合は、黙って省略せず生成を停止します。Wiki に存在しない Class・Num・Date・Check・Status などを一覧に指定した場合も停止します。
選択肢マスタの View
各項目の ChoicesText を展開し、View_vvplic_ChoiceList_{ReferenceType}_{SiteId}_{ColumnName}_{SiteName} を作ります。例えば View_vvplic_ChoiceList_Results_100_ClassA_案件 です。列は固定で、/names は使えません。
| 列 | 内容 |
|---|---|
Value | 保存する選択肢の値 |
Text | 表示名。空なら値 |
TextMini | 短縮名。空なら表示名 |
例えば、次の固定選択肢を設定した項目を対象にします。
10,受付,受
20,対応中,中
30,完了,完エスケープしたカンマに対応し、同じ値が繰り返される場合は最初の定義を使います。固定選択肢のない項目や、入力方式が対象でない項目には View を作りません。
View は参照時にサイト設定を読みます。そのため、既存項目の選択肢の追加・変更・削除は再実行せず反映されます。選択肢を持つ項目やサイトの追加、サイト名の変更時は再実行します。
SQL Server では、この機能に SQL Server 2022 以降または Azure SQL、DB の互換性レベル130以上が必要です。索引のオンライン作成に関するエディション条件とは別です。
対応する選択肢と制約
- 固定選択肢と Wiki をリンク先にした選択肢に対応します。
[[Users]]などの動的選択肢、表(Results・Issues)をリンク先にした選択肢は対象外で、計画時に生成を停止します。- 作成後に追加された動的参照行は、View の結果に含めません。
General.jsonのChoiceSplitRegexPattern・ChoiceReplaceRegexPattern・ChoiceReplaceRegexReplacementが既定と異なる場合は生成を停止します。
Wiki の選択肢では、リンク先の判定にサイト設定の Links を使い、Wiki 本文の行を展開します。自項目の選択肢行を混ぜて返しません。
Wiki の選択肢には本体との違いがあります
v0.3.0 の View は、Wiki 本文のカンマのエスケープ、前後の空白除去、重複時の先の行の採用を行います。プリザンター1.5.8.1の画面と同じ処理ではありません。また、JSON 形式で Wiki を指定した場合、現行本体の画面では選択肢が空でも View は本文の行を返します。画面と同じ結果が必要な連携では、実際の設定と結果を照合してください。
フォルダー・サイトを除外する
一覧 View と選択肢 View の両方で使えます。カンマ区切りの複数 ID を指定でき、併用できます。
| 指定 | 除外する範囲 |
|---|---|
/exclude-tree <SiteId,...> | 指定サイトと配下の階層全体 |
/exclude-site <SiteId,...> | 指定サイトだけ。フォルダーでも配下は除外しない |
dotnet VehicleVision.PleasanterTools.IndexCreator.dll views /exclude-tree 10 /exclude-site 205,318
dotnet VehicleVision.PleasanterTools.IndexCreator.dll _views /exclude-tree 10 /exclude-site 205,318階層は Sites.ParentId で判定し、存在しない ID では停止します。/sites の計画では、フォルダーを含めた全サイトの SiteId と ParentId が必要です。除外したサイトの既存の管理 View は、/prune を付けたときに削除対象になります。
サイト構成を変えたとき
再実行すると列構成と項目名を更新します。サイト名を変えると新しい名前の View を作り、古いものは /prune を指定したときに整理します。一覧 View と選択肢 View は別々に整理します。
dotnet VehicleVision.PleasanterTools.IndexCreator.dll views /prune
dotnet VehicleVision.PleasanterTools.IndexCreator.dll _views /prune
dotnet VehicleVision.PleasanterTools.IndexCreator.dll choice-lists /prune
dotnet VehicleVision.PleasanterTools.IndexCreator.dll _choice-lists /prune削除するのはツールの命名規則に一致する View です。参照している SQL・BI・依存 View を先に確認してください。新しい名前の View に既存の参照権限は自動で引き継がれません。
PostgreSQL では列名・列順などの変更を通常の置換で処理できない場合に停止します。必要な依存と権限を確認してから、_views /f で再作成します。テーブル単位の外部 GRANT は復元しますが、依存 View や列単位の権限がある場合は自動再作成せず停止します。CASCADE は使いません。
/output の SQL Server の GO は SQL クライアントのバッチ区切りです。PostgreSQL の列構成変更は、出力した CREATE OR REPLACE だけでは適用できない場合があります。変更時はツールの計画・適用を使い、本体更新・CodeDefiner・サイト編集と同時に実行しません。