Here's an example of a business service that receives input in the form of a delimited string, passes the input off to a business process (in your case it would be a business operation), gets the response and returns the response as the return document.

Class AC.Services.HTTPService Extends Ens.BusinessService

Parameter ADAPTER = "EnsLib.HTTP.InboundAdapter";

Method OnProcessInput(pInput As %GlobalCharacterStream, Output pOutput As %Stream.Object) As %Status
    // Instanciate the output stream
    set pOutput=##class(%GlobalCharacterStream).%New()
    // Read the delimited string passed in the content stream
    set iStr=pInput.Read(,.tSC)

    // Build the request message
    set request=##class(AC.Messages.RouteMessagePreProcessRequest).%New()
    set request.DOB=$p(iStr,"^",1)
    set request.Facility=$p(iStr,"^",2)
    set request.RXNumber=$p(iStr,"^",3)
    set request.SSN4=$p(iStr,"^",4)
    set request.CMOPFlag=$p(iStr,"^",5)
    // Send request message to RouterPrePRocess
    do ..SendRequestSync("RouteMessagePreProcess",.request,.response)
    // Return response to caller
    do pOutput.Write(response.RESP)

    Quit $$$OK


You should use an Ensemble REST web service which is a sub-class of EnsLib.REST.Service

I would recommend starting with reviewing the documentation on CSP REST services which can be found at the link below.  This will give you a basic understanding of how Ensemble implements RESTful web services.

There is also an extension of the HTTP adapter that provides an interface for providing RESTful web services as part of your production.  The documentation on how to implement this can be found here:

Pretty sure Pretty sure Atelier is not compatible with versions prior to 2016.2

The services it uses aren't part of earlier versions

Hi Laura

Do you have a production already created that you are now trying to document?  Or is this a case where your are getting ready to develop your first production in Ensemble?

In Cache, due to the way we store data on disk, partitioning the data may not give you a significant benefit in access time.  Data is stored in a highly optimized fashion and the effort to retrieve a record stored at the "top" of a table takes no more effort to retrieve than a record stored at the "bottom" of a table.

If you have records within a table that need to be located quicker (different than being retrieved from disk) you may want to consider setting up some useful indexes that you can use to locate specific records within the table.

Do you have an example of your table structure and could you explain what you mean by more frequently accessed data?

You could use %GOF for export and %GIF for import from Terminal.   These tools export block level data.   The ultimate size of the export will be much less than other tools 

Is this a one-time migration of data from instance A to instance B?

If so, create a new database on instance A and then use GBLOCKCOPY to copy from the existing database to the new one.   Then just move the new database to instance B

There are lots of terms here that although may be related really pertain to different things.

This post mentions client/server and services and applications.  Both services and applications can be implemented in a client/server architecture.

A service is an application that typically has a client and a server side component.  Common types of web services are SOAP web services and RESTful web services.   They usually provide some very specific function.  For example; a USPS address verification service does nothing but receive a message containing an address that needs to be verified, verifies it, and then sends a response message back to the client with the results of that verification.

An application can also be developed using a client/server architecture where there is a software component that runs on the client and a separate software component that runs on the server.  Unlike a service, in a client/server application business logic may be handled at either the client or the server, or both, allowing for distribution of resources.  The client and server parts of an application typically communicate with each other using services.

CSP and Zen, as well as other technologies like PHP, Java Server Pages, ASP.Net are all server-side scripting languages.  The purpose of each is to generate some dynamic document that is then sent to a web-browser by a web server and then rendered (or presented) to the user by a web browser running on the user's computer.  Both Zen and CSP allow you to embed Javascript within the document in various ways.  Javascript is executable code that is run within the web browser.  Typically Javascript is used for form validation and different interactions between the various parts of a web-page.  It prevents the need to have to call the server every time that you want to update a web page.

This suggestion solved my problem.



            s c=0

            &sql(DECLARE tieCursor CURSOR FOR


            ID into :ID

            FROM EnsLib_Workflow.TaskResponse)    

            &sql(OPEN tieCursor)



                        &sql(FETCH tieCursor)


                        w !,ID

                        s c=$G(c)+1

                        s tTask=##class(EnsLib.Workflow.TaskResponse).%OpenId(ID)

                        set tSC = ##class(EnsLib.Workflow.Engine).CompleteTask(tTask)



            &sql(CLOSE tieCursor)