views:

908

answers:

3

Hi All,

I want to achieve the following aspects in the software I am building: 1. Customizable entity model 2. Customizable UI 3. Customizable workflow

I have thought about an approach to achieve this, I want you to review this and make suggestions:

  1. Entity objects should be plain objects and will hold just data
  2. Separate Entity model and DB Schema by using an framework (like NHibernate?). This will allow easy modification of entity objects.
  3. Business logic to fetch/modify entities has to be granular enough so that they can be invoked as part of the workflow.
  4. Business objects should not hold any state, and hence will contain only static methods
  5. The workflow will decide depending upon the "state" of an entity/entities which methods on business object/objects to invoke.
  6. The workflow should obtain the results of the processing and then pass on the business objects to the appropriate UI screen.
  7. The UI screen has to contain instructions about how to display a given entity/entites. Possibly the UI has to be generated dynamically based on a set of UI instructions. (like XUL)

  8. What do you think about this approach?

  9. Suggest which existing frameworks (like NHiberante, Window Workflow) fit into this model, so that I will not spend time on coding these frameworks
  10. Also suggest is there any asp.net framework that can generate dynamic asp.net ajax pages based on a set of UI instructions (like Mozilla XUL)?

I have recently been exploring Apache Ofbiz and was impressed by its ability to customize most areas of the application: UI, workflow, entities. Is there any similar (not necessarily an ERP system) application developed in C#/.Net which offers a similar level of customization? I am looking for examples of applications developed in C# that are highly customizable in terms of UI, Workflow and Entity Model

A: 

Can you clarify the requirements.

Is the user of the application going to be building some Form and defining its workflow? Does each separate entity have a base set of properties that is included?

You can dynamically create asp.net code by using "Page.Parse". Create the asp.net code using any method such as XSLT and parse it into the page. Example Here: http://www.codeproject.com/KB/XML/xmlxsltransformer.aspx

Ben Dempsey
A: 

Can you clarify the requirements. Is the user of the application going to be building some Form and defining its workflow? Does each separate entity have a base set of properties that is included?

You can dynamically create asp.net code by using "Page.Parse". Create the asp.net code >> using any method such as XSLT and parse it into the page. Example Here: http://www.codeproject.com/KB/XML/xmlxsltransformer.aspx

Yes the application will define a workflow, the forms and the entities. The basic need is that the application should be highly customizable.

Is there any ready made framework for asp.net that can achieve this: "can generate dynamic asp.net ajax pages based on a set of UI instructions (like Mozilla XUL)"

I am looking at Windows Workflow, Asp.Net MVC and ADO.Net Entity framework to see if they fit the requirements I have described above.

Comments

Ngm
A: 

Ive built large dynamic generated forms before with workflow, but everything was done in with in-house code.

An ORM isnt going to help you with dynamic forms, since you have to specify the table to entity field mappings. Since in your case their dynamic, it doesnt make sense.

Theres two ways that i see how to store the data:

1) EAV (Entity Attribute Value) table - dynamic fields, but pain for reports and not very efficient but sometimes its the only way to go

2) Generate the DB tables on the fly as the user designs the forms

As for the GUI check this out , havent used it yet. It's Microsoft's answer to a Ruby on Rails type environment that generates "scaffolding" ie. GUI screens based on your database table.

ASP.NET Dynamic Data

http://msdn.microsoft.com/en-us/library/cc488546.aspx

I havent seen anything you are looking for in another project.

You can look into XForm engines, but it seems kinda immature.

Ben Dempsey