473,381 Members | 1,493 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,381 software developers and data experts.

Using MABLE logic engine with existing .NET applications.

Using MABLE logic engine with existing .NET applications.

MABLE web services provide an interface to MABLE business objects and logic.
Let us review some technical details of the MABLE web services.

· MABLE utilizes SOAP 1.2 protocol.
· MABLE uses AXIS 1.4 as a web service transport.
· MABLE support state-full conversations by implementing a conversation

In this small article we will create a client application that use the MABLE
'Store' application

MABLE Web Service client has to maintain a state-full conversation with the
engine. The best way to handle this is by keeping a single instance of the
MABLE web service on the client side during sequence of events. Of course,
if you are not going to use
multiple threads or MABLE applications you can create multiple instances.

Before operating and manipulating business objects and their logic and
rules, the Web Service client has to initiate the MABLE application and the
business objects that it will use:

Here is the listing of the .NET C# console application that implements MABLE
web services. The first step we should do is to add a Web Reference to your
..NET project that is pointing to the following MABLE WSDL descriptor:


Listing MABLESimpleWebServiceClient.cs

using System;
using System.Text;
using System.Data;
using System.Configuration;
using System.Web;
using System.Net;
using MABLESimpleWebServiceClient.com.alfabdi.www;

/// <summary>
/// Title: Mind Ahead Business Logic Engine - MABLE client
/// Description: MABLE Web Service
/// Copyright: (c) 2006
/// Company: AL&FA Business Data Integrity, http://www.alfabdi.com
/// Author: Alisher Fatykhov
/// </summary>

namespace MABLEClient
class WebServiceClient
private FFrontServiceControllerService mable = new

public WebServiceClient()

private void initMable()
CookieContainer newCookieContainer = new CookieContainer();
mable.CookieContainer = newCookieContainer;
mable.setDebug("store/faframework-config.xml", "STORE");
mable.addFboSet("FFboSessionEjb", "STORE", "PRODUCTSEARCH", "",
"", "", "true", true);
mable.addFboSet("FFboSessionEjb", "STORE", "PRODUCT", "", "",
"", "true", true);

public void getProduct()
mable.setParameter("STORE", "PRODUCTSEARCH", "STARTDATE",

string message = "";
if (!mable.sendAction("STORE", "PRODUCT",
message = mable.getExceptionMessage("STORE", "PRODUCT",
mable.sendAction("STORE", "PRODUCT", "DATA-EVENTS",
mable.sendAction("STORE", "PRODUCT", "DATA-EVENTS",

int size = mable.getFboSetSize("STORE", "PRODUCT");

System.Console.Write("\n numberProducts = " + size);
System.Console.Write("\n product = " +
mable.getParameter("STORE", "PRODUCT", "DESCRIPTION"));
System.Console.Write("\n shelf = " + mable.getParameter("STORE",
System.Console.Write("\n status ="+ message);

static void Main(string[] args)
WebServiceClient mableClient = new WebServiceClient();

After we compile our project we run the MABLESimpleWebServiceClient.exe

The result will be like:
C:\...bServiceClient\MABLESimpleWebServiceClient\b in\Debug>MABLESimpleWebServiceClient.exe

numberProducts = 2
product = My Cat
shelf = 5
status =This business object's record is not new !

If you take a closer look at the source code of this client application you
will find a lot of similarities with the web applications we created in the
previous chapters.

Now we trace step by step what this client does first.

1. After the service object is created, it is necessary to set a
session conversation.
CookieContainer newCookieContainer = new CookieContainer();
mable.CookieContainer = newCookieContainer;

2. Setting the MABLE EJB name by:

3. Setting the MABLE EJB connection parameters:

4. Setting the MABLE application metadata location:

5. Setting the MABLE application logging verbosity level:
mable.setDebug("store/faframework-config.xml", "STORE");

6. Adding and initializing the MABLE business object 'PRODUCTSEARCH':
mable.addFboSet("FFboSessionEjb", "STORE", "PRODUCTSEARCH", "",
"", "", "true", true);

7. Adding and initializing the MABLE business object 'PRODUCT':
mable.addFboSet("FFboSessionEjb", "STORE", "PRODUCT", "", "",
"", "true", true);

Now we will use newly created business objects and operate with their
business logic.

8. Creating a WHERE clause for the 'PRODUCT' business object:
mable.setParameter("STORE", "PRODUCTSEARCH", "STARTDATE", "12/30/2005");

This call sets the 'STARTDATE' section of the WHERE clause to the
'12/30/2005' value.

9. The client calls CCSC action 'MAKEWHERE' which will create a new
WHERE clause and repopulate the 'PRODUCT' business object.

10. The client checks the first business object in the stack of the
business objects if it has the 'NEW 'status.
if (!mable.sendAction("STORE", "PRODUCT", "DATA-EVENTS","ISNEW"))

11. If the status of the business object is not 'NEW' than the client
gets a status message of the 'ISNEW' CCSC action.
message = mable.getExceptionMessage("STORE", "PRODUCT", "ISNEW");

12. Rolling back current business object transaction (In this example we
are not using MABLE auto commit feature):
mable.sendAction("STORE", "PRODUCT", "DATA-EVENTS", "ROLLBACK");

More information about MABLE logic engine can be found

Al Fatykhov

Copyright (c) 2006. AL&FA Business Data Integrity. All rights reserved.
Patents pending

Mind Ahead Business Logic Engine - MABLE, Mind Ahead Web Framework and
SuperGrid are registered trademarks of AL&FA Business Data Integrity
Feb 14 '06 #1
0 1007

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

by: Mark Miller | last post by:
QUESTION: Does anyone know how I can use v2.6 of the MSXML parser with .NET? BACKGROUND: I "Web to Print" process that allows our clients (newspapers) to export their data and pass it thru a...
by: Katrina | last post by:
I am trying to write a piece of code that will search through a number of different tables (current one being tableNm) to look for a specific street name that has been entered by the user and saved...
by: hazz | last post by:
before I start filling up the first page of perhaps many pages of code with if/then or switch:case buckets, I wanted to step back and see if there is a better way... I will have a table with up to...
by: dtsearch | last post by:
New release expands-through a .NET Spider API, to Linux, and to OpenOffice-dtSearch's ability to index over a terabyte of text in a single index, with indexed search time typically less than a...
by: Al Fatykhov | last post by:
Free MABLE/Eclipse 3.1 integration plug-in can be downloaded from http://www.alfabdi.com . You can download a trial version of MABLE for JBoss. Sincerely, Al Fatykhov AL&FA Business Data...
by: Al Fatykhov | last post by:
Using MABLE logic engine with existing .NET applications. MABLE web services provide an interface to MABLE business objects and logic. Let us review some technical details of the MABLE web...
by: dtsearch | last post by:
A new beta build offers 64-bit developer access to dtSearch's "terabyte indexer," and preliminary MS Word 2007 and Excel 2007 support (in both 64-bit and 32-bit versions) BETHESDA, MD (July 22,...
by: Ted | last post by:
I managed to get it installed OK, along side MS Visual Studio 2005 (with which I received it). During the install, I made sure I installed everything. I have developed a number of applications...
by: Al Fa | last post by:
MABLE Business logic engine, version 2.5 for Tomcat 5.5.x is available for download : http://www.alfabdi.com/alfabdi/download/install_linux.zip All the best ! Al http://www.alfabdi.com
by: Dave | last post by:
I need to filter an Access 2000 result set in ASP 30 using the ADO recordset.filter. I build the filter in pieces. The first clause of the filter is this... WHERE word LIKE 'S%' ... to...
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.