INM381: Service Oriented Architectures

Coursework 2020


The coursework involves the specification and implementation of a service based of Property Purchasing System and counts for 100% of the overall module mark. Each student must carry out the coursework individually.

Specification and implementation of a service-based system

System overview

The coursework of the module involves the design of an online Property Purchasing System (PPS). PPS offers its clients the capability of searching for Properties, selecting and saving Properties of interest, making purchase offers for selected Properties, finding an appropriate loan to cover the cost of purchase of selected Properties, and handling loan applications online. To provide these capabilities, APS uses a number of web services including

  • A Property search service (PserS) that can search for Properties based on criteria regarding the price range, type, bedroom, condition, location and features etc.
  • An Property storage service (PstoS) that can be used to save the results of different searches and/or Properties of interest and provide access to them later upon a user request.
  • A loan brokering service (LbroS) that can identify different loan products that are available on the market by different lenders given the profile of the potential borrower (user) and a particular Property that is of interest to him/her.
  • A loan application service (LappS) that enables the user to save the results of loan searches, retrieve them at a later stage, and file a loan application.
  • A card payment service (CpayS) enabling the electronic payment of a loan application fee as part of the submission of a loan application.
  • An Property offer making service (PomS) that enables the user to make an offer for a specific Property that he/she is interested in.

APS is to be realised as an executable BPEL process and be deployed using the BPEL process execution engine of GlassFish Enterprise Service Bus [1]. The BPEL process realising PPS should enable the user to:

  • Search for Properties using PserS [Functionality F1].
  • Save the results of different Property searches using PstoS [Functionality F2].
  • Access the results of saved Property searches using PstoS [Functionality F3].
  • Select a Property that has been identified through a previous search, and submit an offer for it by making use of PomS as appropriate [Functionality F4]
  • Search for appropriate loans using LbroS [Functionality F5].
  • Save the results of loan searches using LappS [Functionality F6].
  • Retrieve data from previous loan searches, select a loan and submit a loan application through LappS [Functionality F7]. A loan application should be accompanied by the payment of a fee, through CpayS [Functionality F8]. CpayS could be used directly by the BPEL process realising PPS or as a service that is invoked through LappS.

What you will have to do?

To do the coursework, you will need to complete the following tasks:

  • Develop the web services described in (i)-(vi) above, as required for covering the functionalities F1– F8. The services that you will develop should have a realistic interface (i.e., a sufficient set of operations and realistic messages/data types for these operations). From a behavioral point of view, however, it will be sufficient to have a simple implementation that can accept exemplar inputs and provide exemplar outputs without needing to provide a full implementation that a realistic web service of the same kind would normally have. You are free to use existing location services or implement a simply service of your own. In the case of CpayS you should search for suitable web services over the Internet and use one of them to cover the required functionality. In case where it is not possible to use directly such a service, you may create CpayS as a service that simulates an available service and has an interface identical to it.
  • Specify the interfaces of all the services identified for PPS in WSDL. The WSDL specifications of these services should include the portTypes, operations, messages and data types required in order to realise the functionality expected for each service.
  • Specify a BPEL process in order to realise the functionality of PPS as described above. You are free to make your own assumptions about the exact realisation of the functionality of PPS in cases where the above description provides scope for different alternative realisations.
  • Deploy your BPEL process in GlassFish Enterprise Service Bus and test it to ensure that it provides the above functionality and interacts correctly with the external web services (and the client described in (5) below).
  • Develop a simple Java client to enable an end user to interact with the BPEL process that implements PPS. The client may provide a graphical or a text based interface to the end user.


Your submission of the coursework should include the following:

  • The specification of the BPEL orchestration process for
  • The WSDL file for the PPS
  • The WSDL files of ALL the web services identified for PPS. Make sure that each WSDL file used in the PPS process contains the partner link definitions (NOTE: In NetBeans, partner links are defined in the wrapper WSDL files which you should include in your submission).
  • The source code of any web services that you have developed yourself. For each such service that you have developed yourself you must also include the service description (i.e., a xml file as required by Axis2 services).
  • The source code of the client that enables an end user to interact with the BPEL process that realizes PPS.


[1] GlassFish Enterprise Service Bus, Available at:

Appendix: Marking form

Marking Criterion


Out Of


BPEL Orchestration Process

Syntactic correctness of BPEL process

i. 5 marks for full validity wrt to XML schema for BPEL

ii. up to 3 marks if few syntax errors exist

iii. 0 marks if many syntax errors exist


Functional correctness of BPEL process

i. Correct identification of process partners [max: 3 marks]

ii. Correct invocations and receipts of responses of web services [max: 3 marks]

iii. Correct interaction with client [max: 3 marks]

iv. Correct use of control structures (e.g., conditions, loops) [max: 3 marks]

v. Correct handling of persistent data [max: 3 marks]


Executability of BPEL process

i. 10 marks if the provided process can be executed and exhibit significant functionality

ii. 5 marks if the process can be executed but does not exhibit any significant functionality

iii. 0 marks if the process cannot be executed


Coverage of required functionality at the BPEL level

i. 20 marks for coverage of functionalities provided by web services

ii. 5 marks for coverage of required functionality required for interacting with the client


Web Services

Use of appropriate web services at an interface level


Use of behaviorally appropriate services


Use of external services to cover some of the functionality


Client of BPEL Orchestration process

Sufficiency of client in providing

information to BPEL orchestration process


Sufficiency of client in accepting and showing information from BPEL orchestration process


Total Mark


Installation Instructions

Prerequisite: Java Development Kit (JDK)

All the tools that will be used in the INM381 tutorials will require the Java development kit JDK

(version 1.8.0_201) installed in your machine. You can download JDK from

Note that the tools have been tested with Java 8 (more specifically jdk1.8.0_201 but no higher versions for which we cannot guarantee that the tools will function as expected. Also, openjdk is not working with the tools.


To carry out the INM381 tutorials you will need to download the tools listed below from the following links:

  • Axis2 – You can download Axis2 from the following link, Note: Axis2 version 1.7.9 was used in the lab machines.
  • Tomcat – You can download tomcat from the following link.

Note: Tomcat version 9 was used in the lab machines.

  • OpenESB – OpenESB includes NetBeans IDE and

Note OpenESB-Quickstart-Standalone- is the tool installed in the lab machines.

Installation Process

  1. Install JDK
  2. Setup OpenESB by following the guides 770-001 and 770-002 from
  3. Install Axis2, Tomcat and OpenESB in C:\INM381 folder (You may wish to install the tools in any folder, but this guideline assumes that the tools are installed in C:\INM381 folder). You may find installation instructions for each tool from the web site of the respective tool.
  4. Set up the following environment variables,
    • AXIS2_HOME = C:\INM381\Axis2
    • JAVA_HOME = C:\Program Files\Java\jdk1.8.0_201 (assuming that JDK has been installed in C:\Program Files\Java)
    • PATH = %PATH%;C:\INM381\Axis2\bin
  5. If you need to use the runtime service discovery tool i.e. RSD tool, then download the file from the Moodle. Unzip the zip file. This archive contains the following folders,

ContextOperation, eXist, GRSDT, and SeCSERegistry

Copy these folders in the C:\INM381 folder.

Set up the following environment variables in addition to the environment variables described in step 3 above.

  • EXIST_HOME = C:\INM381\eXist
  • RSD_SERVICE_HOME = http://localhost:8082/axis/services/RSDQueryPort
  • SERVICE_LOCATION = http://localhost:8082/SeCSERegistry/services/SeCSERegistry
  • WORDNET_DATA = C:\INM381\GRSDT\wordnet.xml