セキュリティ業務に(コードで)アクセスしたいのですが、どこに保存されているのか(どのテーブルに)わかりませんか?
特権はSecurityTaskに保存されますが、AX2012のどこに職務が保存されているかを知る必要があります。
ありがとうございました。
セキュリティ業務に(コードで)アクセスしたいのですが、どこに保存されているのか(どのテーブルに)わかりませんか?
特権はSecurityTaskに保存されますが、AX2012のどこに職務が保存されているかを知る必要があります。
ありがとうございました。
ここで見つけました:http://arsalanax.blogspot.be/2012/02/role-based-security-in-ax.html
ロールはSecurityRoleに保存されます
SecurityUserRoleでのユーザーからロールへのマッピング
SecurityTaskに保存されている職務と特権
特権への義務のマッピングはSecuritySubTaskに保存されます
ロールからデューティへのマッピングはSecurityRoleTaskGrantに保存されます
UPDATE(クエリが追加されました)
SecurityTaskEntryPoint taskEntryPoint;
SecurityRole role;
SecurityRoleTaskGrant taskGrant;
SecuritySubTask subTask;
SecurityTask privilege;
str privName;
str dutyName;
str entrName;
str accessLevel;
;
while select taskEntryPoint
join subTask
where subTask.SecuritySubTask == taskEntryPoint.SecurityTask
join taskGrant
where taskGrant.SecurityTask == subTask.SecurityTask
join role
where role.RecId == taskGrant.SecurityRole
&& role.AotName like 'Sales*'
//|| role.AotName like 'System*'
{
if (subTask.RecId)
{
switch (taskEntryPoint.PermissionGroup)
{
case AccessRight::View:
accessLevel = "R";
break;
case AccessRight::Edit:
accessLevel = "U";
break;
case AccessRight::Add:
accessLevel = "C";
break;
case AccessRight::Delete:
accessLevel = "D";
break;
default:
accessLevel = "";
break;
}
}
select privilege
where privilege.RecId == taskGrant.SecurityTask
&& SecurityTaskType::Duty == privilege.Type;
dutyName = privilege.AotName;
select privilege
where privilege.RecId == subTask.SecuritySubTask
&& SecurityTaskType::Privilege == privilege.Type;
privName = privilege.AotName;
info(strFmt("EP: %1, Pr: '%2', Du: %3, Ro: %4, Ac: %5", taskEntryPoint.EntryPoint, privName, dutyName, role.AotName, accessLevel));
}
SecurityTask
セキュリティ義務は、 Typeが1(SecurityTaskType :: Duty)に等しいテーブルにあります。
SecurityTask
セキュリティ特権は、タイプが0に等しいテーブルにあります(SecurityTaskType :: Privilege)
セキュリティプロセスサイクルは、SecurityTask
タイプが2(SecurityTaskType :: ProcessCycle)のテーブルにあります。
これらのオブジェクトはすべてテーブル(またはビュー)にもあります(SysModelElement
ElementType == 135の職務)。