データの整合性
データの整合性をどのように確保すればよいですか?
Mendix アプリケーション データの整合性を確保するためにさまざまな方法をサポートしています。
- データ型 – 有効なデータ型のみ保存できるようにする
- 検証ルール – データが一意で、指定されており、範囲内にあるかどうかを検証する
- イベントハンドラー – マイクロフローを使用して、データを検証するためのカスタムロジックを提供します
- アクセスルール – 許可されたユーザーのみがデータにアクセスしたり変更したりできるようにする
- 参照整合性 – 必要な関連データとともにデータが保存されていることを確認する
どのようなデータ型が使用できますか Mendix?
データ型は、属性に保存できるデータの種類を定義します。この型により、たとえば、テキスト フィールドにはテキストのみが含まれ、数値フィールドには数値のみが含まれることが保証されます。
属性には次のタイプを使用できます。
- 自動番号 – 自動的に生成された番号
- バイナリ – バイナリデータ
- ブーリアン – 真実か嘘か
- 日時 – ある時点
- 10進数 – 正または負の数
- 列挙 – 定義済みの値セットの 1 つの値
- ハッシュ文字列g – 文字列のハッシュ値
- 整数 – 32ビットの整数
- 長い – 64ビットの整数
- String – 文字、数字、スペース、その他の文字を含むテキスト
詳細については、 Attributes 会場は Mendix Studio Pro ガイド.
どのような検証ルールを使用できますか Mendix?
検証ルールは、データが従うべきルールを指定します。データが指定されたルールに従っていない場合、データを保存しようとするとエラーが表示されます。
ルールの種類に応じて、これは Mendix ランタイムまたはデータベースによって。
イベントハンドラの使い方 Mendix?
イベント ハンドラーを使用すると、特定のイベントの前または後にロジックを実行できます。これには、次のような多くの使用例があります。
- オブジェクト作成時のデフォルト値の設定 – 新しいオブジェクト(例えば、定数ではないデフォルト値を持つオブジェクト)を初期化したい場合は、before-createイベントを使用できます。
- 監査証跡の保存 – データに加えられたすべての変更の履歴を保持することが必要な場合もありますが、アフターイベントでは、変更を監査証跡オブジェクト( 監査証跡 のモジュール Mendix マーケットプレイスはまさにこの機能を提供します)
- データ変更の検証 – 事前イベントは、データの変更を検証するマイクロフローをトリガーするために使用できます。
アプリケーション内のすべてのエンティティにイベントハンドラを設定するには、 Mendix Java API。たとえば、すべてのエンティティに対してコミット前のイベント リスナーを設定するには、次のメソッドを使用します。 Core.getListenersRegistry().registerAfterCommitListener.
アクセスルールを設定するにはどうすればよいですか?
データ整合性の重要な側面は、誰がどのデータを変更できるかということに関係しており、データ認証は Mendix プラットフォーム。ユーザー ロールは、エンドユーザーのデータに対してそのロールが実行できる操作に直接関連付けることができます。
エンティティで定義できるアクセス権の側面は次のとおりです。
- エンティティの読み取りまたは変更ができるユーザー
- 属性を読み取りまたは変更できるユーザー
- エンティティを作成または削除できるユーザー
XPath制約を使用して、いわゆる 行レベルのセキュリティは、ユーザーが表示できるオブジェクトを定義します。これを使用すると、顧客は自分のデータのみを表示でき、ケースワーカーは自分のケースに関連するデータのみを表示でき、テナントはマルチテナント アプリケーションで自分のテナント データのみにアクセスできるようになります。
参照整合性はどのように機能するのか Mendix?
参照整合性は、削除動作プロパティを使用して追加されます。削除動作は、オブジェクトが削除されたときに関連付けられているオブジェクトに何が起こるかを定義します。関連付けの各端に対して、次のオプションを設定できます。
値 | 説明 |
---|---|
{エンティティ名} オブジェクトを削除しますが、{他のエンティティ名} オブジェクトは保持します | オブジェクトが削除されても、関連付けられているオブジェクトは削除されません。 |
{エンティティ名} オブジェクトと {他のエンティティ名} オブジェクトも削除します | オブジェクトが削除されると、関連付けられているオブジェクトも削除されます。 |
{他のエンティティ名} オブジェクトがない場合にのみ、{エンティティ名} オブジェクトを削除します。 | オブジェクトは、他のオブジェクトに関連付けられていない場合にのみ削除できます。 |
これが2つの例です。
- {エンティティ名} オブジェクトを削除しますが、{他のエンティティ名} オブジェクトは保持します (デフォルト値) – 関連するものを削除する場合に使用します 顧客プロフィール 時 Customer 削除されます:
- {他のエンティティ名} オブジェクトがない場合にのみ、{エンティティ名} オブジェクトを削除します。 – 削除したい場合に使用します Customer いかなるものにも関連付けられていない場合のみ 注文: