# -- # Copyright (C) 2001-2019 OTRS AG, https://otrs.com/ # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (GPL). If you # did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt. # --

[% Translate( "GenericInterface Web Service Management" ) | html %]

[% USE WebserviceLink = String("AdminGenericInterfaceWebservice;Subaction=Change;WebserviceID=") %] [% BreadcrumbPath = [ { Name => Translate( 'Web Service Management' ), Link => BreadcrumbLink, }, { Name => Data.WebserviceName, Link => WebserviceLink.append( Data.WebserviceID ), }, ] %] [% SWITCH Data.Action %] [% CASE 'Add' %] [% USE AddTitle = String(Translate("Add ErrorHandling")) %] [% BreadcrumbPath.push({ Name => AddTitle.append( ': ', Data.ErrorHandlingType ), }) %] [% CASE 'Change' %] [% USE EditTitle = String(Translate("Edit ErrorHandling")) %] [% BreadcrumbPath.push({ Name => EditTitle.append( ': ', Data.ErrorHandlingType ), }) %] [% END %] [% INCLUDE "Breadcrumb.tt" Path = BreadcrumbPath %]

[% Translate("Actions") | html %]

  • [% Translate("Go back to web service") | html %]
  • [% IF Data.Action == 'Change' %]
  • [% END %]

[% Translate("Hint") | html %]

[% Translate("This module allows to configure scheduled retries for failed requests.") | html %]

[% Translate("Default behavior of GenericInterface web services is to send each request exactly once and not to reschedule after errors.") | html %]

[% Translate("If more than one module capable of scheduling a retry is executed for an individual request, the module executed last is authoritative and determines if a retry is scheduled.") | html %]

[% IF Data.Action == 'Change' %] [% END %]

[% Translate("General options") | html %]

[% Translate("The name can be used to distinguish different error handling configurations.") | html %]

[% Translate("Please provide a unique name for this web service.") | html %]
[% Translate("The name you entered already exists.") | html %]

[% Translate("This OTRS error handling backend module will be called internally to process the error handling mechanism.") | html %]

[% Translate("Processing options") | html %]

[% Translate("Configure filters to control error handling module execution.") | html %]

[% Translate("Only requests matching all configured filters (if any) will trigger module execution.") | html %]

[% RenderBlockStart("OperationFilter") %]
[% Data.OperationFilterStrg %]

[% Translate("Only execute error handling module for selected operations.") | html %]
[% Translate("Note: Operation is undetermined for errors occuring while receiving incoming request data. Filters involving this error stage should not use operation filter.") | html %]

[% RenderBlockEnd("OperationFilter") %] [% RenderBlockStart("InvokerFilter") %]
[% Data.InvokerFilterStrg %]

[% Translate("Only execute error handling module for selected invokers.") | html %]

[% RenderBlockEnd("InvokerFilter") %]

[% Translate("Enter a regular expression to restrict which error messages should cause error handling module execution.") | html %]
[% Translate("Error message subject and data (as seen in the debugger error entry) will considered for a match.") | html %]
[% Translate("Example: Enter '^.*401 Unauthorized.*\$' to handle only authentication related errors.") | html %]

[% Data.ErrorStageFilterStrg %]

[% Translate("Only execute error handling module on errors that occur during specific processing stages.") | html %]
[% Translate("Example: Handle only errors where mapping for outgoing data could not be applied.") | html %]

[% Translate("An error identifier for this error handling module.") | html %]
[% Translate("This identifier will be available in XSLT-Mapping and shown in debugger output.") | html %]

[% Translate("An error explanation for this error handling module.") | html %]
[% Translate("This message will be available in XSLT-Mapping and shown in debugger output.") | html %]

[% Data.StopAfterMatchStrg %]

[% Translate("Define if processing should be stopped after module was executed, skipping all remaining modules or only those of the same backend.") | html %]
[% Translate("Default behavior is to resume, processing the next module.") | html %]

[% Translate("Request retry options") | html %]

[% Translate("Retry options are applied when requests cause error handling module execution (based on processing options).") | html %]
[% Data.ScheduleRetryStrg %]

[% Translate("Should requests causing an error be triggered again at a later time?") | html %]

[% Translate("This field is required.") | html %]

[% Data.RetryIntervalStartStrg %]

[% Translate("Interval after which to trigger the first retry.") | html %]
[% Translate("Note: This and all further retry intervals are based on the error handling module execution time for the initial request.") | html %]

[% Translate("This field is required.") | html %]

[% Data.RetryIntervalFactorStrg %]

[% Translate("If a request returns an error even after a first retry, define if subsequent retries are triggered using the same interval or in increasing intervals.") | html %]
[% Translate("Example: If a request is initially triggered at 10:00 with initial interval at '1 minute' and retry factor at '2', retries would be triggered at 10:01 (1 minute), 10:03 (2*1=2 minutes), 10:07 (2*2=4 minutes), 10:15 (2*4=8 minutes), ...") | html %]

[% Translate("This field is required.") | html %]

[% Data.RetryIntervalMaxStrg %]

[% Translate("If a retry interval factor of '1.5' or '2' is selected, undesirably long intervals can be prevented by defining the largest interval allowed.") | html %]
[% Translate("Intervals calculated to exceed the maximum retry interval will then automatically be shortened accordingly.") | html %]
[% Translate("Example: If a request is initially triggered at 10:00 with initial interval at '1 minute', retry factor at '2' and maximum interval at '5 minutes', retries would be triggered at 10:01 (1 minute), 10:03 (2 minutes), 10:07 (4 minutes), 10:12 (8=>5 minutes), 10:17, ...") | html %]

[% Translate("This field is required.") | html %]

[% Translate("Maximum number of retries before a failing request is discarded, not counting the initial request.") | html %]
[% Translate("Example: If a request is initially triggered at 10:00 with initial interval at '1 minute', retry factor at '2' and maximum retry count at '2', retries would be triggered at 10:01 and 10:02 only.") | html %]
[% Translate("Note: Maximum retry count might not be reached if a maximum retry period is configured as well and reached earlier.") | html %]

[% Translate("This field must be empty or contain a positive number.") | html %]

[% Data.RetryPeriodMaxStrg %]

[% Translate("Maximum period of time for retries of failing requests before they are discarded (based on the error handling module execution time for the initial request).") | html %]
[% Translate("Retries that would normally be triggered after maximum period is elapsed (according to retry interval calculation) will automatically be triggered at maximum period exactly.") | html %]
[% Translate("Example: If a request is initially triggered at 10:00 with initial interval at '1 minute', retry factor at '2' and maximum retry period at '30 minutes', retries would be triggered at 10:01, 10:03, 10:07, 10:15 and finally at 10:31=>10:30.") | html %]
[% Translate("Note: Maximum retry period might not be reached if a maximum retry count is configured as well and reached earlier.") | html %]

[% Translate("Submit") | html %]

[% IF Data.Action == 'Change' %] [% Translate("or") | html %] [% ELSE %] [% END %] [% Translate("or") | html %] [% Translate("Cancel") | html %]