A problem faced in many software services groups that customize a core piece of software for a client is keeping a client within the upgrade path. From a business point of view, consultants should implement solutions for clients in a manner close to what is intended by the core product. From a technical point of view, consultants should not overwrite core code. When we do this and only make use of public APIs, it makes it much easier and cheaper for the client to get to the next software versions, getting the latest bug fixes and the latest features at the same time.
Even with the great extensibility of Workbrain through configuration, clients often require additional customizations. If this couldn't be done through callouts (hooks in the core code made for inserting extensions), consultants usually had to overwrite core code to get the required functionality. But with the product moving towards the Spring framework, we have a couple new ways to get at that core code, without actually overwriting it: PostBeanProcessors & Aspects (AOP).
While I haven't yet had the need to implement a PostBeanProcessor yet, I could use it to implement client specific logic on some core services at application start up, or perhaps some additional configuration is able to be applied to a core service.
I have implemented several Aspects so far. Aspects, as a reminder, are cross-cutting concerns across multiple modules within the application, such as security or logging. Read up about AOP if you are not familiar.
For example, I wanted to ensure that each time an employee was loaded from the core EmployeeService, the current user requesting that employee data indeed had access to that employee. I did not need to edit the core EmployeeService, but rather Spring places my proxy class in front of the EmployeeService, so that each time data is requested, it is always validated.
Upgrading the client has become much simpler! Have you had to or will you implement PostBeanProcessors or Aspects in your Workbrain implementation? Do share as I'm curious the different ways folks are using these for Workbrain.
0 comments:
Post a Comment