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.

0


a source to share


4 answers


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.

+2


a source


We use SOA (Service Oriented Architecture) - the correct service is called with the correct business logic according to the client. The location of these services is configured from the database.



0


a source


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.

0


a source


Spring is a really useful tool for dependency injection; you may find it useful for your needs. Using Spring, you can spoof in business objects for each of your client implementations while maintaining the overall structure of your application. Very useful.

0


a source







All Articles