最近のアクセス:
GAM エンティティのプロパティを拡張する方法
GAMProperty 外部オブジェクト ([ Enable Integrated Security ] プロパティが [ Yes ] に設定されているときに統合される GAM ライブラリの一部) を使用すると、ロールアプリケーションアクセス許可リポジトリなど、複数の GAM エンティティとして動的プロパティ (OAV パターン) を定義できます。
この目的は、これらのエンティティに事前に定義されたプロパティが不十分である場合に複数のシナリオをモデル化できるようにすることです。
まず、GAMProperty オブジェクトのプロパティを示します:
  • Id
  • Token
  • Value
イメージ:19640.png
GXportal で、ユーザーの Main ロールによってアプリケーションのメインページが異なるとします。この場合、ロールのエンティティに追加のプロパティを定義する必要があります。Id は "Main Page"、Value はこのロールを持つユーザーのホームページになる Web ページの名前になります。
Main ロールのメインページを特定のチャネルについて指定するなど、さらに詳細な設定が必要になる場合があります。その場合、上記の Id と Value のほかに、GAMProperty オブジェクトの [ Token ] プロパティで "チャネルの Id" を指定する必要があります。
別の例として、GAM アクセス許可のエンティティを考えます。ユーザーが会社の特定の支社に所属しているかどうかに応じて権限を確認する必要があるとします。ユーザーが特定のアクションを実行することが許可されているかどうかの確認に加え、その権限がユーザーの支社で許可されているかどうかも確認する必要があります。この場合、アクセス権限のエンティティとして追加のプロパティを定義し、Id を "branch of the company"、Value を支社の名前にします。ユーザーの権限を確認するときは、プログラムを使ってこの権限の [ branch of the company ] プロパティを確認してから、ユーザーによるアクションの実行を許可するかどうかを決定する必要があります。
ここでは、ロールのエンティティを例として使用していますが、ほかの GAM エンティティでも同様です。
1.エンティティのプロパティをループします。
この例では、ロールの拡張プロパティをスキャンしています。GAMRole オブジェクトの [ Properties ] プロパティは、GAMProperty オブジェクトのコレクションを返します。
For &RoleProp In &Role.Properties //&RoleProp は GAMProperty データタイプ、&Role は GAMRole データタイプ
  &RolePropValue = &RoleProp.Value //&RolePropValue は GAMPropertyValue データタイプ
  &PropValueToken = &RoleProp.Token //&PropValueToken は GAMPropertyToken データタイプ
  &PropValueId = &RoleProp.Id //&PropValueId は GAMPropertyId データタイプ
EndFor
2.拡張プロパティを挿入または更新します。
動的プロパティを追加するには、プロパティをコレクションに追加してから save() メソッドを実行し、その後コマンドをコミットします。
&Role.Load(&RoleIdSelected) //&RoleIdSelected は GAMKeyNumLong データタイプ
&RoleProp = New() //&RoleProp は GAMProperty データタイプ
&RoleProp.Id = &PropValueToAdd
&RoleProp.Token = &RolePropToken
&RoleProp.Value = &PropValue
&Role.Properties.Add(&RoleProp)
&Role.Save()
For &Error In &Role.GetErrors()
  msg(&Error.Message + !"(GAM" + &Error.Code.ToString().Trim() + !")")
EndFor
If &Role.Success()
  Commit
EndIf
動的プロパティを更新するには、まずプロパティを削除し、その後追加する必要があります。
3.拡張プロパティを削除します。
通常のコレクション操作でコレクションから削除する必要があります。

参考情報

GAM エンティティプロパティの拡張性

 
Created: 14/09/18 03:13 by Admin Last update: 15/01/09 02:06 by Admin
カテゴリ
Powered by GXwiki 3.0