Interface IExecutionResultDescriptor
-
- All Known Subinterfaces:
IBaseActionClientHandlerNode<TData>
,IBaseActionNode<TData>
,IBaseConditionClientHandlerNode<TData>
,IBaseDoUntilLoopClientHandlerNode<TData>
,IBaseWhileLoopClientHandlerNode<TData>
,IBeanValidatingNode<TData>
,IBuiltinNodeType<TData>
,IDefaultClientHandlerNode<TData>
,IExecutingLikeActionNode<TData>
,IExecutingLikeBinarySelectionNode<TData>
,IExecutingLikeControlTransferNode<TData>
,IExecutingLikeExceptionHandlerNode<TData>
,IExecutingLikeMultiSwitchNode<TData>
,IExecutingLikePostTestLoopNode<TData>
,IExecutingLikePreTestLoopNode<TData>
,IExecutingLikeReturningActionNode<TData>
,IExecutingLikeReturnNode<TData>
,IExecutingLikeSequenceNode<TData>
,IExecutingLikeThrowNode<TData>
,IFcChangeFormAvailabilityDescriptors
,IFcChangeFormValueDescriptors
,IFcChangeStateDescriptors
,IFcCompressAsZipDescriptors
,IFcCopyFormRecordDescriptors
,IFcCounterDescriptor
,IFcCreateTextFileDescriptors
,IFcDecodeBase64Descriptor
,IFcDeleteAttachmentDescriptors
,IFcDoiInitDescriptor
,IFcDoUntilLoopDescriptors
,IFcEmailDescriptors
,IFcEncodeBase64Descriptor
,IFcExportToPersistenceDescriptors
,IFcExportToXmlDescriptors
,IFcFillPdfDescriptors
,IFcFillWordDescriptors
,IFcForEachLoopDescriptors
,IFcHttpRequestDescriptors
,IFcImportFormValueFromXmlDescriptors
,IFcLdapQueryDescriptors
,IFcLogEntryDescriptor
,IFcMoveFormRecordToInboxDescriptors
,IFcMultipleConditionDescriptors
,IFcProcessLogPdfDescriptor
,IFcProvideResourceDescriptors
,IFcQueueTaskDescriptors
,IFcRedirectDescriptors
,IFcRenewProcessIdDescriptors
,IFcReturnFileDescriptors
,IFcSaveToFileSystemDescriptors
,IFcSaveToWebDavDescriptors
,IFcSendFormRecordMessageDescriptor
,IFcSetSavedFlagDescriptor
,IFcShowTemplateDescriptors
,IFcSqlStatementDescriptors
,IFcThrowExceptionDescriptors
,IFcWhileLoopDescriptors
,IFcWriteFormRecordAttrDescriptors
,IFileProviding<TData>
,IHierarchyValidatingNode<TData>
,ILoopStatementMustLoopValidating<TData>
,IMultipleCheckPropertiesNode<TData>
,INodeHandler<TData>
,IOfficialHelpPageNode<TData>
,IPluginActionNodeHandler<TData>
,IPluginConditionNodeHandler<TData>
,IPluginDoUntilLoopNodeHandler<TData,TState>
,IPluginWhileLoopNodeHandler<TData,TState>
,IResultlessNode<TData>
,ISemverUpdatingNode<TData>
,ISingleBaseActionBuiltinNodePrototype<TData>
,ISingleBaseActionNodePrototype<TData>
,ISingleBaseConditionNodePrototype<TData>
,ISingleBaseDoUntilLoopNodePrototype<TData>
,ISingleBaseWhileLoopNodePrototype<TData>
,ISingleBuiltinNodePrototype<TData>
,de.xima.fc.workflow.retval.node.ISingleFileProvisionFileDescriptor<Model>
,ISingleNodePrototype<TData>
- All Known Implementing Classes:
APluginActionNodeHandler
,APluginConditionNodeHandler
,APluginDoUntilLoopNodeHandler
,APluginWhileLoopNodeHandler
,FcBreakHandler
,FcChangeFormAvailabilityHandler
,FcChangeFormValueHandler
,FcChangeStateHandler
,FcCompressAsZipHandler
,FcContinueHandler
,FcCopyFormRecordHandler
,FcCounterHandler
,FcCreateTextFileHandler
,FcDecodeBase64Handler
,FcDeleteAttachmentHandler
,FcDeleteFormRecordHandler
,FcDoiInitHandler
,FcDoUntilLoopHandler
,FcEmailHandler
,FcEmptyHandler
,FcEncodeBase64Handler
,FcExperimentHandler
,FcExportToPersistenceHandler
,FcExportToXmlHandler
,FcFillPdfHandler
,FcFillWordHandler
,FcForEachLoopHandler
,FcHttpRequestHandler
,FcImportFormValueFromXmlHandler
,FcLdapQueryHandler
,FcLogEntryHandler
,FcMoveFormRecordToInboxHandler
,FcMultipleConditionHandler
,FcProcessHistoryPdfHandler
,FcProcessLogPdfHandler
,FcProvideResourceHandler
,FcQueueTaskHandler
,FcRedirectHandler
,FcRenewProcessIdHandler
,FcReturnFileHandler
,FcReturnHandler
,FcSaveToFileSystemHandler
,FcSaveToWebDavHandler
,FcSendFormRecordMessageHandler
,FcSequenceHandler
,FcSetSavedFlagHandler
,FcShowTemplateHandler
,FcSqlStatementHandler
,FcSwitchCaseHandler
,FcSwitchDefaultHandler
,FcSwitchHandler
,FcThrowExceptionHandler
,FcWhileLoopHandler
,FcWriteFormRecordAttrHandler
public interface IExecutionResultDescriptor
Each action may create data when it is executed. For example, an action that makes a network request might make the response data available to the workflow, so that it can be accessed e.g. via placeholders. A for-each-loop node might make available the current loop index and the item of the current iteration.This interface contains the descriptors that describe the type of data created during the execution of the node as well as the data created after the node was executed, either successfully or erroneously. This descriptor is used to show the user in the designer an overview of the available results; and also to enforce that the data provided by nodes conforms to that descriptor. When a node attempts to provide data that does not conform to the descriptor, such as extraneous properties of a
IRecordValueDescriptor
, these properties are discarded and cannot be accessed by any means.Note: The value descriptor is also used by the UI to inform the UI about the possible return values of a node. By ignoring all provided values incompatible with the value descriptor, the workflow engine ensures that the UI agrees with the actual behavior.
You can create the descriptor on demand when the methods of this interface are called, but no guarantees are made as to whether or how much the descriptors are cached. The value descriptors created by the default
ValueDescriptorFactory
are immutable, so you may create them once and store them in a static field or other singleton. UseValueDescriptorFactory#getInstance()
for creating the descriptors. You could also implement the interface yourself, but that is not recommended and might break when the interface is amended in later version.- Since:
- 7.0.0
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default IValueDescriptor<?,? extends IValueBuilder<?>>
getAlwaysValueDescriptor(IValueDescriptorFactory factory)
Creates the value descriptor for that data that is made available to the workflow when the node is executed, regardless of whether is succeeded or failed.default IAttachmentValueDescriptor
getAttachmentValueDescriptor()
Creates the descriptor for the attachment or attachments that are created when the node is executed.default IAttachmentValueDescriptor
getCurrentAttachmentValueDescriptor()
Creates the descriptor for the attachment or attachments that are created and made available to other actions while the node is being executed.default IFileValueDescriptor
getCurrentFileValueDescriptor()
Creates the descriptor for the file or files that are created and made available to other actions while the node is being executed.default IValueDescriptor<?,? extends IValueBuilder<?>>
getCurrentValueDescriptor(IValueDescriptorFactory factory)
Creates the value descriptor for the data that is made available to the workflow while the node is being executed.IUnionValueDescriptor<String>
getErrorValueDescriptor(IValueDescriptorFactory factory)
The union descriptor for the different error types that may occur when the node is executed.default IFileValueDescriptor
getFileValueDescriptor()
Creates the descriptor for the file or files that are created and made available to other actions when the node is executed.default IUnionValueDescriptor<String>
getSoftErrorValueDescriptor(IValueDescriptorFactory factory)
The union descriptor for the differentsoft error
types that may occur when the node is executed.IValueDescriptor<?,? extends IValueBuilder<?>>
getSuccessValueDescriptor(IValueDescriptorFactory factory)
Creates the value descriptor for the data that is made available to the workflow when the node was executed successfully.
-
-
-
Method Detail
-
getAlwaysValueDescriptor
default IValueDescriptor<?,? extends IValueBuilder<?>> getAlwaysValueDescriptor(IValueDescriptorFactory factory)
Creates the value descriptor for that data that is made available to the workflow when the node is executed, regardless of whether is succeeded or failed. The default implementation returnsIValueDescriptorFactory.voidish()
, i.e no additional result.- Parameters:
factory
- Factory that may be used for creating the descriptor. You may also useValueDescriptorFactory.getInstance()
if you wish to cache the descriptor in a static or instance field.- Returns:
- The value descriptor for that data that is made available to the workflow when the node is executed, regardless of whether is succeeded or failed.
-
getCurrentAttachmentValueDescriptor
default IAttachmentValueDescriptor getCurrentAttachmentValueDescriptor()
Creates the descriptor for the attachment or attachments that are created and made available to other actions while the node is being executed. Should returnnull
when the node provides no attachments.- Returns:
- The descriptor for the attachment or attachment made available while the node is being executed.
-
getCurrentFileValueDescriptor
default IFileValueDescriptor getCurrentFileValueDescriptor()
Creates the descriptor for the file or files that are created and made available to other actions while the node is being executed. Should returnnull
when the node provides no files.- Returns:
- The descriptor for the file or files made available while the node is being executed.
-
getCurrentValueDescriptor
default IValueDescriptor<?,? extends IValueBuilder<?>> getCurrentValueDescriptor(IValueDescriptorFactory factory)
Creates the value descriptor for the data that is made available to the workflow while the node is being executed.- Parameters:
factory
- Factory that may be used for creating the descriptor. Instead of the factory passed in to this method, you may also useValueDescriptorFactory.getInstance()
if you wish to cache the descriptor in a static or instance field.- Returns:
- The descriptor for data published by the node while it is being executed.
-
getErrorValueDescriptor
IUnionValueDescriptor<String> getErrorValueDescriptor(IValueDescriptorFactory factory)
The union descriptor for the different error types that may occur when the node is executed. Each discriminator of the union represents an error or exception type.factory.recordBuilder() // .requiredProperty("errorCode", factory.integer()) // .requiredProperty("errorMessage", factory.string()) // .requiredProperty("localizedMessage", factory.integer()); return factory.add("CONNECT_TIMEOUT", error) // .add("READ_TIMEOUT", error);
The example above uses the same data type for each error, but you can return different data depending on the error type.Note that you do not have to include a general error code. When the
execute
method of a node handler throws an unhandled (runtime) exception, the error codeCmnConst.Workflow.ERROR_CODE_GENERAL
is set automatically.- Parameters:
factory
- Factory that may be used for creating the descriptor. You may also useValueDescriptorFactory.getInstance()
if you wish to cache the descriptor in a static or instance field.- Returns:
- The value descriptor for the data that is made available to the workflow when the execution of the node failed (such as by throwing an exception).
-
getAttachmentValueDescriptor
default IAttachmentValueDescriptor getAttachmentValueDescriptor()
Creates the descriptor for the attachment or attachments that are created when the node is executed. Should returnnull
when the node never creates attachments.- Returns:
- The descriptor for the attachment or attachments made available after the node was executed.
-
getFileValueDescriptor
default IFileValueDescriptor getFileValueDescriptor()
Creates the descriptor for the file or files that are created and made available to other actions when the node is executed. Should returnnull
when the node provides node files.- Returns:
- The descriptor for the file or files made available after the node was executed.
-
getSoftErrorValueDescriptor
default IUnionValueDescriptor<String> getSoftErrorValueDescriptor(IValueDescriptorFactory factory)
The union descriptor for the differentsoft error
types that may occur when the node is executed. Each discriminator of the union represents an error or exception type.factory.recordBuilder() // .requiredProperty("errorCode", factory.integer()) // .requiredProperty("errorMessage", factory.string()) // .requiredProperty("localizedMessage", factory.integer()); return factory.add("MISSING_UPLOAD", error) // .add("CLIENT_ERROR", error);
The example above uses the same data type for each error, but you can return different data depending on the error type.@implNote This interface provides a default implementation that returns an empty descriptor for backwards compatibility so as not to break existing implementation. However, all existing implementations are strongly advised to override and implement this method. The default implementation may be removed at some point.
- Parameters:
factory
- Factory that may be used for creating the descriptor. You may also useValueDescriptorFactory.getInstance()
if you wish to cache the descriptor in a static or instance field.- Returns:
- The value descriptor for the data that is made available to the workflow when the execution of the node was successful, but contains one or more soft errors.
- Since:
- 7.0.7
-
getSuccessValueDescriptor
IValueDescriptor<?,? extends IValueBuilder<?>> getSuccessValueDescriptor(IValueDescriptorFactory factory)
Creates the value descriptor for the data that is made available to the workflow when the node was executed successfully.- Parameters:
factory
- Factory that may be used for creating the descriptor. Instead of the factory passed in to this method, you may also useValueDescriptorFactory.getInstance()
if you wish to cache the descriptor in a static or instance field.- Returns:
- The data provided by the node after having been executed successfully.
-
-