Apologies for the break, trying to wrap up on some template standards for the EBS division ...
We now have an idea of the Delivery Manager APIs and what they can do and the limitations within the EBS infrastructure for using them to deliver documents. Now we need to know how we can hook up the delivery APIs to the concurrent manager. As I have mentioned before the delivery manager is not integrated into the concurrent manager. We need to use another method to get the document generated by the concurrent manager to the delivery manager. The concurrent manager expects to direct a document to a printer, the setup of printers has some flexibility and we can take advantage of that, rather than have a printer at the end of the flow we can have a shell script that can then direct the output to another delivery stream.
Setup XMLP as a virtual printer
Using the System Administrator responsibility we can create a new Printer Driver but rather than calling a print command such as 'lp' we can call our shell script.
The most important field is the 'Arguments' field, this is where we specify the script to call and pass parameters:
$XX_TOP/delivery/xmlpmailer.sh $PROFILES$.CONC_REQUEST_ID $PROFILES$.FILENAME + others
$XX_TOP/delivery/xmlpmailer.sh - is the location and name of the script we want to call
$PROFILES$.CONC_REQUEST_ID - is the request id of the report we are sending
$PROFILES$.FILENAME - is the name of the file we want to deliver
others - we can pass other parameters, either from the PROFILES object or hardcode values here. There is no definitive list of what those PROFILES are in the Oracle documentation but using a little trial and error you can chekc what can and can not be passed. To find the other PROFILES that might be supported have the forms interface open Help > Diagnostics > Examine. Find PROFILES in the popup windows Block field. Heres what I have found is supported so far, not an exhaustive list:
With this lot we can derive quite alot of information and with a trip back to the database to we can get even more information.
To test all this theory you will need to enter the murky world of printers, printer types, styles and drivers ... I still sometimes struggle getting the right combination ... reading the manual, some trial and error and above all patience helps.
I created a very simple shell script to simply write the PROFILE values to a file:
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 > /apps/vis11510appl/xdo/11.5.0/delivery/1.log
The exit command is important, without it the concurrent manager will leave your request id as still running. Before you can test the new driver you'll need to bounce the concurrent manager and again for any changes. The following script became my best friend very quickly while putting these articles together:
startmgr sysmgr="apps/pwd" mgrname="std" printer="hqseq1" mailto="jsmith"
restart="N" logfile="mgrlog" sleep="90" pmon="5" quesiz="10"
So, we can call a script, but what do we want it do ?
Well by now you will hopefully have managed to get the printers on your network working with Apps and a great saying comes to mind here ... if it ain't broke don't fix it. If we leave printing then we have email, fax, ftp, webdav, http or even a custom channel to deliver documents to. All we need do is create a java class that takes the arguments above and then delivers the document ...easy!
Next article we'll tackle emailing documents from the EBS