Я сделал это по-другому ... вместо того, чтобы возвращать статус Конфликта [409], я изменил конечную точку REST, чтобы получить OutputClaim
, например:
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="extension_isEnabled"
PartnerClaimType="IsEnabled" DefaultValue="false"/>
<OutputClaim ClaimTypeReferenceId="errorMessage"
PartnerClaimType="ErrorMessage"/>
</OutputClaims>
Таким образом, у меня естьпретензия для проверки на шаге 4
. Обратите внимание, что я также возвращаю errorMessage
от конечной точки. Это сообщение об ошибке будет позже передано в SelfAsserted-RegError
Технический профиль.
В зависимости от проверки, выполненной в серверной части, extension_isEnabled
получит True или False .
На шаге 4
мы проверяем extension_isEnabled
:
<OrchestrationStep Order="4"
Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimEquals"
ExecuteActionsIf="true">
<Value>extension_isEnabled</Value>
<Value>True</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SelfAssertedRegError"
TechnicalProfileReferenceId="SelfAsserted-RegError" />
</ClaimsExchanges>
</OrchestrationStep>
Шаг 4
будет выполняться только тогда, когда extension_isEnabled
is false . Если это true , мы SkipThisOrchestrationStep
и технический профиль SelfAsserted-RegError
вообще не будут вызываться. Поток UserJourney
продолжается, как и ожидалось.