Interface FlowAction<P extends FlowParameters>

  • Type Parameters:
    P - Parameter type for the dataflow action. Should be FlowParameters.None if the action does not have parameters.

    @Incubating
    public interface FlowAction<P extends FlowParameters>
    A dataflow action.

    A parameterized and isolated piece of work that becomes eligible for execution within a dataflow scope as soon as all of its input parameters become available.

    Implementations can benefit from constructor injection of services using the @Inject annotation. Currently, only a small subset of services is supported:

     /**
      * Plays a given {@link Parameters#getMediaFile() media file} using {@code ffplay}.
      */
     class FFPlay implements FlowAction<FFPlay.Parameters> {
    
         interface Parameters extends FlowParameters {
             @Input
             Property<File> getMediaFile();
         }
    
         private final ExecOperations execOperations;
    
         @Inject
         FFPlay(ExecOperations execOperations) {
             this.execOperations = execOperations;
         }
    
         @Override
         public void execute(Parameters parameters) throws Exception {
             execOperations.exec(spec -> {
                 spec.commandLine(
                     "ffplay", "-nodisp", "-autoexit", "-hide_banner", "-loglevel", "quiet",
                     parameters.getMediaFile().get().getAbsolutePath()
                 );
                 spec.setIgnoreExitValue(true);
             });
         }
     }
     
    Since:
    8.1
    See Also:
    FlowScope, FlowProviders
    • Method Detail

      • execute

        void execute​(P parameters)
              throws java.lang.Exception
        Throws:
        java.lang.Exception