In general Quaestor is able to "see" satellite programs as objects / parameters, providing values to the calculation process. For every process there is a generic approach with respect to the file and data management. The way Quaestor is actually communicating with the external program depends on the program itself.
File and data management for external programs
Quaestor has two concerns while using programs:
By default Quaestor expects programs in the Applic directory as specified in the standard directory structure. As working directory Quaestor will set the project directory as specified in the standard directory structure. As Knowledge Engineer you are able to specify other directories to find files from withing Quaestor. However, you cannot manipulate the way the external project will find its files. All the required files should always be available in the working directory set by Quaestor.
By means of a special @COPYFIRST attribute for the GET$ function you are able to copy any file prior to running a program. In this way you can make sure any additional data files or dll's are copied to the working directory to be find by the external process.
Program interaction
We distinguish the following program interaction:
Note that, with some effort, most of the programs can be integrated with Quaestor.
Please realize however that a connection itself is one thing. What type of information a program requires and is providing, and how intelligent this program is, will determine its usability in a process (or the effort to make it work) to a far greater extent. A smart program can be incorporated with very little effort while a dumb program with equal functionality may require a lot of pre- and post-processing in Quaestor in order to create input and/or get results.
These are the most straight forward programs. Usually these programs expect the input file to have a standard name and to be at the location in the active directory (the working directory, which is actively managed by Quaestor) and the program generates the output file with standard name in this active directory.
In Quaestor the following steps are required:
You might not yet realize, but by the fact that parameters associated to the parse script, are associated to the GET file, which is associated to the program and the put action, which is associated to the template for the input, you have connected the input to the output through the program.
Quaestor manages the setting of the working directory and the execution of the program if required (hence, Quaestor will only run the program when the input changes... which makes it highly efficient!)
These programs are already a little more complex, although this is mainly related to getting them executed and not to the input and output actions.
Most of the time these types of programs are executed:
In Quaestor, the definition of the input file is equal to the first method. However, for execution it might be interesting to create a batch file in addition to the input file. In the batch file you write the specific command line options and in the GET$() relation you do not specify the program itself as process to be executed, but the batch file (which executes the program).
The whole thing still works in the same way but now you are able to parameterize complex batch files enabling all kind of specific actions, such as calling the program from a specific working directory, executing several programs after each other in order to get the result, etc. etc...
See the WINWORD$() and EXCEL#() functions for further details.
See the MACRO() function for further details.