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?
InterSystems Ensemble Business Process Language (BPL) is a language used to describe executable business processes within a standard XML document.
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.
my thoughts...
1- If we are just looking at message throughput time then the number of characters or number of category 'entries' on one of these configurable items should not matter,,, should
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.
Is it
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.
But I want to check that the request is a class inherited
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 ?
Is
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(..JSONOperation,jsonRequest,0,,..MetadataContext) /// send the jsonRequest to operation
Here are the errors in the operation: "ERROR <Ens>ErrGeneral: No MessageBody
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?
Hi everyone
I am new to the bpl diagram. I would like to add an if statement that checks whatever an object is null or not.
I guess that: condition='response.Content != null' would not be ok...
<if name='CheckObj' condition='response.Content != null' xpos='200' ypos='1700' xend='277' yend='2197' >
I tried to search for this information in the documentation but I didn't find any help.
Do you have any suggestions?
Thanks and best regards
Milena
What are the possible causes of the following warning in an Ensemble business process?
"1 open user transaction found; committing before Enqueue"
Hi,
I have a question related with EnsLib.SQL.OutboundAdapter adapter.
Is there a way to open an oracle transaction and do either commit or rollback depending on the query result?
Is posible to keep open an oracle transaction to execute a lot of queries on different methods on the same business operation and do a commit when the business process finished?
Thanks and Best Regards
Sergio Vidal
Is there a way to graphically edit BPL processes, or do we still need to use Studio for doing that?
Looking at the documentation, it appear there should be an Atelier BPL editor option available under Open With, but all I have is Atelier Class, HTML, INT, and MAC editors.
There is a BPL editor in the list, but it throws a "Bad editor input" error when trying to open the class file.
I'm running version 1.0.263 that was installed from the WRC distribution of 1.0.262 and then updated. The only other plugins installed are the Eclipse XML Editors.
Hello ,
Ensemble Business Process seems like red color but it still processing message successfully. I have checked log, events, queue everything is clear. there is no log info or error in the history. If BP is in red color in the sense might have some issues, but is still processing messages successfully.
Can you guys please advice on this.
I am trying to write a generic process that will take any incoming message but would like to know where it came from so in my code I would like to do something like this
If (Document.Source="some serviceorProcess").Just to be clear in the route you get these features is there a way of accessing them in code