Learn JDE Business Services – Part 1

About: JD Edwards EnterpriseOne Business Services

E1 Business Services is the alternate name for Web Services. With the world moving towards Service Oriented Architecture (SOA), EnterpriseOne too has implemented Business Services as a gateway that provides native web services capabilities. JD Edwards EnterpriseOne business services enable you to fully capitalize on the benefits of service oriented architecture (SOA) by providing native support for Web services, including the capabilities to develop, publish, consume, and administer Web services directly from JD Edwards EnterpriseOne Tools. Business services are a set of Java-based business functions created to perform discrete units of work. They can interact with external systems in the form of a Web service.
Business Services – A set of Self-contained, stateless Business Functions that accept one or more requests and returns one or more responses through a well-defined, standards based interface. These services perform discrete units of work such as editing and processing a transaction (e.g. Price Lookup, Currency conversion, Add Order, Weather check etc.)

Web Services & WSDL Overview

Interoperability has Highest Priority with respect to EnterpriseOne, where all major platforms can access the Web using Web browsers, different platforms can interact. For these platforms to work together, Web-applications are developed. Web-applications are simple applications that run on the web. These are built around the Web browser standards and can be used by any browser on any platform.
Web Services take Web-applications to the Next Level. By using Web services, your application can publish its function or message to the rest of the world. Web services use XML to code and to decode data, and SOAP to transport it (using open protocols).
Web Services are published, found, and used throughout the Web. These services communicate using open, Platform independent protocols like HTTP, SOAP, XML etc. Web services can be discovered using UDDI.
By using Web services, your application can publish its function or message to the rest of the world. Web services can be used by other applications. Web services use XML to code and to decode data, and SOAP to transport it (using open protocols). We can expose business logic of an application that can be accessed by any other application, by using SOAP calls over HTTP protocol.
Web Services have Two Types of Uses

  • Reusable application-components.
    • Web services can offer application-components like: currency conversion, weather reports, or even language translation as services.
  • Connect existing/legacy software.
    • Interoperability is the key to using Web Services which gives different applications a way to link their data through standard XML.
    • Using Web services you can exchange data between different applications and different platforms.

Elements of Web Services:

  • SOAP (Simple Object Access Protocol)
    SOAP is an XML-based communication protocol to let applications exchange information messages over HTTP via Internet, also allows to get around firewalls.
  • WSDL (Web Services Description Language)
    WSDL is an XML-based language for locating and describing Web services. Client can read the WSDL to determine what functions are available on the server and can then use SOAP to call one of the functions listed in the WSDL
  • UDDI (Universal Description, Discovery and Integration)
    UDDI is a directory service where companies can register and search for Web services, described by WSDL

BSSV tools releaseBusiness Services do undergo the same standard life-cycle as other E1 objects. It’s security too can be controlled via the standard E1 Security workbench.
E1 provides interoperability with other Oracle products and third-party products and systems by natively producing and consuming web services.

  • As a web service provider, E1 exposes Web Service for consumption by external systems or JDE itself.
  • As a web service consumer, E1 calls an external web service from within the E1 business logic layer that in turn calls the BSFN.

Business Services being E1 Objects, it is tightly integrated with the development methodologies and follows the similar change management procedure. They provide lookup, add, change and delete to process a business transaction. It can also post XML data over HTTP and Queues, and similarly can be used to connect to external Databases, external Queues, FTP server locations etc

Business Services Server
The business services server enables E1 to natively produce and consume web services. It is built on top of J2EE server it can run on either Oracle Application Server or Websphere Application Server. Oracle Application Server or Websphere Application Server can be used as its J2EE server.
BSSV server contains Business Service Foundation and Business Service reference implementation. It sets access to run published business services is managed through the E1 security Workbench.
It also regulates the authentication for consuming Web services, which uses standard JD Edwards E1 user credentials or anonymous login. BSSV server uses JAAS module to validate the JD E1 users against the E1 security Server.
Web Services Providers – (Outbound / Inbound to JDE)

  • Exposes web services for consumption by external system
  • Web service is generated from a Java class called a published business service class

Web Services Consumers – (Outbound / Inbound to JDE)

  • Calls an external web service from within the JD Edwards Enterprise One business logic layer.

Web Services Event Notification – Outbound to JDE

  • Real time transaction notification
  • RTE – Real time events
  • XAPI events
  • Z Events

As of today, there are many pre-built integrations available with JD Edwards – Click here
To be continued…

18 thoughts on “Learn JDE Business Services – Part 1

  1. Anandraj Reply

    Hi Deepesh,
    Very nice article.. Very informative.. Looking forward for PArt2…Keep posting..

  2. Prasad K Reply

    Hi Deepesh,
    I am looking at designing an interface for JDE with exisiting system(s).
    IBM MQ is available for use. My question is can IBM MQ be configured to call JDE BSSVs on receiving a particular message ?
    Also, I’m basically unclear about the architecture of Message Queuing and how it can be used with JDE thru Message Adapters.
    Can you please help me with any references / pointers to where I can help clear my doubts ?
    Regards,
    Prasad

  3. Natarajan Reply

    Hi Deepesh,
    I am using E9 DEMO in my local machine. Is it possible to work with BSSV with E9 demo.
    Since somewhere i heard it is possible if we insert JP,J objects in F98600,F98602,F98603 etc,,,
    Waiting for ur reply
    Thanks in advance

  4. Babu Reply

    Hi Deepesh,
    Could you please let me know, if i can call Webservices through a Report & Application. ex.while i am running a Invoice report i need to collect data from external system which needs to be printed on Invoice. & same way with application. Also i would like to know will this effect the performance of the report & what if there is network connections error whilst running report??
    Your immediate clarification will be highly appreciated.

    • Deepesh M Divakaran Post authorReply

      Hello Babu Sir!
      To answer your Q, we can call the Business Services from report or application. We need to create a BSFN which will invoke the Webservice to get the data. The processing time will depend on the performance of the webservice though. Errors due to network traffic, or webservice errors can be trapped in the BSFN which calls the webservice.
      Hope I’ve answered you.

  5. Damien Reply

    Hi everybody,
    I develope as a Service Provider and use JDeveloper 10.1.3. I have a very good exercise for creating published BSSV which call a BSFN (Oracle Open World 2008 – Hands On Lab). Does somebody has a simply Example/Exercise how to create a published BSSV that return records from DB (Calls DB with SELECT Statements)?
    Thanks in Advance, Damien

    • Deepesh M Divakaran Post authorReply

      Hi Damien,
      I’ll be uploading the 3 OOW hands-on-lab exercises soon. There’s one for Table I/O’s, and another for Consumer BSSV, other than the one you mentioned – BSFN call.

  6. Damien Reply

    Hi Deepesh,
    first thanks for the quick answer. I’ve found http://www.oracle.com/technetwork/topics/jde-bssv-database-business-service-131800.pdf which is an Example for a database Input (WRITE Records). I also found an example which reads only from the database (sorry, got no URL). The way they build their functions in this 2 documents is quite different, which confuses me a little bit (…). So I’ll try both of them and will see which is more confortable to develope. Thank you very much and have a nice day. Damien

  7. Damien Reply

    Hi all,
    I tried to do the BSSV example for a simple Table I/O giving back a list of Records. It’s just horrible, you have to create about 10 different classes and coding about 200 statements for a simple SELECT giving back a list. This can not be the way……. does somebody have an EASY example for how to do that? This would make my life easier……. Thanks in advance, Damien

  8. James Reply

    Hi All,
    Just a general query with regard to performance of consuming Business Services/WSDL’s… when referencing ane xternal wsdl via C API, where does the logic run, on the server it resides on or local to the call?
    Also, can you advise if the underpinning tech behind the BIP interface calls a business service?
    Thanks in advance.

  9. Natarajan Reply

    Hi Deepesh,
    I am trying to create a test class to invoke a Processor class directly. In test class i am calling the Processor method(context,connection,UKID).
    If i pass null value to both context and connection along with UKID, i am getting the error suggesting to initialise it.
    Please suggest.
    Note: Processor(J******) class is called directly from BSFN.(BSSV consumption). so i am trying to create a test class that calls Processor (J***) directly.

    • roadbecri Reply

      Hi Deepsh
      I working on a app in python and i tried to consume a bssv but it failed it seems that i can invoke this web service. however can tell explain how can i consume easier a bssv by python. thanks in advance

  10. Pingback: 3rd Party Interfaces with AIS and REST APIs | Deepesh M Divakaran

Leave a Reply