Click here to Skip to main content
Click here to Skip to main content

15 Steps to Develop a Product Management System in Only a Day

By , 23 Mar 2010
 

Introduction

The article introduces how to easily develop business solutions in RapidWebDev through introducing the development for a product management system with the following requirement step by step. The source code of this sample system is downloadable here.

Requirement

The glossary of the system are role, user, permission, product category, product and product log. The product categories are maintainable enumeration values by administrators that a product has to belong to a category. There are 2 kinds of product properties, hardwired and dynamic properties. The hardwired properties like Name, Number, Description and Manufactory, etc. which cannot be changed at runtime. The dynamic properties are maintained by administrators online. Administrators can define Text, DateTime, Date, Integer, Decimal and Enumeration typed dynamic properties for products at any time.

The system includes:

  1. role management with permission setting
  2. user management with permission setting
  3. product category management
  4. product dynamic property management
  5. product management with logs, includes:
    • create products
    • update products
    • delete products
    • bulk delete products
    • print/export products

Development

Let's first download the RapidWebDev release package (v1.51) from the official website and extract it locally. I intend to reuse its Web and Tests project by adding product management features so that I can save time to setup environment and project structure.

Step 1: Create a database for product management system:

Step 2: Initialize the database by RapidWebDev SQL scripts, Database.sql, SchemaVersions.sql, and UnitTest for ExtensionModel.sql.

Step 3: Open the downloaded RapidWebDev solution in Visual Studio 2008, and modify the database connection string of Web.config for Web project and App.config for Tests project. Then modify RapidWebDev.Web\Config\permission.config for the requirement of product management system so that administrators can assign roles/users with correct permissions in management UI.

Step 4: Modify RapidWebDev.Web\Config\sitemap.config for navigation menu. The sitemap.config is integrated with authorization that users only can see the links which they have the appropriate permission.

Step 5: First launch the web project and log on. You can see the system main page is as following screenshot.

Step 6: Then we can create data tables for product management system. As RapidWebDev provides generic Role/User management and concrete data model, we don't consider the authentication and authorization, and we can reuse concrete data model for product category. So we only need to create 2 tables bizProducts and bizProductLogs. biz_Products schema is below:

Step 7: biz_ProductLogs schema is below:

Step 8: Create a new project into the solution named ProductManagement with references to necessary assemblies. And generate a Linq2SQL model from ProductManagement database. Besides, set the base class of ProductManagementDataContext to RapidWebDev.ExtensionModel.Linq.ExtensionDataContext and Product to AbstractExtensionObject for product dynamic properties support.

Step 9: Configure ProductManagement data context into web.config of Web project and App.config of Tests project with setting connectionStringName to Global which means that it uses the connection string named "Global" for database connection.

Step 10: As product properties are maintainable at runtime, we need to create an installer to setup metadata type for product when the application started.

Step 11: Let's start to implement product category management. We create an ascx template for product category detail panel first as follows. As product category integrates RapidWebDev concrete model, actually we can copy from Templates\Platform\ConcreteData.ascx and do modification.

Step 12: Then create a dynamic page configuration ProductCategoryManagement.dp.xml. Actually it's copied and modified from Spring\DynamicPage\Membership\ConcreteDataManagement.dp.xml as well.

Step 13: Then implement product management. As product category, we still create an ascx template for product detail panel first.

Step 14: Implement aggregate panel, detail panel and dynamic page interfaces for Product as following screenshot.

Step 15: Configure the dynamic page for product management in last step.

Then compile the solution and launch the web application. We see the logon page shows up:

Logon with user=admin and password=password1 and get the system main page with navigation menu:

Finally

Surely, if we need to deploy the solution to our customers, we may have to replace the background image of logon page, logo and license information of the system main page, even rename the solution file name. But as you see, we don't do much work on development really. I created this sample application in only 4 hours. But it should be less than 2 working days for a RapidWebDev new guy.

What's RapidWebDev

Official Website: http://www.rapidwebdev.org

RapidWebDev is an infrastructure that helps engineers to develop enterprise software solutions in Microsoft .NET easily and productively. It consists of an extendable and maintainable web system architecture with a suite of generic business model, APIs and services as fundamental functionalities needed in development for almost all business solutions. So when engineers develop solutions in RapidWebDev, they can have a lot of reusable and ready things then they can more focus on business logics implementation. In practice, we can save more than 50% time on developing a high quality and performance business solution than traditional ASP.NET development.

Related Topics

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)

About the Author

Eunge
President TCWH
China China
Member
I've worked as a software architect and developer based on Microsoft .NET framework and web technology since 2002, having rich experience on SaaS, multiple-tier web system and website development. I've devoted into open source project development since 2003, and have created 3 main projects including DataQuicker (ORM), ExcelQuicker (Excel Report Generator), and RapidWebDev (Enterprise-level CMS)
 
I worked in BenQ (8 mo), Bleum (4 mo), Newegg (1 mo), Microsoft (3 yr) and Autodesk (5 yr) before 2012. Now I own a startup company in Shanghai China to deliver the exceptional results to global internet users by leveraging the power of Internet and the local excellence.
SearchBestHosting.com and LinkedHosts.com are two main sites owned by me, designed to help people find the best web hosting deal at the reasonable price for their web presence, based on our real editorial experience and real customer voice. So far we have reviewed over 100 web hosts based on our true experience and the real customer reviews. If you're looking for a budget and reliable web host, you shall check out SearchBestHosting.com.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
SuggestionOK ArticlememberMember 978964127 Jan '13 - 7:47 
Thanks. Although the explanation is pretty complicated. Here is a link I found very useful for me : http://www.reportingsoftware.info/reporting-software-features/latch-on-the-secrets-of-business-efficiency/
QuestionGOOD ARTICLEmembergitman8627 Feb '12 - 16:50 
nice, thanks for your article.
u are good and clever china programmer.
i get many time with yours
QuestionHI FRIEND...membersk1884s1 Feb '12 - 4:45 
HAVE ANY SOURCE CODE FOR THE SALES BILLING SYSTEM IF YOU HAVE PLEASE SEND ME.. samir4usamir@gmail.com
QuestionGood articlememberMember 353296025 Mar '11 - 7:09 
Thanks you so much
Your article is very useful for me. But when I run your example (Product management) I feel it run so low. What do you think about this problem?
GeneralMy vote of 1memberMarek.T17 Jun '10 - 4:10 
an ad rather than an article
GeneralRe: My vote of 1memberFernandaUY18 Jan '12 - 9:09 
Agree with you, Marek. The articles have to be like yours. Oh, sorry! You didn't write any article!
GeneralExcellentmemberDecodedSolutions.co.uk2 Jun '10 - 22:00 
Good looking article 5/5
GeneralMy vote of 1member aphazel 死神18 Apr '10 - 22:15 
I've decided to improve my behavior and stop acting like a whipster. Sincere apologies. I also changed my vote to one that is fair more likely.

modified on Sunday, June 5, 2011 9:09 AM

GeneralRe: My vote of 1memberPredrag Tomasevic19 Apr '10 - 14:36 
I hate people who have 0 articles written and yet consider themselves fit to criticize.
GeneralRe: My vote of 1mvpShivprasad koirala24 Apr '10 - 4:35 
Smart developers do not reinvent the wheel. This is a great article. To ensure that the configuration works he must squeezed his sweat day and night. I hope you will remove your 1 vote.
 
Thanks
Visit my 500 videos on WCF,WPF,WWF,Silverlight,UML design patters @ http://www.questpond.com

GeneralAmazing timing ...memberPeter Hayward23 Mar '10 - 14:35 
I'm just starting out looking at implementing an in-house PLM system. This may be just the starting point I'm looking for. Well done by the looks of things.
 
Keep it up Smile | :)
Peter Hayward
Ngarkat Technologies
South Australia,

GeneralAwesome!memberSandeep Mewara13 Mar '10 - 21:23 
Too good an article Thumbs Up | :thumbsup:
GeneralExcellentmvpMd. Marufuzzaman4 Mar '10 - 4:09 
Hay good work...Keep it up Thumbs Up | :thumbsup:
Thanks
Md. Marufuzzaman


I will not say I have failed 1000 times; I will say that I have discovered 1000 ways that can cause failure – Thomas Edison.

GeneralGreatmembernicholas_pei1 Mar '10 - 22:52 
Hi guy,
So proud of you . Greate job.Five From me.
 
A Chinese Friend in beijing
GeneralRe: Greatmembernicholas_pei4 Mar '10 - 16:26 
I've read the sourcecode,it looks liek a enhancement of spring.net's code. I really like sprint.net framework.Keep going
GeneralRe: GreatmemberEunge4 Mar '10 - 16:32 
Sure not. Spring.net just is used for IoC and AOP.
GeneralRe: Greatmembernicholas_pei5 Mar '10 - 0:29 
There are Spring.Web, Spring.Service and Spring.NHibernate and so on.
In your RapidWebDev project, Do you think it is possible for spring.Service instead of your own service Handler method?
 
Can you upload some help documents about your project?
GeneralReally nice.memberKrunal Mevada1 Mar '10 - 18:45 
+5 Thumbs Up | :thumbsup:
GeneralKeeping up Brother!memberSouthmountain1 Mar '10 - 18:20 
you did good job and shall be encouraged. I will browse your website and see if we can cooperate on some projects.
usibility & truth

GeneralRe: Keeping up Brother!memberEunge2 Mar '10 - 2:32 
I'm looking forward to it!
Generalcoolmemberzhuqil1 Mar '10 - 1:37 
cool
zhuqil

GeneralMy vote of 1memberiaxes28 Feb '10 - 21:33 
poor
GeneralRe: My vote of 1memberWes Aday1 Mar '10 - 4:28 
iaxes wrote:
poor

 
Maybe you could be a bit more vague in your explanation of what exactly is so poor?
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Individuality is fine, as long as we do it together - F. Burns
 
Help humanity, join the CodeProject grid computing team here

GeneralRe: My vote of 1memberXmen W.K.23 Jun '10 - 17:00 
Wes Aday wrote:
what exactly is so poor

His reputation


TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L
%^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2
W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN%
R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>
-----------------------------------------------
128 bit encrypted signature, crack if you can

GeneralRe: My vote of 1memberspoodygoon1 Mar '10 - 5:24 
That is not very helpful, if you dislike it that much why bother posting. If you have something to suggest that would be helpful this is not.

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web04 | 2.6.130523.1 | Last Updated 23 Mar 2010
Article Copyright 2010 by Eunge
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid