Concept: foutafhandelingscomponenten
Studio biedt drie verschillende
fouthandlers
in het palet
:
Naam | Functie |
|---|---|
fout bij verzenden
| Hiermee kunt u de fout verwerken met behulp van standaardcomponenten en -stappen. Een veelvoorkomend patroon is om Send-error te gebruiken om de fout aan de integratiegebeurtenis te rapporteren door de gemeenschappelijke component PutIntegrationMessage aan te roepen. |
log-error
| Hiermee wordt de huidige fout vastgelegd in het uitvoerlogboek. Bevat het foutbericht en de stacktracering van de Java-uitzondering. Gebruik deze optie wanneer het niet nodig is om afzonderlijk fouten in de integratiegebeurtenis aan het licht te brengen, maar u het bericht wel wilt vastleggen op het moment dat de fout zich voordoet. Vermijd het vastleggen van grote berichten, omdat deze de prestaties kunnen verminderen en kunnen worden afgekapt, wat kan leiden tot verlies van diagnostische gegevens. |
custom-error-handler
| Hiermee kunt u een springbean opgeven die Java gebruikt om de fout te verwerken. Gebruik deze optie wanneer voor foutafhandeling complexe Java-code is vereist. |
U kunt een fouthandler toevoegen als onderliggend element van een bemiddelingscomponent of als afzonderlijk element in de assemblage. Fouthandlers die aan bemiddelingscomponenten zijn toegevoegd, zijn lokaal. Fouthandlers voor de assemblage zijn algemeen.
Wanneer Workday een fout aantreft in een Studio-integratie, stopt Workday de normale verwerking en wordt de keten van verwerkte componenten afgewikkeld, op zoek naar een fouthandler die kan worden aangeroepen. Fouten worden altijd eerst lokaal verwerkt. Als er geen lokale fouthandler beschikbaar is, wordt de verantwoordelijkheid overgedragen aan de algemene fouthandler. Gebruik lokale fouthandlers als u nauwkeurige controle wilt over wat er gebeurt als er fouten optreden of als u de gedetailleerde context wilt rapporteren van wat de integratie aan het doen was op het moment van de fout. Beschouw algemene fouthandlers als een failsafe.
Als elke fouthandler is geactiveerd en een fout nog steeds niet is gemarkeerd als afgehandeld, wordt het bericht verwerkt, wordt een fout gegenereerd op basis van de uitzondering en wordt de assembly gemarkeerd als beëindigd. De integratie wordt beschreven als Voltooid met fouten.
Opmerkelijk standaardgedrag:
- Lokale fouthandlers verwerken alleen fouten die optreden in de bovenliggende bemiddelingscomponent. Ze kunnen echter ook fouten in downstreamcomponenten verwerken. Als u dit gedrag wilt inschakelen, stelt u de eigenschap'Downstreamfouten afhandelen'van de bemiddelingscomponent met de fouthandler in optrue.
- Fouten worden in Workday gemarkeerd als afgehandeld wanneer een fouthandler wordt aangeroepen. Als u de eigenschapRethrow Errorvan een fouthandler instelt optrue, wordt de fout niet gewist. Als gevolg hiervan wordt de fout afgehandeld door de volgende upstream-fouthandler binnen het bereik of de algemene fouthandler. Gebruik dit patroon om de details van een fout lokaal te rapporteren, maar om de algehele fout of voltooiing op een hoger niveau in de assemblage af te handelen.
- Wanneer in Workday een fout wordt verwerkt, wordt de berichtverwerking opnieuw gestart vanuit de aangeroepen fouthandler en wordt het antwoordpad voortgezet naar het element waarin de fout is opgetreden. U kunt echter opgeven dat de verwerking moet worden hervat op het element waarin de fout is opgetreden. Als u dit gedrag wilt inschakelen, stelt u de eigenschapDoorgaan na fout invan de bemiddelingscomponent met de fouthandler om '' teherstellen. Gebruik dit gedrag in situaties waarin de code die door de fouthandler wordt aangeroepen de foutvoorwaarde kan corrigeren, zodat de mislukte bewerking opnieuw kan worden uitgevoerd.
U kunt meer controle over fouthandlers uitoefenen door MVEL-voorwaarde-expressies toe te voegen aan de weergave
Eigenschappen
. Als er voorwaardeexpressies aanwezig zijn, wordt de fouthandler alleen aangeroepen als deze allemaal 'waar' zijn.U kunt het verhogen van de fout afdwingen met behulp van de
context.setError
of context.SetException
methoden in MVEL- of Java-code. Bij gebruik van de setError
kunt u een fout-ID configureren die kan worden gedetecteerd door voorwaardelijke expressies in de fouthandler. Gebruik deze techniek wanneer u een fout lokaal afhandelt, maar details van het fouttype wilt doorgeven aan een stroomopwaartse fouthandler voor algemene afhandeling.U kunt fouten ook afhandelen met behulp van
routecomponenten
:
- Defailoverstrategieprobeert een route te gebruiken. Als er een fout optreedt, wordt de failoverroute uitgevoerd, waarbij de fout wordt gemarkeerd als afgehandeld.
- Met deaangepaste strategiekunt u een springbean leveren. Springbeans implementeert deRoutingStrategy-interface, die een . heeftisHandleErrormethode. Gebruik deze methode om op te geven dat de strategie fouten moet verwerken.