The persist dictionary object is both an input and output of a BRAHMS-Python Process. The object passed in is the same object as was passed out on the previous call; for the first call, the state of the persist object is as described below. Any changes the process makes to the object will, thus, persist.

The process may perform any modifications to the object whilst being called, and these modifications will be persisted to subsequent calls. Generally, the process should keep persist clean and as empty as possible, since it takes time to pass stuff into and out of the function (simple processes may clear persist completely).


This section details the initial state of the persist object. It may be changed or augmented by the process at any time.

Process information with (currently) one field, name, the SystemML name of the process.
The numeric identifier of the process, akin to C++'s this. DO NOT rely on this identifier being unique - it ain't necessarily so (especially on Concerto).
The SystemML document process <State> node, converted to a generic representation. You should parametrize your process using DataML to ensure that your state node can be translated correctly.
A template response structure, that the process may want to pass out in its output argument output. Without modification, this structure reponds "no response" and "no error". Its use is shown in the example Python Function. NOTE that if you are going to copy this field to send as your output, you must use deepcopy to copy it.

Future directions

We reckon that if you don't parametrize using DataML, you'll get a generic XML representation; currently, it probably just falls over.