I am thinking about implementing this as a plug-in as well. The plug-in would be configurable and one configuration represents one external tool. An admin (or other user with proper privileges) can create configurations. The configuration can be used to record parameter types that are applicable to the tool in question. It should also record what kind of file(s) the tool generates as output and store that as references to DataFileType:s (currently BASE defines serial/matrix BASEfiles and MeV TDMS file types).
When a user uses the plug-in a configuration is selected and the user can then enter values for the defined parameters and select files for the references file types. The plug-in can then just create a new transform/bioassay set and link evreything together. It can do this as the final step of the job configuration phase and there is really no need to put this on the job queue.
One thing to consider is how to define parameters for a tool. We can simply leave this as key/value combinations with little or no control that the entered values actually makes sense.
Or, we could have a fancy interface similar to how annotation types are defined that allows the admin to specify data type, limits, enumeration options, etc. Hmmm.... maybe we can use annotation types for this? It is already possible to attach annotation types to plug-in configurations... all we need is a way to convert an annotation type to a plug-in parameter.
A third option is something inbetween that uses a BASEfile with parameter definitions (similar to how a BASE 1 plug-in is configured). I don't know how easy it is to write such a BASEfile.