I have to extend a .Net 4/C# case management application that uses Oracle 11g to handle legal cases.
I have minimal budget, my experience with Oracle and a very junior C# developer to accomplish this. The additional module will be used by no more than 20 people on an intranet.
The existing rules are generally like this:
- in order to complete an action there must be property a, property b, property c present in a table with a clearly defined relationship to the table where the new insert must be validated
- For legal cases new business rules are more like "everything is an exception" More formally restated as data entries in other tables may or may not affect the outcome of future transactions based on unknown conditions
The existing application uses Microsoft Workflow to implement the business rules. This has proven to be unwieldy, almost unusable for us. Drools and their commercial equivalents are equally complicated and will not achieve the goal of allowing managers to understand their business logic.
- it would be a benefit if the business logic could be seen by users in a report without having to read C# comments or code.
- logic can be added or disabled quickly without taking the web application down
- fairly easy to implement given we have limited budget and skill sets
This brings me to the old fashioned idea of holding the business logic in the database as a series of decision tables. Is this still done or has the idea that the efficiency of holding the business logic in the application so obviously better?
Edit: Workflow is implemented as a service. My understanding is that it was aimed at long running workflows. In our case users press the save button and the workflow runs. Our issues are
- Painfully slow to develop with on our machines, freezes, crashes
- difficult to debug
- now and again the workflow manager throws errors for a few hours for no reason we can find
- touch one workflow and you have to change 14 other files
- application is slow for users, part of which we have traced to the workflows.
Validating in the database starts to look good because the validation is all based on data in the database.
@catcall There are 10 or 12 lawyers who do not use the application but have 8 or 10 admins do the data entry.
We just finished the desktop upgrade but the boss does not believe that programmer contractors should have better equipment than staff. So Windows XP with 4 cores and 3 GB of ram is the best we can do.
I will investigate if there is any classification of types of business logic. Some of it can be done more efficiently in the application. Other types might be more easily changed and configured on the database side.