Reputation: 1307
I have some confusion regarding the reference architecture provided by The Open Group for SOA that can be used as an example for enterprises.
Question 1: Within this reference architecture there is the service layer which exposes a service to the outside world. The standards document says that you can have process services within this service layer, which implements some process of functionality that can be accessed as a service. It is also possible to have composed services in the service layer which make use of other services. However, there is also a Business Process layer which as I understand is mainly to implement a business process by orchestrating different services from the service layer. How do business processes in the Business Process layer differ from process services in the service layer?
Question 2: Is there any argument to decide whether you should provide a composed service that makes use of multiple different services: 1. In the service layer by giving the composed service its own interface while using other services within the service layer? 2. As a busines process in the Business Process layer 3. by handling it in the consumer layer.
Upvotes: 2
Views: 151
Reputation: 4759
Answer to 1):
Generally speaking processes in the Business Process layer correspond closely to business processes in the organization, while process services implement more “technical” compositions of tasks.
Answer to 2):
This is a distinction that requires context and often requires experience to make the right choice, but here are my two cents.
If you have business process management solution in place and the organization uses it, then by all means, implement any business processes in this layer. This is much more flexible and understandable for the end-user – your business.
If you need to implement a technical process that has to collect/modify data from/in multiple systems, then implement it on the service layer. Of course, you may try to implement business processes in the service layer (and I’ve seen this sometimes in practice). But keep in mind that you’ll have somewhat limited toolset, compared to what you will have in a real business process management solution. You will also have some business process in the service-layer and some in the business process layer, which may not be very convenient when having a real BPM at some point. So it really depends on the state of maturity of your service oriented architecture.
Generally I’d try to avoid implementing processes in the consumer. It makes your design coupled to the consumer system, so you won’t be able to replace it as easily at a future point in time. Also, business process management layer (and service layer) both have better means for monitoring, logging and so on out of the box. That being said, in the long-term maintenance and problem investigation won’t be as painful as in a consumer application.
Upvotes: 2