  | Mailing List | | Home | | Forum Home | | JBoss - Java Application Server | | Struts - A MVC web framework | | Tomcat - JSP/Servlet container | | iText - An open source PDF Java Library | | JDOM - JDOM XML Parser | | J2EE - A mailing list for Java(tm) 2 Platform, Enterprise Edition | | J2EE Pattern - An interest list for Sun Java Center J2EE Pattern Catalog | | Servlet - A mailing list for discussion about Sun Microsystem's Java Servlet API Technology | | JSP - A mailing list about Java Server Pages specification and reference | |
Struts & Hibernate
|
|
|
  | | | Configurable application | Configurable application 2003-10-30 - By Sam Fancourt
Back Hi there,
Thanks for the extra details. If you don't mind, I want to go over a few things to make sure I understand the problem correctly. Am I right in understanding that these Audits are something a person carries out, and then puts the results into the system? ie: Your application is used to allow users to input data for a particular audit and then makes an evaluation, but it is not designed to carry out automated audits on data that is already in the system.
If this is so, then, as I understand it, the two criteria you mentioned in your first email are as follows: 1. Each category (and individual audits) can have a set of rules. These rules represent evaluation of the data from the audit, eg: "Value of <some data> must be between 0 and 10" or "Supplier must use machines less then 10 years old" for the audit to pass. 2. The types of data (ie: attributes) that are collected for each audit can be completely different.
Assuming that these things are correct, I think your application shouldn't require too much complexity. The problem of having different attributes for a particular category can be solved by keeping your data schema flexible (please excuse my tendency to look at things from the DB point of view) The categories, audit types, and attribute types to be used for any audit could be depicted by a schema like this: -- ---- ---- -- ---- ----- -- ---- ---- ---- | | 1 M | | M M | | | Categories |-- ---- --| Audit_Types |-- ------| Attribute_Types | | | | | | | -- ---- ---- -- ---- ----- -- ---- ---- ----
(although possibly the Audits-Attributes relationship could be 1:M)
Then you would have an Audit object, for any particular Audit+Customer+Date combination. I don't know if there's a pattern that represents this, but it may be something like a "DTO using HashMap" mentioned in this post: http://archives.java.sun.com/cgi-bin/wa?A2=ind0309&L=j2eepatterns-interest&D =0&P=8300 (I haven't seen anything about this pattern so I'm making an assumption here).
Of more interest is the rules thing. I'm developing software for a different area of the manufacturing industry, and have found some eccentric requirements when it comes to "rules". Most of them can be represented by combinations of otherwise simple operations. Going on what experience, I think you have one of two options: 1. Use a rules engine like http://www.mandarax.org/ 2. Create a set of classes which represent the basic functional operations you require. If you use a Factory object to get these classes then they could easily be added to and updated at any time. You then need a simple way to represent (and process) the joining of these operations (for criteria like "less than 45 AND greater than 30"). Perhaps read them from an XML string? (makes it easy to generate back to the UI). The advantage of supplying your own operations is that you can easily add things which are particular to your business (this is something our system needed to do). I'm sure others may disagree with me on this option :-)
Which option is best for you depends on exactly what sort of rules you have in your system, and what sort of processing they need to do.
Well, that was a very long email... I don't know if I've hit the mark as far as your requirements goes, but hopefully it's ok.
Sam :-)
-- --Original Message-- -- From: vidyod kumar [mailto:vidyod@(protected)] Sent: Friday, 31 October 2003 00:54 To: J2EEPATTERNS-INTEREST@(protected) Subject: Re: Configurable application
All- Thanks for your quick reply. Here is the business case in details
Our's is a manufacturing organization dealing with automobile parts. We give sub-contract to suppliers for parts manufacturing. On an annual basis we audit them.
We have different categories of audit like Auditing The process followed by the suppliers and actual building process. Within each category we sets up different type of audits. Take an example, the typical auidts can be in the Actual building process category will be audit for the welding, the different types of machines they are using.
Every year, new type category can be introduced and new audit types within that category. Each category different set of rules . Along with that each audit within the cateogy may have it's own individual rules.
We are planning to develop a system where in future we should be able to add new audit types and Audit cateogries with no code changes or minimal code changes.
Hope this will give more information .
Thanks again for the input.
--- Sam Fancourt <sfancourt@(protected)> wrote: > Can you be a little more specific? > > In particular: > Am I correct in assuming that the categories > represent data (ie: they are > not simply logical items)? > What sort of rules are we talking about? It could > be that you need to use a > rules engine, or it could just be that the > configuration settings need to be > well specified. Or that you need some sort of > factory object to get logic > for a particular instance... > > Sam :-) > > > PS: > Some of the discussion from last month might be > helpful to you: > http://archives.java.sun.com/cgi-bin/wa?A1=ind0309&L=j2eepatterns-interest#1 > 1 > but that will only be applicable if you want adjust > the data storage to > handle diverse attributes - it doesn't go over the > "rules" issue. > > > -- --Original Message-- -- > From: vidyod kumar [mailto:vidyod@(protected)] > Sent: Thursday, 30 October 2003 13:42 > To: J2EEPATTERNS-INTEREST@(protected) > Subject: Configurable application > > > Hi All- > I am developing an application with following > features > > There are certain functionalities need to be > performed > for each category identified. Within the > functionality, it has following differences > > 1) Each category has different set of rules > > 2)The attributes that should be displayed for each > category are different > > Pl. let me know what is the best way to do this > > - > > __ ____ ____ ____ ____ ____ ______ > Do you Yahoo!? > Exclusive Video Premiere - Britney Spears > http://launch.yahoo.com/promos/britneyspears/ > > ==================================================================== > Companion Site: http://www.corej2eepatterns.com > J2EE BluePrints: > http://java.sun.com/blueprints/corej2eepatterns > List Archive: > http://archives.java.sun.com/archives/j2eepatterns-interest.html > Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" > to > listserv@(protected) > > ==================================================================== > Companion Site: http://www.corej2eepatterns.com > J2EE BluePrints: > http://java.sun.com/blueprints/corej2eepatterns > List Archive: > http://archives.java.sun.com/archives/j2eepatterns-interest.html > Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" > to listserv@(protected)
__ ____ ____ ____ ____ ____ ______ Do you Yahoo!? Exclusive Video Premiere - Britney Spears http://launch.yahoo.com/promos/britneyspears/
==================================================================== Companion Site: http://www.corej2eepatterns.com J2EE BluePrints: http://java.sun.com/blueprints/corej2eepatterns List Archive: http://archives.java.sun.com/archives/j2eepatterns-interest.html Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" to listserv@(protected)
==================================================================== Companion Site: http://www.corej2eepatterns.com J2EE BluePrints: http://java.sun.com/blueprints/corej2eepatterns List Archive: http://archives.java.sun.com/archives/j2eepatterns-interest.html Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" to listserv@(protected)
|
|
 |