Solved

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

Posted on 2014-03-16
3
259 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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

Space-Age Communications Transitions to DevOps

ViaSat, a global provider of satellite and wireless communications, securely connects businesses, governments, and organizations to the Internet. Learn how ViaSat’s Network Solutions Engineer, drove the transition from a traditional network support to a DevOps-centric model.

Question has a verified solution.

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

Suggested Solutions

We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
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…

730 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