システム ルール: 4D 開発者向けに比較したベスト ピック
システム ルールは、ソフトウェア システムの一貫性を保証する制約、規則、自動制御です。 4D プラットフォームでは、ローコード用の 4D テーブル命名ルール、4D データベース ビジネス ルール トリガー、ファイアウォールとクライアント アクセス ルール、および外部ビジネス ルール管理システムの少なくとも 4 つの異なるレイヤーをカバーします。 2026 年に適切な「システム ルール」セットを選択するということは、実際に管理する必要があるレベルに一致することを意味します。
最も広い意味でのシステム ルールは、システムが実行できることと実行できないことを定義する強制可能なステートメントです。ルールには、命名規則 (「すべてのテーブルは複数形であり、すべての主キーは _ID で終わる」)、検証 (「顧客なしでは請求書を転記できない」)、アクセス制御 (「会計グループのみが元帳エントリを削除できる」)、またはテスト アサーション (「このメソッドは null が渡されたときにスローする必要がある」) を指定できます。この用語は意図的に一般的なものであり、まさにそれが、この用語を検索するとこのような散在した結果が返される理由です。ドイツの請求書発行製品、Java テスト ライブラリ、および 4D 開発者独自の命名標準はすべて、正当に自らを「システム ルール」と呼んでいます。
4D 開発者にとって、有用なメンタル モデルは 4 層のルールのスタックであり、それぞれに異なる所有者と異なる障害モードがあります。
- 構造ルール — ローコード用の 4D テーブルの命名規則と、テーブル、フィールド、フォーム、フォーム オブジェクト、メソッド、プロジェクト フォルダーの 4D ローコード アプリ開発の命名規則。これらは人間とコード レビュー、場合によっては lint スクリプトによって適用されます。
- 動作ルール — 4D データベース ビジネス ルール トリガーおよび 4D トリガー コードなしビジネス ルールは、4D トリガー、
On Saving New Record、On Saving Existing Record、およびOn Deleting Recordデータベース メソッド、または ORDA のエンティティ レベル コードで実装されます。 - アクセス ルール — 4D ユーザー、グループ、テーブル/フィールドへの読み書きアクセス権、および 4D クライアントが 4D サーバーにアクセスできるようにするネットワーク ルール。
- チェック ルール — JUnit のシステム ルール ライブラリや商用ビジネス ルール管理システム (BRMS) など、他の 3 つの層をチェックする自動テストおよびルール エンジン。
ツールに名前を付ける前にレイヤーに名前を付けることで、この分野で最もよくある間違い、つまり、実際の問題は 3 人の開発者が同じフィールドに 3 つの異なる方法で名前を付けているにもかかわらず、ルール エンジンを購入またはインストールするという間違いを回避できます。
システムルールとは何ですか
「システム ルールとは何ですか」という質問は、コミュニティの質問に応じて、少なくとも 3 つの正当な回答がある質問であり、上位にランク付けされたページは、この分裂を解決するというよりもむしろ反映しています。
Strules (strules.com / systemrules.com) は、ルールベースの請求書レビューおよび承認ワークフローのためのドイツの商用製品です。これは、支払い前に受信した請求書を構成可能なルールと照合する必要がある財務および会計チームを対象としています。ビジネス ルール管理システムの古典的な使用例であり、order.strules.com のログイン ポータルを備えたホスト型サービスとして販売されています。検索意図が「会社のルールに照らして請求書をチェックするソフトウェア」である場合、これが探している製品ファミリーです。
関連: — 自動化、ビュー、共有可能なインターフェイスを備えた、実際のリレーショナル データベースの上にあるスプレッドシートのようなシンプルなインターフェイス。.
システム ルール (github.com/stefanbirkner/system-rules) は、Stefan Birkner によるオープン ソース Java ライブラリで、システム環境に影響するコードをテストするための JUnit TestRule 実装を提供します。そのルールには、標準入出力、システム プロパティ、環境変数、セキュリティ マネージャーが含まれます。一般的な使用法は、「@Rule public final」フィールドを持つ「public class」、または「@Test」の注釈が付けられた「public void」テスト メソッドのようになります。ルールは「System.out」をキャプチャするため、テストは印刷出力でアサートできます。ライブラリのドキュメントには、テストで 1 回のテスト中に環境変数を設定し、その後それを復元できるようにする「EnvironmentVariables」ルールのようなパターンが示されています。これらは、Java 開発者が意味する「システム ルール」です。
4D システム ルール は、プラットフォーム独自の規則と施行ポイントです。ローコードの 4D テーブル命名ルール (テーブルとフィールドの命名)、フォーム オブジェクトとプロジェクト フォルダの 4D ローコード アプリ開発命名ルール、4D トリガー ノーコード ビジネス ルール (トリガーベースのビジネス ルール)、および 4D クライアントを 4D Server に接続するためのファイアウォール設定です。 4D には独自の命名基準が付属していないため、チームが独自の命名基準を作成します。この記事の実用的な価値のほとんどはそこにあります。これには、4d データベース ビジネス ルール トリガーの実装方法が含まれます。
4 番目の意味は、IT 運用で一般的で、ファイアウォール ルール、バックアップ保持ルール、パスワード ポリシーなど、単に「システムを管理するルール」です。クライアントの 4D Server ファイアウォール ルールがここに当てはまります。
ショッピングの場合: — より広範なZohoスイートにプラグインするローコードアプリビルダーで、アプリごとではなくユーザーごとに価格が設定されます。.
システム ルールの意味
システム ルールの意味は、ベンダーのブランディングを取り除いた、成文化された制約と強制です。強制されないルールは文書化です。強制されるルールはシステム ルールです。この区別は、このトピックから取り上げる最も有益な点です。
アプリケーションのメカニズムは強度の点で異なります。
- 厳格な強制 - データベースは操作を拒否します。 「新しいレコードの保存時」にエラーを返す 4D トリガーは、善意の開発者がフォームでバイパスすることはできません。
- ソフト アプリケーション: 操作は成功しましたが、報告されます。コードレビュー中にチェックされる命名規則は柔軟です。ビルド スクリプトによって検証される命名規則はさらに困難です。
- アプリケーション テスト: ビルドに失敗します。
System.out出力で自身をアサートする JUnit ルール、または各testの後に環境変数を復元するTestRuleは、規約をゲートに変換します。
「final public rule」というフレーズがシステム ルールのドキュメント全体に表示されます。これは、JUnit ではルール フィールドが「パブリック」で、通常は「最終」である必要があるためです。修飾子は装飾ではなく、テスト ランナーがルールを見つけて適用できるようにする規約です。同様に、「test public void」は JUnit 4 テスト メソッドのシグネチャを記述します。「public」で、「void」を返し、「@Test」という注釈が付けられます。システム ルールの例を読んで、修飾子が恣意的であるように見える場合、それらはそうではなく、フレームワークの検出メカニズムです。
4Dの場合は等価契約がトリガーとなります。 4D トリガーはテーブルに付加されたメソッドで、作成、更新、または削除時にトリガーされ、変更がフォーム、ORDA エンティティ、インポート、または REST 呼び出しのいずれによるものであるかに関係なく実行されます。この普遍性により、トリガーは 4D にビジネス ルールを挿入する最も効果的な場所になります。また、ルールが不適切に記述された場合に最も大きな損害を与える場所でもあります。
システム ルールの利点
システム ルールの利点は 4 つのカテゴリに分類され、これらのカテゴリは前述の 4 つの層に明確に対応しています。
チーム全体の一貫性。 4D ローコード アプリ開発の 4D テーブル、フィールド、フォーム、フォーム オブジェクトの命名規則により、プロジェクトに参加する開発者は、何がどこにあるかを予測できます。すべてのテーブルの名前が複数形であり、すべての主キーが <Table>_ID であり、フィールドを表示するすべてのフォーム オブジェクトに接頭辞 f_ が付いている場合、見慣れないコードを読み取るのに数時間ではなく数分かかることになります。
ユーザー インターフェイスに依存しないデータの整合性。 4d データベース ビジネス ルール トリガーのビジネス ルールは、各書き込みパスに適用されます。フォームの「クリック時」イベントのルールは、そのフォームにのみ適用されます。トリガーは最もレバレッジが高い場所であり、エントリ ポイント (デスクトップ フォーム、Web フォーム、REST、インポート) の数が増加するにつれて利点も増加します。
オンボーディングの高速化とバス係数(属人化)の削減 文書化され適用された規則は、移転可能な知識です。開発者の頭の中には文書化されていない慣例が存在します。
監査可能性 どのルールがいつ、どのレコードで起動されたかを記録するビジネス ルール管理システムにより、40 のメソッドに散在するアドホックな If ステートメントでは決して得られない監査証跡が得られます。
システムルールの長所と短所
| アプローチ | 長所 | 短所 |
|---|---|---|
| 4D 命名規則 (テーブル、フィールド、フォーム、フォルダー) | コストゼロで即時、可読性が向上 | ソフト強制。ランタイム保護はありません。規律が必要です |
| ビジネス ルールの 4D トリガー | すべての書き込みパスにわたるハード強制。集中化 | 保存するたびに実行されます。トリガーが遅いとすべてが遅くなります。デバッグが難しい |
| 4D ユーザー/グループとテーブル権限 | 内蔵;追加のライセンスは不要 | 粒度が粗い。行レベルのルールには扱いにくい |
| クライアントの 4D Server ファイアウォール ルール | オープンなインターネットからデータベース ポートを保護します。構成を誤ると、正規のクライアントがロックアウトされます。文書化されたポートリストが必要です。 | |
| 外部 BRMS (例: Strules) | 開発者以外でもルールを編集可能。監査証跡。バージョン管理 | 別のシステムを実行する必要があります。統合コスト。小規模チームにはやりすぎ |
| JUnit システム ルール (Java) | 無料で十分に文書化された、環境依存のテストを分離します。 Java のみ。ビジネス ルールの問題ではなく、テストの問題を解決します。 |
この表は、中心的なトレードオフを示しています。最も安価なルール (規約) は最も弱く、最も厳格なルール (トリガー、BRMS) は運用コストが最も高くなります。
システムルールには価値がありますか
システム ルールの価値は、質問しているレイヤーに完全に依存し、正直な答えはチームの規模によって異なります。
命名規則: ほとんどの場合、価値があります。 ローコード用の 4D テーブル命名規則 (4D テーブルとフィールドの命名、フォーム オブジェクトの命名、プロジェクト フォルダの命名に関する 1 ページの標準) を作成するのに午後の時間(数時間)を費やすことになりますが、最初の 1 か月以内に回収できます。小規模チームの 4D プロジェクトでは、それを使用しないほうが良いという現実的なシナリオはありません。
ビジネス ルールの 4D トリガー: ルールが真に普遍的であれば価値があります。 「注文明細の数量は正でなければなりません」のようなルールは、コードなしの 4D トリガー ビジネス ルール設定に適しています。 「この画面では、ジュニア ユーザーの割引フィールドをグレー表示にする」などのルールがフォームに含まれています。 UI の問題をトリガーに組み込むことは、チームがトリガーを高価にする最も一般的な方法です。
商用 BRMS: 開発者以外がルールを所有する必要がある場合に価値があります。 財務チームが承認しきい値を毎月変更し、そのたびにアプリケーションを再デプロイしている場合、ビジネス ルール管理システムは十分に元が取れます。ルールが年に2回しか変更されないのであれば、導入する価値はありません。
JUnit システム ルール: Java で開発する場合は価値があります。 このライブラリは、環境変数、システム プロパティ、または標準出力に依存するテストなど、狭い実際の問題を解決します。また、このライブラリは無料です。 4D開発とは関係ありません。
システムルールの問題
システム ルールに関連する問題は、5 つの繰り返し発生する障害モードに分類されます。
ルールのスプロール。 ルールは、単一のインデックスを持たずにトリガー、フォーム メソッド、ストアド プロシージャに蓄積されます。 6 か月後、[Invoice]Total の検証がトリガー内にあるのか、フォーム内にあるのか、あるいはその両方にあるのかは誰にも分かりません。この問題を解決するには、各ルール、そのレイヤー、およびその所有者をリストしたルール レジスタ (スプレッドシートでも可) を作成します。
トリガーのパフォーマンス 保存するたびに 4D トリガーが実行されます。大きなテーブルに対してクエリを実行するか、別のシステムを呼び出すトリガーにより、クイック インポートが夜間のジョブに変わります。トリガーはオーケストレーションを行うのではなく、値を検証して設定する必要があります。
再帰と再エントリ。 検証している同じレコードを変更するトリガーは、それ自体を再起動できます。 4D 開発者はこれを苦労して学びます。標準的な軽減策は、更新を保護するか、明示的に呼び出されるメソッドにロジックを移動することです。
ファイアウォール ルールが広すぎる、または狭すぎる。 「動作させる」ために 4D Server のポートを世界に開放することは、明らかな結果を伴う一般的な近道です。あまりにも積極的にブロックすると、アプリケーションのバグのように見えるクライアント接続エラーが発生します。ポートを文書化し、可能な場合は送信元アドレスによってポートを制限し、勝利を宣言する前にネットワークの外側からテストします。
強制力のない命名規則。 Wiki 内にのみ存在する規則は提案です。ルールが重要な場合は、それをコード レビュー チェックリスト、ビルド スクリプト、または最も強力なケースではデータベース制約に含めます。
重要なポイント
- 「システム ルール」という言葉は、ドイツの請求書検証製品 (Strules)、Java JUnit テスト ライブラリ (Stefan Birkner によるシステム ルール)、4D プラットフォームの規約とトリガー、一般的な IT 運用ルールの少なくとも 4 つの異なる事項について説明します。
- 4D では、ルールは命名規則、トリガー、アクセス許可、テストの 4 つのレイヤーで構成されており、各レイヤーには異なる適用強度があります。
- 4D トリガーは、すべての書き込みパスで起動されるだけでなく、すべての保存でも実行されるため、4D データベース ビジネス ルール トリガーにとって最も強力な場所です。そのため、4D トリガーのノーコード ビジネス ルールの効率性を確保するために、トリガーを高速かつオーケストレーション ロジックから解放してください。
- 4D テーブル、フィールド、フォーム、フォームオブジェクト、およびプロジェクトフォルダーの命名規則は、採用するのに最も安価なルールであり、施行せずに放置するのが最も簡単なルールです。これらのローコード用の 4D テーブルの命名規則と 4D ローコード アプリ開発の命名規則は、重要な構造を提供します。
- 開発者以外がルールを頻繁に編集する必要がある場合には、商用ビジネス ルール管理システム (BRMS) が正当化されます。年に数回しかルールが変更されない場合にそれを導入するのはやりすぎです。
- JUnit ルール フィールドは「public」 (通常は
public final) であり、テスト メソッドは「public void」である必要があります。これらの修飾子はフレームワークの検出コントラクトであり、スタイル設定ではありません。
出典と詳細情報
- ローコード開発プラットフォーム — Wikipedia: ローコード開発プラットフォーム (LCDP) は、書き込みがほとんどまたはまったく必要ないソフトウェア開発環境 (通常はグラフィカル ユーザー インターフェイス (GUI)) を提供します…
- モバイル アプリ開発 — Wikipedia: モバイル アプリ開発とは、携帯情報端末 (PDA…などを含む) 1 つ以上のモバイル デバイス向けにモバイル アプリを開発する行為またはプロセスです。
よくある質問
システム ルールの説明 — 主なタイプは何ですか?
システム ルールは、構造ルール (テーブル、フィールド、フォーム、フォルダーの命名規則)、動作ルール (トリガーまたはエンティティ コードのビジネス ロジック)、アクセス ルール (ユーザー、グループ、アクセス許可、およびファイアウォール構成)、および検証ルール (自動テストとルール エンジン) に分かれています。各タイプには異なる強制メカニズムと異なる所有者があります。この分野で無駄な労力が発生する最も一般的な原因は、タイプを混同することです。
4D プラットフォームのシステム ルールとは具体的に何ですか?
4D では、システムルールはプラットフォームが提供する規則と強制ポイントです。ローコードの 4d テーブル命名ルールと自分で定義するフィールド命名標準、レコードの作成、更新、削除時に起動する 4d トリガーノーコードビジネスルール、ユーザーとグループの権限、および 4D クライアントが 4D Server にアクセスできるようにするファイアウォールルールです。 4D には独自の命名基準がないため、チームは独自の 4D ローコード アプリ開発の命名規則を作成し、レビューやツールを通じてそれを適用します。
システム ルールの意味 — ビジネス ルールと同じですか?
システム ルールはより広義の用語です。ビジネス ルールはその中の 1 つのカテゴリです。ビジネス ルールには、組織の要件が記載されています (「10,000 件を超える請求書には 2 つの承認が必要」)。システム ルールは、要件とその適用メカニズム (トリガー、ビジネス ルール管理システム (BRMS) 構成、または要件を現実にするテスト) を組み合わせたものです。強制力のないビジネス ルールは、単なるドキュメントに過ぎません。
システムルールの利点 — チームは実際に何を得るのでしょうか?
チームは、開発者間での一貫性、UI だけでなくすべてのエントリ ポイントを維持するデータの整合性、規約が転送可能なためオンボーディングの迅速化、ルールがログに記録されるときの監査可能性の恩恵を受けます。 4D における最大の利点は、バリデーションをフォーム メソッドから 4D データベース ビジネス ルール トリガーに移行することでもたらされます。これは、トリガーが Web フォーム、REST 呼び出し、インポートだけでなくデスクトップ フォームにも適用されるためです。
システムルールの長所と短所 — このアプローチはどこで破綻するのでしょうか?
このアプローチは、ルールが適用されない場合 (Wiki の規約)、保存のたびに大きなテーブルにクエリを実行するためトリガーが遅くなる場合、トリガーの再帰が保護されていない場合、およびファイアウォール ルールが広く開放されているか、正当なクライアントが接続できないほど厳重である場合に破綻します。商用ルール エンジンは、小規模チームでは正当化できないことが多い統合コストと運用コストを追加します。
システム ルールは小規模な 4D チームにとって価値がありますか?
小規模な 4D チームの場合、命名規則と適切に範囲を定めた少数のトリガーはほとんどの場合価値があり、費用もほとんどかかりません。商用ビジネス ルール管理システムは、開発者以外のユーザーがルールを頻繁に変更する必要があり、アプリケーションの再デプロイメントがボトルネックになる場合にのみ価値があります。 JUnit システム ルール ライブラリは、Java テストも作成する場合にのみ価値があります。 4D の開発には何の役割もありません。
システム ルールの問題 — ルールのスプロールを防ぐにはどうすればよいですか?
ルール レジストリ (各ルール、そのルールが含まれるレイヤー、およびルールの所有者を含む単一のリスト) を維持することで、ルールの拡散を防ぎます。ルールが変更されたとき、および開発者が参加したときにレジストリを確認します。レジストリがないと、ルールはトリガー、フォーム メソッド、ストアド プロシージャに蓄積され、特定の検証が実際にどこで実行されているかが誰にも分からなくなります。
信頼できる情報源
- JUnit 4 ドキュメント —
@Ruleコントラクトのシステム ルールが実装しているフレームワーク。 - Wikipedia: ビジネス ルール エンジン - BRMS アーキテクチャとルール分離に関する一般情報。
- 4D ドキュメント — トリガー、ORDA、データベース構造の公式リファレンス。
- Wikipedia: ファイアウォール (コンピューティング) — ネットワーク ルール層のコンテキスト。
よくある質問
システムルールの説明 - 主なタイプは何ですか?
システム ルールは、構造ルール (テーブル、フィールド、フォーム、フォルダーの命名規則)、動作ルール (トリガーまたはエンティティ コードのビジネス ロジック)、アクセス ルール (ユーザー、グループ、アクセス許可、およびファイアウォール構成)、および検証ルール (自動テストとルール エンジン) に分かれています。各タイプには異なる強制メカニズムと異なる所有者があります。この分野で無駄な労力が発生する最も一般的な原因は、タイプを混同することです。
4D プラットフォームのシステム ルールとは具体的に何ですか?
4D では、システムルールはプラットフォームが提供する規則と強制ポイントです。ローコードの 4d テーブル命名ルールと自分で定義するフィールド命名標準、レコードの作成、更新、削除時に起動する 4d トリガーノーコードビジネスルール、ユーザーとグループの権限、および 4D クライアントが 4D Server にアクセスできるようにするファイアウォールルールです。 4D には独自の命名基準がないため、チームは独自の 4D ローコード アプリ開発の命名規則を作成し、レビューやツールを通じてそれを適用します。
システム ルールの意味 — ビジネス ルールと同じですか?
システム ルールはより広義の用語です。ビジネス ルールはその中の 1 つのカテゴリです。ビジネス ルールには、組織の要件が記載されています (「10,000 件を超える請求書には 2 つの承認が必要」)。システム ルールは、要件とその適用メカニズム (トリガー、ビジネス ルール管理システム (BRMS) 構成、または要件を現実にするテスト) を組み合わせたものです。強制力のないビジネス ルールは文書化されます。
システムルールの利点 — チームは実際に何を得るのでしょうか?
チームは、開発者間での一貫性、UI だけでなくすべてのエントリ ポイントを維持するデータの整合性、規約が転送可能なためオンボーディングの迅速化、ルールがログに記録されるときの監査可能性の恩恵を受けます。 4D における最大の利点は、バリデーションをフォーム メソッドから 4D データベース ビジネス ルール トリガーに移行したことによってもたらされます。これは、トリガーが Web フォーム、REST 呼び出し、インポートだけでなくデスクトップ フォームにも適用されるためです。
システムルールの長所と短所 — このアプローチはどこで破綻するのでしょうか?
このアプローチは、ルールが適用されない場合 (Wiki の規約)、保存のたびに大きなテーブルにクエリを実行するためトリガーが遅くなる場合、トリガーの再帰が保護されていない場合、およびファイアウォール ルールが広く開放されているか、正当なクライアントが接続できないほど厳重である場合に機能しません。商用ルール エンジンは、小規模チームでは正当化できないことが多い統合コストと運用コストを追加します。
システムルールは小規模な 4D チームにとって価値がありますか?
小規模な 4D チームの場合、命名規則と適切に範囲を定めた少数のトリガーはほとんどの場合価値があり、費用もほとんどかかりません。商用ビジネス ルール管理システムは、開発者以外のユーザーがルールを頻繁に変更する必要があり、アプリケーションの再デプロイメントがボトルネックになる場合にのみ価値があります。 JUnit システム ルール ライブラリは、Java テストも作成する場合にのみ価値があります。 4D の開発には何の役割もありません。
FileMaker を 45 日間無料でお試しください
デスクトップ、Web、モバイル上で 1 つのファイルからカスタム アプリを必要とするチーム向けの、長期にわたって実行されているリレーショナル データベース プラットフォームです。