The Script class provides a simple way for users to specify an executable or file to run (and is also a simple example of a workflow module).

class DIRAC.Workflow.Modules.Script.Script(log=None)

Bases: ModuleBase

Module for running executable




Function called by all super classes. This is the only function that Workflow will call automatically.

The design adopted here is that all the modules are inheriting from this class, and will NOT override this function. Instead, the inherited modules will override the following functions: _resolveInputVariables() _initialize() _setCommand() _executeCommand() _execute() that are called here exactly in this order. Each implementation of these functions, in the subclasses, should never return S_OK, S_ERROR. This choice has been made for convenience of coding, and for the high level of inheritance implemented here. Instead, they should return: - None when no issues arise - a RuntimeError exception when there are issues - a GracefulTermination exception (defined also here) when the module should be terminated gracefully

The various parameters in input to this method are used almost only for testing purposes.


Just finalizing the module execution by flushing the logs. This will be done always.


Retrieve the accumulated reporting request, and produce a JSON file that is consumed by the JobWrapper

getCandidateFiles(outputList, outputLFNs, fileMask, stepMask='')

Returns list of candidate files to upload, check if some outputs are missing.

outputList has the following structure:

[ {‘outputDataType’:’’,’outputDataSE’:’’,’outputDataName’:’’} , {…} ]

outputLFNs is the list of output LFNs for the job

fileMask is the output file extensions to restrict the outputs to

returns dictionary containing type, SE and LFN for files restricted by mask

setApplicationStatus(status, sendFlag=True)

Wraps around setJobApplicationStatus of state update client

setJobParameter(name, value, sendFlag=True)

Wraps around setJobParameter of state update client