権限セキュリティーは、必要な権限をユーザーが備えている場合に遷移を許可します。 例えば、登録2レビュー 遷移に verifier 権限が必要で、ユーザー sam が verifier 権限を備えている場合には、sam は遷移を実行できます。
属性セキュリティーは、指定された属性の値がユーザー ID に一致した場合 (つまり、resolver="sam") に遷移を許可します。属性セキュリティーが機能するには、選択した属性にユーザー ID が値として含まれている必要があります。 つまり、属性のタイプは CCM_USER です。
属性セキュリティーは、属性あるいは属性とユーザー権限の組み合わせに対して定義することができます。
例えば、CR を提出したユーザー (CR の「提出者」属性の値がログイン・ユーザー ID と一致している必要があります)、かつ「開発者」権限を持っているユーザーのみが、CR を「登録2割り当て」状態に遷移させることができる、というルールを記述します。 したがって、ユーザー sam が CR を提出し、彼が「開発者」権限を持っている場合、彼は CR を「登録2割り当て」状態に遷移させることができます。
ブランチ・セキュリティーは、属性に特定の値が設定されている場合にのみ遷移を許可します。 例えば、request_type 属性は「不具合」または「機能拡張」のいずれかに設定できます。 「不具合の修正」遷移は、「要求タイプ」が「不具合」に設定されている場合にのみ許可することができ、「機能拡張の実行」遷移は、「要求タイプ」が「機能拡張」に設定されている場合に許可することができます。
権限が指定された場合、CR を遷移させるには以下の条件の両方を満たしている必要があります。
属性セキュリティー・ルールと権限セキュリティー・ルールの一方が満たされており、ブランチ・セキュリティーが設定されていない場合、遷移を実行できます。
つまり、次のように、権限セキュリティー・ルールと属性セキュリティー・ルールが論理和演算され、その結果とブランチ・セキュリティー・ルールが論理積演算されます。
( (権限セキュリティー・ルール) OR (属性セキュリティー・ルール) ) AND (ブランチ・セキュリティー・ルール)
この例について検討します。「レビュー中2割り当て」状態への遷移を実行する CR に対して以下のルールを設定します。
ルール 1 - 権限レベル・セキュリティー
「割り当て者」権限を持つユーザーのみが「レビュー中2割り当て」遷移を実行することができます。
ルール 2 - 属性レベル・セキュリティー
CR を提出したユーザー (CR の「提出者」属性の値がログイン・ユーザー ID と一致している必要があります)、かつ「開発者」権限を持っているユーザーのみが、「レビュー中2割り当て」遷移を実行することができます。
ルール 3 - ブランチ・レベル・セキュリティー
「レビュー中2割り当て」遷移は、「管理者によるレビュー」属性が TRUE に設定されている場合にのみ実行できます。権限には値を割り当てません。
ルール 4 - ブランチ・レベル・セキュリティー
「レビュー中2割り当て」遷移は、「承認が必要」属性が FALSE に設定されており、ユーザーが「レビューアー」権限を持っている場合にのみ実行できます。
シナリオ:
ユーザー sam に「開発者」権限を付与し、ユーザー john に「割り当て者」権限および「レビューアー」権限を付与し、ユーザー joe に「開発者」権限および「レビューアー」権限を付与します。
sam が CR を提出し、それを john に割り当てます。したがって、sam が提出者で、john が解決者です。次に、「管理者によるレビュー」属性を TRUE に設定し、「承認が必要」属性を FALSE に設定します。
したがって、遷移を実行するには、すべてのブランチ・ルールが満たされており、指定された権限ルールまたは属性ルールの少なくとも 1 つが満たされている必要があります。
(ルール 1 OR ルール 2) AND (ルール 3 AND ルール 4)