Hi,
Can I reference the 'request' object when setting default values for context variables?
InterSystems Business Process Language (BPL) is a language used to describe executable business processes within a standard XML document.
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...
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
Hello,
I need to access the value of a setting I created (ex: name_BO) within the logic of my BP.
Property name_BO As %String(MAXLEN = "");
/// Additional Settings
Parameter SETTINGS = "name_BO:Basic:selector?context={Ens.ContextSearch/ProductionItems?targets=1&productionName=@productionId}";
But the class is common and the production item names will change.
Example -> Class name: My.BP.Common
Items in the production:
Item 1:
Item 2:
Where My.
I have several stored procedures that when I execute them they will only return a single snapshot. In my BP I have been setting this to a Snapshot variable then looping using a WHILE through the snapshot variable just to get that single value.
Since it is only a single row, is there an easier way where I don't have to do a WHILE loop to pull the values out of that row? Can I call First Row or something like that to get me just the row into the Snapshot variable?
There has been some confusion about how to edit Business Process Language (BPL) and Data Transformation Language (DTL) files in Atelier using the graphical editor. The following steps describe how to do this with Atelier version 1.0:
Copy the file you want to edit from the server to an Ensemble-enabled project in your Atelier workspace. To do this, find the file in the Server Explorer, right click and select Copy to project.
Open the file in the Atelier class editor just as you would any other class file.
Right-click in the class editor window and select Open diagram editor from the context menu.
I have a vendor that is sending me an Abbreviation in FT1:16.4.2 that I need to look up against a table to find the correct ID for.
FT1|1|||20180523161501|20180523161503|CG|1906551^Lipid Profile|||1||||||^^^ LAB&06CL
But in my Business Process when I refer to request.GetValueAt("FT1:16.4.2") its not recognizing that this field contains information. Is my syntax wrong?
Hello.
We have a request message with properties that has underscore. This is because we need to convert that request to JSON.
The problem is when we try to assign a value in a Business Process with the editor. It doesn't work, it doesn't compile.
How can we fix this?
This is the object used in the request:
And this is the error:
Hi All,
I need to route a file based on its type in Ensemble Production. But I don't want to write a Business Process code to achieve this. Am using FilePassThroughService to get a file.
There are two FilePassthrough operations for different type of files. Is there anyway to achieve this using Business Process Rule itself?
Also how to get the filename in Business Process Rule that comes from FilePassThroughService?
Thanks in advance.
Hi
I am fairly new to Ensemble development.
I was wondering what is the best process of returning the resultset from a SQL outbound adapter to the BPL that had invoked it.
Thank you for your help.
Kind Regards,
Salma
I'm looking at an issue where I need to grab an ID number from an external SQL table when it doesn't exist in a HL7 message, and then add it to the HL7 message.
I have built the logic within a BPL which checks for the lack of ID, and then pulls the ID from the SQL table (and storing its value using the context functionality within the BPL) however I am at a loss as to how I then take the ID and add it to the HL7 message before passing it to a router.
Hello,
I want to process more requests per second in Ensemble 2015 (soap service). My problem is in a business process that makes a great transformation. I thought that I can put its group size to 4 (the current value is 1), or put 4 business processes and apply, for example, the round-robin algorithm.
Which alternative is better?
I have many items in business services.
one of my particular business service is frequently asking restart.
Is there any code to update particular business services out of all services?
Thanks in advance...
Synopsis: I need to "sideline" messages for subsequent selection and data enrichment while maintaining manageability within the Ensemble framework.
We are starting to look into our BPL's and catch errors that calls may return. Can someone explain how to use the THROW and CATCH within the Business Process Language or have a sample of how it should work?
Thanks
Scott Roth
The Ohio State University Wexner Medical Center
I am trying to transform an Enlib.EDI.XML.Document through aXLT I know how to trans form the xml document through a xlt stylesheet but been trying to get an Enlib.EDI.XML. Document from a procees by creating aoperation that will do the transformation of this to file if this can be done in a process all ideas welcome so far I have come to this and I keep getting an error
:ERROR{ERROR #5002: Cache error: <PROPERTY DOES NOT EXIST>zXMLTOJson+6^TestEnvironment.Custom.GENERAL.CUSTOM.XLT.XMLToJsonOperation1.1 *Parameters,EnsLib.EDI.XML}Class XLT.XMLToJsonOperation1 Extends (Ens.BusinessOperation, EnsLib.XSLT.Transformer)
{ Parameter ADAPTER = "EnsLib.File.OutboundAdapter"; Property Adapter As EnsLib.File.OutboundAdapter; /// Style sheet to convert Message to Json
Property XLTStyleSheet As %String(MAXLEN = ""); Parameter SETTINGS = "XLTStyleSheet:Basic"; Parameter INVOCATION = "Queue"; /// Default operation is to use a TransformationRequest to transform the input XML into the output
Method XMLTOJson(pRequest As EnsLib.EDI.XML.Document, Output pResponse As EnsLib.XSLT.TransformationResponse) As %Status
{
Set tSC=$$$OK,$ZT="Trap"
do {
// Grab the input content and the stylesheet key
Set tInput = pRequest
Set tSSKey = ..XLTStyleSheet
Set tSC = ..Transform(tInput,tSSKey,pRequest.Parameters,.tOutput)
If $$$ISOK(tSC) {
Set pResponse = ##class(EnsLib.XSLT.TransformationResponse).%New()
Set pResponse.Content = tOutput
}
} while (0)
Exit Quit tSC
Trap Set tSC=$$$ERROR($$$CacheError,$ZE) Goto Exit
} XData MessageMap
{
<MapItems>
<MapItem MessageType="EnsLib.EDI.XML.Document">
<Method>XMLTOJson</Method>
</MapItem>
</MapItems>
} }I have a process that I am trying to duplicate from SQL Integration Services (SSIS) into Ensemble so that the rest of my team can help support any issues that may happen.
This particular job creates multiple dictionary files, but for each one of the dictionary files it creates, it also creates a control file that tells the vendor what to process.
So example....I have a result set that is written to a.txt but I also need to create a a.ctrl, then I will have a b.txt and need a b.ctrl.
Using only one EnsLib.RecordMap.
When executing a business process I'd like to share the Login Token from an external system retrieved via one of my business operations across multiple process instances. This means I need to persist the token somewhere. What would be the best approach/pattern to implement this?
The primary idea I had was to store the token and a timestamp in a persistable object and then write a single method in the Business Operation that retrieves the token.
Initial questions have been answered. Expanded the post with actual code (see below)
So, I'd like to update one (and preferably) more context-fields in my ensemble BPL business process based upon the information in the request that initiates said BPL proces. I got a few questions about that:
1. First, I can't get it to work. Specifically, in the BPL process I call the business rule with my request as context and expect it to put it results in context.Boolean. The business rule nicely updates the context.Boolean but the conditional logic looks at specific fields in the request (i.e. if request.
I have a text file that is fixed width delimited and am using a BPL to process this file, ultimately performing a transform from the text file to an HL7 message. I created a DTL, mapping from the recordmap to the HL7. In my BPL, I am performing some loops and other logic (that all is working). My issue is what to do when I perform the Transform.
I thought I could just call the transform and pass in the string as the source and a HL7 Message as the target. This results in an OREF error. I assume because the processing of the text file to the recordmap is not occurring.
Hi all,
For special definition of the company, we need to define a PoolSize according to the environment that the "Ensemble" is working.
So the first try as been add the parameter into "System Default Setting"

However, this parameter is not available in "Setting default values" in Setting tab.
I've opened the code of my production and I've noted that this parameter is a attribute of the XML element of this item
I have a batch record mapper that reads a csv file and passes the message to a process that uses the EnsLib.MsgRouter.RoutingEngine and would like to pass the message to an operation that will output that as a XML file but so far been unlucky as the operation that I use , uses the EnsLib.EDI.XML.Operation.FileOperation which only works with the messages("BusinessOperation class for writing XML messages to a file. Works with XML messages of type EnsLib.EDI.XML.Document.
I have a business service that brings in a xml virtual document to the production and also a csv service that brings in a csv file and have a process that transforms both to a xml output but I have a problem with the csv as it is giving me this error when I try to trans form it ```ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>zOnRequest+1 ^EnsLib.MsgRouter.VDocRoutingEngine.1 *DocType``` I have read here followed the suggestion but now I do not get any errors but my message is not being routed here is the rule set that I am using
Has anybody devised a process that would allow the render and printing of BPL diagrams created in Studio? Thank you.
Before we begin, I'd like to mention that I am by no means an Ensemble expert, so take this with a grain of salt and please feel free to offer any suggestions for improvement. That being said, I have enjoyed working with Ensemble and wanted to share the approach I took to poll an external REST API for patient data in the hopes that it might help others with a similar goal.
If you get bored easily and just want to see some code, feel free to jump straight to the example on github. It uses dummy data (for obvious reasons) but the core principles should be the same.
What are the pros and cons of developing a custom database driven routing engine vs. using the Ensemble standard routing engine. What I'm trying to accomplish with the custom routing engine is less manual intervention every time a new route is added. The con I can see with the custom engine is performance may lag behind the standard engine. My development vs. Intersystems essentially.
I appreciate feedback. Thanks!