Solved

c# Allow users to add Additional logic to application (called Logic)  without access to Source

Posted on 2014-03-16
3
253 Views
Last Modified: 2014-03-19
I have developed a c# application which allows users to define their own transactions by grouping SQL database records under a common transaction name. Effectively the application which runs the transactions is "dumb" with all of the logic residing in the database transaction records. By breaking any transaction down to its smallest elements and applying a sequence number and branching logic, they can define the processing flow required to run any transaction. Some of the database transactions are Input rules whilst other are Output rules, Logic/Decision rules, Constant rules, Update rules etc...

To enhance functionality each database transaction is capable of running pre-defined Commands either before , during or after the transaction record is processed. An example of this might be a Logic transactions which reads shop orders from an order master table via an SQL statement.  (select order_number from ShopOrder_Master)]. By having pre-defined Commands CLR_LIST1ADD_LIST1 specified, the array LIST1 can be cleared down and subsequently populated with the output of the SQL statement. Another Command DRPDWN_LIST1 could copy the list of shop orders to a drop down list in preparation for an Input statement.

I would like to be able to ship this software with an option for users to be able to develop their own Commands and utilize these within their own transactions.  Obviously the software shipped would just be the executable without source. I'm thinking along the lines of defining a class called "UserCommands", with source, where the users could define commands which would be called from the main application. However this would be a separate executable and I assume that it would not has access to the object instances of the main application.

Any insights into how I might be able to integrate user defined commands (ie commands yet to be defined) into the main application would be most welcome.

regards
Pat
0
Comment
Question by:pclarke7
3 Comments
 
LVL 23

Expert Comment

by:Michael74
ID: 39933351
Why not have a database table to hold these commands with a column for command id and another to the command itself. This could created in local database file
http://msdn.microsoft.com/en-us/library/ms233763.aspx

Michael
0
 
LVL 75

Accepted Solution

by:
käµfm³d   👽 earned 500 total points
ID: 39933549
Why not create a plugin architecture? This is a common way to allow end-users to extend the functionality of an application without actually modifying the application itself.

Additional tutorials:

http://www.codeproject.com/Articles/4691/Plugin-Architecture-using-C
http://www.codeproject.com/Tips/546639/How-to-create-an-easy-plugin-system-in-Csharp
0
 

Author Closing Comment

by:pclarke7
ID: 39939312
thanks and regards
Pat
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
Hi friends,  in this video  I'll show you how new windows 10 user can learn the using of windows 10. Thank you.

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

26 Experts available now in Live!

Get 1:1 Help Now