Question Paul Beckett · Mar 29, 2017

Following on from https://community.intersystems.com/post/custom-business-process-change-sendrequestsync-sendrequestasync we are refactoring a number of business processes to use OnRequest/SendRequestAsync/OnResponse mechanisms.

To prevent overloading some of our datasources we currently implement a simple caching system using locks similar to the code below.

Method OnRequest()
{    
    Set key = ..getKey(request)
    
    Lock +^DataCache(key)
    if ('..cacheValid(key))
    {
        Set status = ..SendRequestSync("DataProcess", dataRequest, .dataResponse)
    
        Set
1
1 1131
Question Paul Beckett · Mar 17, 2017

I have a number of Business Process and due to the complexity these were created as "custom code" instead of BPL.

These processes currently invoke other components using SendRequestSync. For a couple of reasons I would like to be able to change these to use SendRequestAsync:

  • a long running BusinessOperation (often over 45s) calling an external system has caused pool sizes to be increased to compensate. This operation is a real time request for the entire health record held for a patient.
  • with the above operation, a different webservice method can be called that allows partial health record to be
5
0 2279
Question Paul Beckett · Jun 16, 2016

Hi,

I have a bit of code that does a find and replace on a "template" and inserts additional content. For example it replaces the @DATA@ with an html table:

<html>

   <body>

      <div id="data">@DATA@</div>

   </body>

</html>

Currently doing this with the $replace function:

Set text=$replace(text, "@DATA@", data)

The problem is the "data" is now too big for a %String (yes even with large strings) so will switch to use a stream instead. 

Is there an equivalent to $replace that works on a stream?If not, how would I best implement this sort of find/replace functionality in cache object script?

5
0 1839