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 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:
ArchiveOperations
provides means to operate on archives such as ZIP or TAR files.ExecOperations
provides means to execute external processes.FileSystemOperations
provides means to operate on the file system./** * Plays a given {@link Parameters#getMediaFile() media file} using {@code ffplay}. */ class FFPlay implements FlowAction<FFPlay.Parameters> { interface Parameters extends FlowParameters { RegularFileProperty 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().getAsFile().getAbsolutePath() ); spec.setIgnoreExitValue(true); }); } }
FlowScope
,
FlowProviders
Modifier and Type | Method | Description |
---|---|---|
void |
execute(P parameters) |
void execute(P parameters) throws java.lang.Exception
java.lang.Exception