When implementing Wisdom there are many integration options available. This blog intends to help make a decision as to what technology to use to integrate. This is not limited to ingratiation to the Wisdom product as the same challenges apply to almost any enterprise system.
What is Wisdom?
For this blog it does not matter what Wisdom is. But Wisdom is an enterprise document and records management system. Please see Wisdom for more information.
Diagonal recognise two main ways to integrate with Wisdom: Direct or via a messaging hub such as BizTalk. Each of the methods has other options. We will be discussing: Direct, BizTalk Point to Point, BizTalk orchestration and BizTalk ESB. Of course wisdom can present its integration points in many ways. This document assumes the use of the WF (Windows workflow) as an integration option and assumes that the workflows will be accessed via WCF (Windows communication foundation).
Direct Wisdom Calls (Direct)
The external system can call the Wisdom Integration point direct. This would mean that the external system would consume the web services that Wisdom exposed.
This approach is cost affective as only the wisdom web services need to be created. However this approach is very ‘tightly coupled’ . If the web service needs to change to accommodate other systems then the existing system will break. Problems will also arise if the Wisdom server is not online or not available.
Call Services Exposed via BizTalk (BizTalk Point to Point)
BizTalk can expose Wisdom services. The external system could connect to BizTalk and consume web services. These web services could connect directly to Wisdom.
This approach requires a BizTalk licence. External system are just connecting to web services and don't need to know that BizTalk is ‘in-the-middle’ . If Wisdom is unavailable then messages are held until Wisdom is back online. This approach works well until your solution needs to scale or react to change. Any changes require the services to be republished and having lots of external system means lots of BizTalk ports. This can be hard to manage.
Call Services Exposed via BizTalk (using Orchestration)
This is the same as the previous but message routing is done with orchestration.
This approach also requires a BizTalk licence. Orchestration has a performance overhead when compared to point to point but it is much more flexible. Orchestration should not be used just to route messages; this can be done much more efficiently using “Send Port Filters.” This aside it does have its place. If decisions are needed then Orchestration can be used. Note, Orchestrations can be invoked from ESB so read on.
The above diagram does not really illustrate a difference between Orchestration and point to point. For the purpose of this blog we are not really going into what extra things can be achieved with Orchestration.
Integration via the ESB
ESB is an architecture pattern, Microsoft released the ESB toolkit to allow the implementation of this pattern with BizTalk.
Using this pattern requires a BizTalk licence. The ESB Architecture pattern has the concept of all messages arrive via one service (On Ramp) and the message has routing hints or full details included (itinerary). The message can load its itinerary from a database or it can be included with the message. The itinerary can invoke BizTalk rules to route and transform the message.
This approach is very flexible and can easily react to change. It does require more initial investment but it saves time in the long run. This ESB toolkit also provides an exception handling framework that if used can also save on development time.
If you just need very simple point to point integration then Direct Integration will work. If you already have a BizTalk hub in-place and its point to point then point to point is fine. If you have not yet created your hub then ESB is the best fit. If you can migrate your point to point ingratiation to ESB then this would also be a valid option. ESB does require more learning as it extends BizTalk.