1.9 KiB
Advanced Templates — Multi-Condition, Hierarchy, Unauthorable
Each template is a verified shape from a passing test fixture. Copy, then change names/values.
Multi-Condition with Custom Conjunction (AND/OR mix)
Source: conjunctionExpressionSteelthread
<unlessPolicyRuleDefinitionClauseConjunction>
<conditions>
<clause>UNLESS</clause>
<operator>CONTAINS_ANY</operator>
<resourcePath>TAG</resourcePath>
</conditions>
<conditions>
<clause>UNLESS</clause>
<operator>CONTAINS_NONE</operator>
<resourcePath>TAG</resourcePath>
</conditions>
<conjunctionExpression>(AND 1 2)</conjunctionExpression>
</unlessPolicyRuleDefinitionClauseConjunction>
Note:
<unlessPolicyRuleDefinitionClauseConjunction>blocks are not UI-editable — silently dropped on first save. Prefer WHEN + negated operator for UI-compatible policies.
Hierarchy Traversal
Source: conditionWithHierarchy
<conditions>
<clause>WHEN</clause>
<operator>HIERARCHICALLY_BELOW</operator>
<resourcePath>RECORDFIELD</resourcePath>
<valueDomain>testDMO__dlm:name__c</valueDomain>
<policyRuleValueSet>
<valueReference>testHierarchyRLS</valueReference>
<valueReferenceType>HIERARCHY</valueReferenceType>
</policyRuleValueSet>
</conditions>
Not UI-editable (
HIERARCHICALLY_BELOWandvalueReferenceType=HIERARCHYare not in the UI dropdowns).
IDENTIFIED_RECORD — Not Authorable via MDAPI
IDENTIFIED_RECORD policies cannot be authored as XML. The required RuleContextPath.SESSION_CONSUMER_ID is not in RuleContextPathType.
To author one: write a runtime RuleProvider using AgenticPolicyRuleProviderService.java:130-260 as the canonical builder.
Do not synthesize a placeholder XML using <contextPath>SESSION_CONSUMER_ID</contextPath> — the value is not in RuleContextPathType and the deploy will fail.