Question
· Aug 20

Business Process, pool size and external program call (FOP) via $ZF

Question: can a business process with pool size > 1 invoke external programs in parallel via $ZF(-100)?

We have a production that takes HL7 (ORU_R01) messages in and produces a PDF from each one for onward transmission to a document store.

The PDF creation is implemented in a business process which transforms the HL7 to XML, saves the XML to the filesystem, then calls Apache FOP (the version distributed with Ensemble) via $ZF(-100) to produce the PDF, which is stored on the filesystem. The call to FOP takes the name of the XML file, the name of a stylesheet file (one of three, depending on the contents of the HL7 message), and the name of the output file for storing the PDF. The XML and PDF filenames are guaranteed to be unique.

This works smoothly when the pool size for the business process is 1.

However, when pool size > 1 many (most?) of the Apache FOP calls fail to complete, but don't generate errors. To Ensemble they appear to complete successfully, but don't produce a PDF (and run too quickly - in normal operation they are taking 1.5s-2s per PDF, but when executed in parallel the ones that fail appear to be failing pretty much instantly).

Is the problem $ZF, or is it something specific to FOP that stops it being called simultaneously from Ensemble? (We've called FOP from 2x scripts in parallel outside of Ensemble, and that appears to work.)

Product version: Caché 2018.1
$ZV: Cache for Windows (x86-64) 2018.1 (Build 184U) Wed Sep 19 2018 09:09:22 EDT
Discussion (2)2
Log in or sign up to continue