Service Oriented Architecture has become an architecture design of integrating solution in software development. It not only just provide and consume a service, but there are many design principles that we must aware when we build an application using SOA : service loose coupling, service abstraction, service granularity, and etc. There is no standard layer separation when we design our application but we can follow many existing approach. Hmm, I won't explain further about SOA, I just wanna sharing about composition of service in SOA - Orchestration.
In complex computer system, sometimes we must automate arrangement and coordination some business process. For example in my research team project, we build an enterprise resource planning for manufacturing company. I some case, we must automate purchasing business process until it generate invoice. If it do manually, inventory staff must create purchase request first, and then it will reviewed to create a purchase order and next must deliver to account payable to create invoices. It has there process that some case we can automate it to be more simple. To automate it, must we create a different application? We has build an application for manual purchasing, if there is an order to build an application for automated purchasing process, must we create a new apps? In Software as a Service concept, we just build one application that can be costumize for different customers. So we must reuse our exited application system to customize an application for other customers that maybe have different business process in their company. If we use SOA with right approached, we can do it by composite existing service to be automated in running time. The orchestration is that automation of service composition.
And the question, how to composite services in orchestration process? All services in SOA must be registered or composite in Enterprise Service Bus (ESB). Microsoft has Microsoft BizTalk Server to do it. Ok, I will explain about it in my next blog post. See there and we will 'play' a little of Business Process Execution Language (BPEL) latter.. See there.. :)