Interface IRefinedExecutionResultDescriptor<Model>

Type Parameters:
Model - Type of the properties model for the node.
All Known Subinterfaces:
IBaseActionClientHandlerNode<TData>, IBaseActionNode<TData>, IBaseConditionClientHandlerNode<TData>, IBaseDoUntilLoopClientHandlerNode<TData>, IBaseWhileLoopClientHandlerNode<TData>, IBeanValidatingNode<TData>, IBuiltinNodeType<TData>, IDefaultClientHandlerNode<TData>, IExecutingLikeActionNode<Model>, IExecutingLikeBinarySelectionNode<TData>, IExecutingLikeControlTransferNode<TData>, IExecutingLikeExceptionHandlerNode<TData>, IExecutingLikeMultiSwitchNode<TData>, IExecutingLikePostTestLoopNode<TData>, IExecutingLikePreTestLoopNode<TData>, IExecutingLikeReturningActionNode<TData>, IExecutingLikeReturnNode<TData>, IExecutingLikeSequenceNode<TData>, IExecutingLikeThrowNode<TData>, IFcCompressAsZipDescriptors, IFcCreateTextFileDescriptors, IFcDecodeBase64Descriptor, IFcEmailDescriptors, IFcExportFormRecordChatsDescriptors, IFcExportToPersistenceDescriptors, IFcExportToXmlDescriptors, IFcFillPdfDescriptors, IFcFillWordDescriptors, IFcForEachLoopDescriptors, IFcHttpRequestDescriptors, IFcProcessLogPdfDescriptor, IFcPromptQueryDescriptors, IFcProvideResourceDescriptors, IFileProviding<TData>, IHierarchyValidatingNode<TData>, ILoopStatementMustLoopValidating<TData>, IMultipleCheckPropertiesNode<TData>, INodeHandler<Model>, 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, FcChangeFormRecordChatActivenessHandler, FcChangeFormValueHandler, FcChangeStateHandler, FcCompressAsZipHandler, FcContinueHandler, FcCopyFormRecordHandler, FcCounterHandler, FcCreateTextFileHandler, FcDecodeBase64Handler, FcDeleteAttachmentHandler, FcDeleteFormRecordHandler, FcDoiInitHandler, FcDoUntilLoopHandler, FcEmailHandler, FcEmptyHandler, FcEncodeBase64Handler, FcExperimentHandler, FcExportFormRecordChatsHandler, FcExportToPersistenceHandler, FcExportToXmlHandler, FcFillPdfHandler, FcFillWordHandler, FcForEachLoopHandler, FcHttpRequestHandler, FcImportFormValueFromXmlHandler, FcLdapQueryHandler, FcLogEntryHandler, FcMoveFormRecordToInboxHandler, FcMultipleConditionHandler, FcProcessHistoryPdfHandler, FcProcessLogPdfHandler, FcPromptQueryHandler, FcProvideResourceHandler, FcQueueTaskHandler, FcRedirectHandler, FcRenewProcessIdHandler, FcReturnFileHandler, FcReturnHandler, FcSaveToFileSystemHandler, FcSaveToWebDavHandler, FcSendFormRecordMessageHandler, FcSequenceHandler, FcSetFormRecordPasswordHandler, FcSetSavedFlagHandler, FcShowTemplateHandler, FcSqlStatementHandler, FcSwitchCaseHandler, FcSwitchDefaultHandler, FcSwitchHandler, FcThrowExceptionHandler, FcVoidHandler, FcWhileLoopHandler, FcWithFormElementContextHandler, FcWriteFormRecordAttrHandler

public interface IRefinedExecutionResultDescriptor<Model>
See IExecutionResultDescriptor for more details. This is similar, but allows the execution result to be refined depending on the node's configuration, i.e. the contents of its property model. For example, a loop node might let the user choose whether to loop over a list of files or a list of strings. Depending on the user's choice, the node's current value might change. By defining a value descriptor for each case, we can show the user only the relevant data for that case.

All value descriptors must be compatible with the general descriptors returned by IExecutionResultDescriptor. The final value descriptor is obtained by taking the intersection of the general value descriptor with the refined value descriptor, i.e.:

intersect(getSuccessValueDescriptor(), getSuccessValueDescriptor(model))
intersect(getFileValueDescriptor(), getFileValueDescriptor(model))
For example, you can use a general value descriptor that allows for either strings or numbers ( union: string | number). Depending on the node's configuration, the refined value descriptor could be either just a string or just a number. Or you can use a general file descriptor that allows PDF and Word documents. Depending on the node's configuration, the refined file descriptor could allow either just a PDF document or just a Word document.

On the other hand, if general value descriptor were to allow only strings and the refined value descriptor were to allow only booleans, the final value descriptor would evaluate to intersect(boolean, string) = void. In other words, the node could not provide data. Any attempts to provide data when the node is executed will be ignored by the workflow engine. Similarly, if the general file value descriptor were to allow only PDF documents and the refined file value descriptor were to allow only Word documents, the final file value descriptor would evaluate to intersect(PDF, Word) = empty, so no files would be allowed.

Note: The value and file descriptors are 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 and file descriptor, the workflow engine ensures that the UI agrees with the actual behavior.

Since:
8.2.0