We're back with more AI, more ML and more presenters!
We are pleased to invite you to the upcoming webinar in English: AI Robotization (Python, R, Interoperability) for InterSystems IRIS on November 7 at 11:00 EST!
InterSystems Ensemble Business Process Language (BPL) is a language used to describe executable business processes within a standard XML document.
We're back with more AI, more ML and more presenters!
We are pleased to invite you to the upcoming webinar in English: AI Robotization (Python, R, Interoperability) for InterSystems IRIS on November 7 at 11:00 EST!
HI
We can easily do a <call> from graphic BPL's
I was wondering what is the best way we can call another Business Process or Operation via code.
Thanks in advance
Hi,
I am sending a request message to Business Process which has one property as Dynamic Object type. So i get the JSON in my REST service and convert that as a dynamic object and set that in the request message and calling the business process from the business service. But the request is not getting sent to the Business Process. Is it possible to send dynamic object input to the business process.
Greetings,
I am trying to test an hl7 message inside studio and when I click on the test button I get this error:
"<FUNCTION>GetProp+2^%CDCalBk" at 9:51 am. $I=/dev/null:50333010 ($X=0 $Y=54) $J=50333010 $ZA=0 $ZB="" $ZS=65536 ($S=66023400)
I have never seen this before! Any suggestions?
Here a simple test message:
MSH|^~\&|TESTRAD|ABC|RADIOLOGY|WYZ|20190715125605||ORU^R01|20190715125605|T|2.3
PID||123456788^^^EPIC^PMRN|1234567890^^^EPIC^PMRN||TESTING^TWO||19780422|F
PV1||OUTPATIENT|||||^^^SMITH^^^^^PHS^^^^PRN
OBR|1|776565|A44444|CT.TH.
I have several BPL's that act like SQL Server Integration Services (SSIS) where they are transferring data. When I do this they are all being written under 1 session id, is it possible to make the BPL create multiple session ID's as it is cycling through a Snapshot, so it is easier to read in the trace?
Thanks
Scott Roth
I'm writing "Finder"-like dialog and need to get list of BPL classes.
The query is dependent on current "path" - it outputs all BPLs in the current path (if any) and all sub-packages which contains BPLs.
So far I have this query:
Query getBPL(path, needPlus = {(path'="")}) As %SQLQuery
{
SELECT DISTINCT $PIECE(Name, '.', 1, $LENGTH(:path, '.') + :needPlus) Name
FROM %Dictionary.ClassDefinitionQuery_SubclassOf('Ens.BusinessProcessBPL')
WHERE Name %STARTSWITH :path
}My problem is, if I'm not in "root" path I need to add additional dot level, but in root path I only need to add one.
I have BPL BP and BO.
To call BO I need to populate the stream property of the request message.
What's the best way to do it?
From inside Business Service (OnProcessInput method specifically) I want to determine if Ensemble tries to shut down the job.
Is it possible? How?
Hi all, My first post. I hope I have created it correctly.
Our team is looking to increase the number of characters in our Ensemble 'Categories' for Services, Processes and operations.
We are doing this to better identify things like Vendor, Message type and integrated application names...
One of our team members thought his might increase processing overhead and a discussion ensued that was not resolved.
Hello,
We have a BPL that returns in Response several %Strings, Dates. When we try to add Array of Objects property to the Response we verified just before the BPL terminates the response object has correct values in all properties including the array. We checked the Count(). It appears that even array of String works correctly but we prefer to pass objects rather than strings.
When it comes to Response Builder in the calling BPL, the array of objects property in callresponse is not a valid oref, it appears to be missing, other properties of types string or date are valued correctly.
How do I send request on production start?
Here's what I got so far in my production class:
ClassMethod OnStart(pTimeStarted As %String) As %Status
{
job ..InitialTraining()
quit 1
}
lassMethod InitialTraining() As %Status
{
hang 5
set sc = ##class(EnsLib.Testing.Service).SendTestRequest(...)
quit sc
}Is there a better way without hang, etc?
Is there a way to have a context property be available across 2 or 3 different business processes? For example if I am setting a value in a context property within one business process and want to use the same context property in a second business process, is this possible? Is this something that can be done with the "Context Superclass"?
Hi community.
I need to get the parent classname of a class, but I don't find how to do it.
I have a class Parent (MyLibrary.ParentClass) and two classes inherited from the parent class
MyLibrary.ParentClass
├─── MyLibrary.ChilcClass01
│
├─── MyLibrary.ChildClass02I have a Business Process that entry class is MyLibrary.ParentClass. If I'm calling with any child class (i.e. MyLibrary.ChildClass01) it works, then I'm using the method $Classname(request) to get the name of the class and redirecto to other process.
In a Business Process (BPL) I noticed that if I 'm using a "scope" to handle errors then inside the "scope" when a "call" is used, the "request" and "response" action (i.e set for callrequest.prop = request.prop & response.prop = callrespones.prop does NOT work !
The result is that the values of those properties in the callrequest are nulls (I do see the properties names in the content of the callrequest message)
What is the best way to solve this issue ?
As it seems that there are new instances of the request/response objects inside the scope, whats the best way to pass them into the scope ?
Hello,
We have defined four BPL Business Processes. One gets occasionally errors when pool size is two. No errors happen with pool size one. The error happens on calling %Save() on a large objects with many references to other objects.
Error #5803: Failed to acquire exclusive lock on instance of 'classname'.
Error #5002: Cache error: <ROLLFAIL> %TRollBack+10^%occTransaction
The error happens on a particular large object.
Our FileService gets the same Errors #5803 and #5002 with class 'EnsLib.EDI.X12.Document'
Another BPL gets the same errors #5803 and #5002 with lock on instance of 'EDIGW.BPL.ST837.
I am having an intermittent issue that when I make a call to MSSQL from a BPL that the response does not come back in the amount of time required. Since the call from the BPL is synchronous I tried changing the timeout to 60 but it has not helped (see below). Is there anyway to guarantee that the call waits long enough for a response before continuing on?
.png)
.png)
Thanks
Scott Roth
Version 2016
Created a business process and ticked "Is component".
Later trying to use it as component from another business process, and when trying to set up target for a call activity, selecting process components does not show anything in the list.
Any idea why?
I have a business process.
if it has an error it dies, or if a have a catch all/fault handler the execution flow goes there.
However, I want another behavior.
If any error occurs I want the process to "Pause" (and alert me), so I can figure out what went wrong and resume from the last request.
Here's an example of how it could work:
I'm not set on the exact pause/resume mechanic but I hope it makes the general idea of what I want clear enough. Ideas?
Hello, we have a couple of BPL processes. This works with a limited amount of messages but we run into issues when we process thousands of messages in a session. One BPL calls a Validation BPL process with async='False' and there is a response defined. The timeout is two seconds and that seems to be plenty of time for the validation process. I expected the calling process to wait for a response but that is not happening.
Friends , can anyone help in how to kill instances of a business process? We have searched the documentation and looked in the Production, We am not seeing how to perform this task.
Hi all,
Does anyone knows if there is a limit per second adding messages to an Ensemble queue? I have a Business Service working and sending async requests to a Business Process, but I can't reach no more than 60-70 messages queued per second.
I've done several tests and same behavior seems to happen with all our productions. So I was wondering if there is a parameter anywhere to maximize the number of requests that can be send to a queue per second.
I created the Process to extract the required data from ADT message to a Dynamic Object. I wanted to send the JSON stream to EnsLib.File.PassthroughOperation operation and generate a file with the content of JSON stream.
Here are the codes for Process:
set oMetadata = ... /// metadata is from ADT message which is dynamic object
set jsonRequest = ##class(%ZEN.Auxiliary.jsonProvider).%ObjectToJSON(oMetadata)
set tSC = .SendRequestAsync(.
Is their a way to queue messages in a business operation to be processed later? I want to process messages over a certain size on a schedule, but let everything else process in real time. Is their a way to do this with one business operation or would I have to queue the large messages in a different business operation?
Hi Community!
New session recording from Global Summit 2018 is available on InterSystems Developers YouTube Channel:
As part of a BPL I am building I need to foreach over a some repeating elements and look for a certain value, if said value is present I need to forward the message to another operation.
I can't seem to get the if statement inside the foreach loop to work and I think I am doing something wrong?
The error message I am getting:
ERROR <Ens>ErrException: <UNDEFINED>zS2+2^GWH.Messages.Eobs.AKISegmentCheck.Thread1.1 *k1 -- logged as '-' number - @' Set k1=request.GetNextIndex("PIDgrpgrp("_(1)_").ORCgrp()",k1,.tSCTrans)'
Can anyone explain that error to me?
Cheers
I created a custom class for a process that does some basic manipulation to an HL7 message. I'd like to be able to write some debugging to the process event log. How would I do that?
I've tried ##class(Ens.Util.Trace).WriteTrace("system","HOSP.IHE.PDQProcess","MessageHeaderHandler","Discarding input message")
but I get a runtime error when I try that. I know this is pretty basic stuff, but any help would be appreciated.
Hi
I'm trying to get a text value of a xml node of a XML Document through the xpath activity within a BPL diagram.
I set the source to Request and all the other properties.
The error I always get back is Method does not exist...
Could anyone help me out?
Kind Regards
-----
|
Source data
|
|
Destination for result
|
|
Document context
Hello All!
I have a query regarding general behaviour of a business process in Ensemble.
I have a BPL which has a call block out to an operation (Adapter class EnsLib.SOAP.OutboundAdapter). The call to this operation is synchronous (i.e. the Asynchronous box is not ticked), with a long time out value. and the pool size of the process is set to 1 in the management portal.
What I am seeing is that when messages are being processed, a second message is being processed by the BPL before the first message that entered the BPL has had a response back from the call to the operation.
I have been building Business Processes in Ensemble for a few months and in a process i'd use a combination of data from the request that started the process and context variables that where filled by earlier calls in the process as input for a data transformation. I do not know how to achieve that.
What I do currently is that in my process I first call a data transformation and then make a call to an operation. For the data transformation I use as input the request that started the business process and as output the request that I will use to initiate the call to the operation.
Hi,
Can I reference the 'request' object when setting default values for context variables?