Best practices for developing custom B2B Java software?
I am working on Java based software that needs to be configured for a few but large clients. A separate server instance is run for each client.
Each client has quite different requirements, so each implementation requires different business logic.
Currently, different business logic is handled by writing separate business logic classes, and the presence of the "core" classes calls the corresponding class depending on the parameter in the properties file.
I would like to know how you have developed your software around the needs of several (but very important) business clients?
Note. We cannot use reflection due to obfuscation requirements.
a source to share
You should seriously consider whether there is a domain language in there .
DSLs were a big thing in Ruby, but there is certainly no reason you can't do it in Java, or create a collection of classes with a sufficiently "fluent" interface to accomplish the same purpose.
Ideally, the notation will be simple enough for your customers to read and validate their business rules as implemented in the DSL; which gives you the best leverage in terms of getting the rules right.
The implementation probably implies Command and Template Method .
Also see the Martin Fowler website . Here's an interesting article on creating a DSL in java.
a source to share
I would look at the rules engine (like Drools - although performance can be a problem with which one you choose, so you should consider commercial alternatives as well). These clients tend to love configurability, which is the rule engine, rather than feeling like they have to go back to the developers to customize the business logic.
a source to share