You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在B2C自定义策略中配置指定逻辑的布尔声明转换?

在B2C自定义策略中实现布尔声明的条件转换

要实现当声明x为true时将y设为false,否则保留y原值的逻辑,你可以通过以下步骤配置声明转换和编排控制:

1. 声明定义(ClaimsSchema)

首先确保在策略的<ClaimsSchema>节点中定义好两个布尔声明:

<ClaimsSchema>
  <ClaimType Id="x">
    <DisplayName>Boolean X</DisplayName>
    <DataType>boolean</DataType>
  </ClaimType>
  <ClaimType Id="y">
    <DisplayName>Boolean Y</DisplayName>
    <DataType>boolean</DataType>
  </ClaimType>
</ClaimsSchema>

2. 配置声明转换逻辑

在<ClaimsTransformations>节点中添加转换规则,使用SetClaimIfConditionEquals方法实现条件赋值:

<ClaimsTransformations>
  <ClaimsTransformation Id="SetYToFalseWhenXIsTrue" TransformationMethod="SetClaimIfConditionEquals">
    <!-- 输入声明:要判断的x -->
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="x" TransformationClaimType="inputClaim" />
    </InputClaims>
    <!-- 条件参数:当x等于true时执行赋值 -->
    <InputParameters>
      <InputParameter Id="conditionValue" DataType="boolean" Value="true" />
      <InputParameter Id="outputClaimValue" DataType="boolean" Value="false" />
    </InputParameters>
    <!-- 输出声明:修改后的y -->
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="y" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
</ClaimsTransformations>

这个转换的逻辑是:仅当x的值等于true时,才将y覆盖为false;如果x是false,y会保留原有值。

3. 在编排流程中调用转换并控制步骤执行

创建一个专门的技术配置文件(TechnicalProfile)来触发这个转换,然后在用户旅程(UserJourney)中调用它,最后通过Preconditions根据y的值控制后续步骤是否执行:

3.1 定义触发转换的技术配置文件

<TechnicalProfiles>
  <TechnicalProfile Id="TransformBooleanClaims">
    <DisplayName>Apply Boolean Claim Transformation</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="y" />
    </OutputClaims>
    <OutputClaimsTransformations>
      <OutputClaimsTransformation ReferenceId="SetYToFalseWhenXIsTrue" />
    </OutputClaimsTransformations>
  </TechnicalProfile>
</TechnicalProfiles>

3.2 在用户旅程中集成并控制步骤

<UserJourney Id="DefaultJourney">
  <OrchestrationSteps>
    <!-- 步骤1:获取初始的x和y声明(比如从上游步骤或用户输入获取) -->
    <OrchestrationStep Order="1" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="GetInitialClaims" TechnicalProfileReferenceId="YourInitialClaimsSource" />
      </ClaimsExchanges>
    </OrchestrationStep>

    <!-- 步骤2:执行声明转换 -->
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="TransformClaims" TechnicalProfileReferenceId="TransformBooleanClaims" />
      </ClaimsExchanges>
    </OrchestrationStep>

    <!-- 步骤3:根据转换后的y值决定是否执行此步骤 -->
    <OrchestrationStep Order="3" Type="ClaimsExchange">
      <Preconditions>
        <!-- 如果y为true,则跳过此步骤 -->
        <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
          <Value>y</Value>
          <Value>true</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
      </Preconditions>
      <ClaimsExchanges>
        <ClaimsExchange Id="ExecuteConditionalStep" TechnicalProfileReferenceId="YourConditionalTechnicalProfile" />
      </ClaimsExchanges>
    </OrchestrationStep>
  </OrchestrationSteps>
</UserJourney>

关键说明

  • SetClaimIfConditionEquals方法只会在条件匹配时修改目标声明,不匹配时保留原值,完美契合你的需求。
  • 后续步骤的Preconditions可以根据y的最终值灵活控制执行逻辑,比如示例中当y为true时跳过步骤,你也可以根据实际需求调整判断条件和动作。

内容的提问来源于stack exchange,提问作者Lars Kolsaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:46:26