I guess my thought was that the interface and process will be closely related for some things, and that the interface generally needs to match (or be compatible with) the process in use. If a change in process necessitates a change in the interface, then, by definition, the old interface is no longer compatible with the new process, so it wouldn't be valid to call the old interface as you moved into the new process.
However, if we take an incremental (not big bang) transition approach as suggested by John, then that would work with the lifecycle management of the interfaces to transition applications to the new interface over a period of time. I would expect that you would not want to support the last X interface versions, though, since you ultimately would want the interfaces to stayed synched up with the process. That would mean that you would generally only support one version of the interface except during transition periods, where you support 2 versions, but only during the transition period. In some cases, it may be possible to leave the old interface in place while trying to account for the differences between the old and the new one behind the scenes in the system. For example, if you've added new fields, perhaps there are reasonable defaults that could be applied if the old interface was called instead of the new one. Where that is possible, you could then have multiple interfaces for an extended period of time. However, certain process changes may require that only the current version of the interface be used after the transition period. Lyle From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of Axton Sent: Wednesday, November 02, 2011 10:28 AM To: arslist@ARSLIST.ORG Subject: Re: Request for Comments ** I don't envision version 2 of a process, just of an interface. Using Change as an example, interfaces could include things like: - Create a Change Request - Resolve a Change Request - Get Change Request details - Relate something to a Change Request Version 1 may support some set of attributes for "Create a Change Request", whereas version 2 would accommodate some new attributes or it may deprecate some attributes. The change process may change over time in such a way that new interfaces are required, so an interface could be introduced in version X of the application that was not available in previous versions of the application. There is a lifecycle around the management of these interfaces that would have to be defined and adhered to for this to be a reliable approach. Axton Grams On Wed, Nov 2, 2011 at 11:21 AM, Lyle Taylor <tayl...@ldschurch.org<mailto:tayl...@ldschurch.org>> wrote: ** I agree with the idea of making the applications more loosely coupled. However, I don't know about the idea of versioned interfaces in this context, especially when those are in support of an application that supports a business process. If you have a Change Management process, and you make changes to the process (i.e., go from version 1 of the process to version 2 of the process), you generally do NOT want to support the old version of the process. You generally only want one version of a business process going on at a time, except perhaps for during a transition period. I suppose that might contradict my statements above somewhat... In general, though, I would think that if we move to version 2 of our Change process, we would expect all systems integrating with the Change module to be updated to support the new process rather than calling an older version of the interface that didn't support the new process. Lyle From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG<mailto:arslist@ARSLIST.ORG>] On Behalf Of Axton Sent: Tuesday, November 01, 2011 5:59 PM To: arslist@ARSLIST.ORG<mailto:arslist@ARSLIST.ORG> Subject: Request for Comments ** This is more a high level discussion and is concept/design oriented. Please feel free to chime in with your thoughts. I look forward to the collective wisdom of this list. I is my hope that a a constructive discussion can happen around this subject and the powers that be can gain insight gleaned from the discussion. First, a little background. I was in the Help Desk/ITSM space, left that arena for a few years, and have since returned. After working with the ITSM application for a few short months I am realizing how tightly ingrained these applications are with one another (incident, problem, asset, change, cmdb, etc.). The tightly coupled integrations make certain tasks exceedingly difficult, for example: - using an outside system for change management (or any other process, for that matter) - upgrading a single application in the stack (e.g., change management) - integrating outside applications with the ITSM applications Non-remedy or custom remedy applications are unable to easily or effectively communicate with the ITSM applications in the same way that the ITSM applications communicate with one another. Even different versions of the applications are unable to effectively communicate. Consider that each application facilitates a well defined process. Each process has inputs, outputs, and actions. The ITSM applications could have (and leverage, internally) interfaces to communicate their inputs and inputs, outputs, and actions. Java Interfaces are an implementation of this design pattern that are a prime example of the flexibilities that this can afford. Interfaces form a contract between the class and the outside world... -- http://download.oracle.com/javase/tutorial/java/concepts/interface.html Interfaces can be versioned (e.g., 'Create Incident' interface version 1 supports a field ,Priority; 'Create Incident' interface version 2 supports a new field, Urgency, etc.). By creating an interface (i.e., a contract) and back-end instrumentation to implement the interface, applications could be upgraded independent of one another; all the communicating components need to know is the version of the interface and that dictates the capabilities of said interface. With this idea, I am borrowing from the approach that many of the SOA stacks are implementing: One the most popular approaches for dealing with changes is versioning. Versioning assumes simultaneous existence of multiple (different) implementations of the same thing, with every implementation distinguishable and individually addressable. In the case of SOA, service versioning equates to coexistence of multiple versions of the same service, which allows each consumer to use the version that it is designed and tested for (see Figure 1). In this case, a new version of a service is created based on the requirements of one or more consumers, which can start using this new version immediately. The other consumers of this service do not need to switch to using the latest version immediately, but can continue to use the versions of the service they were designed for and tested with. They can switch to the latest version of service, based on their own development and testing schedule. Multiple coexisting versions of the same service in the system allows for the independent life cycles of services and their consumers and minimizes the overall impact of the introduction of changes. Although the necessity of such versioning mechanism may be obvious to anyone who has ever dealt with services, this topic still has not penetrated the mainstream of SOA publications and implementations. -- http://msdn.microsoft.com/en-us/library/bb491124.aspx#jour11version_topic3 A few key concepts here: - Interfaces and versioning - Well defined interfaces - Interface life-cycle (e.g., the last 3 major versions of the interfaces will remain supported, after which, they are deprecated) - Loosely coupled applications (to the extent that the applications could run on different physical servers/databases) that leverage only the interfaces the applications provide as a means of communication Such a change to the current paradigm would open the doors to a lot of things that are simply not feasible at this time, all of which start with better interoperability. This is something that is important in the cloud space. A proper implementation of the above ideas would lead an application that is easily pluggable into a SOA backbone so that the services the applications provide can be used by any other application that is able to reach out to the SOA backbone. I think that running each application within ITSM on separate servers would be a good gauge of an effective implementation of this paradigm. I look forward to your thoughts. Regards, Axton Grams _attend WWRUG12 www.wwrug.com<http://www.wwrug.com> ARSlist: "Where the Answers Are"_ NOTICE: This email message is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. _attend WWRUG12 www.wwrug.com<http://www.wwrug.com> ARSlist: "Where the Answers Are"_ _attend WWRUG12 www.wwrug.com<http://www.wwrug.com> ARSlist: "Where the Answers Are"_ _______________________________________________________________________________ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: "Where the Answers Are"