Re: Business Process Management and Rules [message #757 is a reply to message #756] |
Tue, 10 April 2007 04:35 |
AJM
Messages: 2369 Registered: April 2006 Location: Surrey, UK
|
Senior Member |
|
|
No, you do not need different versions of the same task. You have one task, which has a single screen with a defined set of fields. If you want to have different accessibility to these fields for different Roles the old fashioned way would be to create a different task with a different screen. This would also mean that you would have to change menu/navigation buttons in order to activate the relevant task with the relevant accessibility, and this would require a great deal of effort.
The Radicore approach is much easier. There is a single Task with a single screen that is accessible to one or more Roles. By default all the users of those Roles see exactly the same screen. By using either of those two functions I mentioned previously it is possible to change the accessibility of certain fields in that screen for specified Roles. There is still a single task with a single screen, but the contents of the MNU_ROLE_TASKFIELD table is checked at runtime to see if the default accessibility of any fields in that screen need to be changed.
As for a rules engine based on the screen sample you supplied, I have no plans to implement such a thing. The Radicore framework has been designed for developers, not untrained users, so business rules are implemented by putting the correct PHP code in the correct method of the correct class. Any alternative would simply impose a great overhead for no benefit. It would also make debugging a lot harder.
The theory that it is possible to write a general-purpose rules engine that can deal with any rules in any circumstances is just that - a theory. I have seen it attempted and I have seen the failures.
The only time I have personally built a successful rules engine was for a payroll system in the 1990s in which I made it possible for all the calculations to be defined in screens and maintained on the database. This was a closed system in that all the possible inputs were known, all the possible outputs were known, and all the possible actions (add, subtract, multiply, divide) were also known.
Tony Marston
http://www.tonymarston.net
http://www.radicore.org
|
|
|