Call a BAQ from within a BPM

There are at least three options when needing to pull in data from the database in a BPM.

1. You can use LINQ

2. you can execute SQL
String myCommand = "some sql";
System.Data.SqlClient.SqlCommand sqlCom = new System.Data.SqlClient.SqlCommand(myCommand,Db.SqlConnection);
System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(sqlCom);
DataSet ds = new DataSet();
da.Fill(ds);
ds.WriteXml(@"C:\Temp\sqlResults.xml");

3. Run a BAQ

Ice.Contracts.DynamicQuerySvcContract boDynamicQuery = Ice.Assemblies.ServiceRenderer.GetService<Ice.Contracts.DynamicQuerySvcContract>(Db);
Ice.Tablesets.QueryExecutionTableset dsQueryExecution = new QueryExecutionTableset();

String filterByUser = "FILEPATHS";

ExecutionParameterRow drRow = new ExecutionParameterRow();
drRow.ParameterID = "FieldServiceUser";  // name of parameter from BAQ
drRow.ParameterValue = filterByUser;
drRow.ValueType = "nvarchar";
drRow.IsEmpty = false;
drRow.RowMod = "A";
drRow.SysRowID = new Guid();

dsQueryExecution.ExecutionParameter.Add(drRow);

DataSet dsResults = boDynamicQuery.ExecuteByID("myBaq", dsQueryExecution);
dsResults.WriteXml(@"C:\Temp\baqResults.xml");


Jim Kinneman
Encompass Solutions, Inc