DotNet-USoft data provider

  • 7 January 2021
  • 0 replies
  • 46 views

Badge +1

There are two ways you can use application data in a .NET component defined in USoft Definer:

  • By passing application data as parameters to the component.
  • By executing a query, from the .NET code, to the running Rules Engine using a .NET-USoft data provider. This provider is called "REDataProvider" and is delivered in assembly file "REDataProvider.dll". "REDataProvider" has the following classes:
Class Description
USoftCommand Represents a SQL statement to execute against a running Rules Engine. Inherits from DbCommand
USoftConnection Represents a connection to a running Rules Engine. Inherits from DbConnection
USoftDataReader Provides a way of reading a forward-only stream of rows from a running Rules Engine. Inherits from DbDataReader
USoftParameter Represents a parameter to a USoftCommand. Inherits from IDataParameter
USoftParameterCollection Represents a collection of parameters associated with a USoftCommand. Inherits from ArrayList, IDataParameterCollection.

To connect back to the Rules Engine you need to derive your class from a predefined RulesEngine class. In order to acquire a connection to the Rules Engine you need to call the predefined getConnection() function. This function returns a USoftConnection object. Using this object, you can work with the connection object in the standard ADO.Net manner.

Example

using System;
using System.Data;
using UsoftDataProvider;
class RulesEngineSQL
{
public static string sql = "SELECT p.email_address FROM person p, participant pt WHERE p.person_id = pt.person_id and pt.res_id = ?";
}
class DBExample : RulesEngine
{
public void InformParticipans(int reservation_id, string message)
{
USoftConnection conn = getConnection();
conn.Open();
USoftCommand cmd = (USoftCommand)conn.CreateCommand();
cmd.CommandText = RulesEngineSQL.sql;
USoftParameter p = new USoftParameter("reservation_id", DbType.Int32);
p.Value = reservation_id;
cmd.Parameters.Add(p);
IDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
String email = reader.GetString(0) ;
//send an email to participant
}
reader.Close();
conn.Close();
}
}

For more information on .NET data sources, refer to http://msdn.microsoft.com.

To take advantage of planned future developments related to cross referencing of SQL within C# code, declare all your SQL statements as static attributes in the RulesEngineSQL class.


This topic has been closed for comments