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:
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    execute(P parameters)