Donde puedo almacenar las BR?
BizTalk Server a través del Business Rule Engine (BRE) ofrece la posibilidad de almacenar las reglas de negocio (BR) implementadas en archivos xml o en bases de datos para su posterior invocación y ejecución. Cada almacenamiento ofrece sus ventajas y desventajas, y adicional su invocación difiere en cada uno.
Archivos XML
Una BR se puede almacenar e invocar desde un archivo plano usando la clase FileRuleStore.
void SaveToFile()
{
RuleStore ruleStore = new FileRuleStore("filename");
ruleStore.Save(new RuleSet("rulesetname"));
}
void LoadFromFile()
{
RuleStore ruleStore = new FileRuleStore("filename");
RuleSetInfoCollection rsInfo = ruleStore.GetRuleSets("rulesetname", RuleStore.Filter.Latest);
RuleSet newRS = ruleStore.GetRuleSet(rsInfo[0]);
}
Este almacenamiento ofrece las siguientes ventajas:
- No es necesario tener una base de datos (como SQL Server) para su almacenamiento y ejecución.
- El instanciamiento de la BR es mas rápida ya que evita el acceso a la base de datos.
- La BR puede ser modificada con un editor como Bloc de Notas (notepad) y no es necesaria su publicación (publish) y despliegue (deploy) posterior.
Las desventajas son:
- Estas BR no pueden ser invocadas desde un orquestación con el Call Rules Shape, sólo desde .net assemblies utilizando la clase FileRuleStore.
- Si una BR va a ser accedida por varias aplicaciones se debe copiar el archivo en una ruta compartida o crear una copia en cada aplicación.
- No se puede editar con el Business Rule Composer.
Base de datos
Una BR puede ser almacenada e invocada desde una base de datos usando las clases SqlRuleStore o OleDbRuleStore
using Microsoft.BizTalk.RuleEngineExtensions;
static void DeployRuleSet(RuleSet ruleset)
{
RuleSetDeploymentDriver dd = new RuleSetDeploymentDriver();
SqlRuleStore sqlrs;
sqlrs = (SqlRuleStore) dd.GetRuleStore();
sqlrs.Add(ruleset, true);
dd.Deploy(new RuleSetInfo(ruleset.Name,
ruleset.CurrentVersion.MajorRevision, ruleset.CurrentVersion.MinorRevision));
}
static void GetRuleStore(string rulesetname)
{
RuleSetDeploymentDriver dd = new RuleSetDeploymentDriver();
SqlRuleStore sqlrs = (SqlRuleStore) dd.GetRuleStore();
RuleSetInfoCollection rss = new RuleSetInfoCollection();
rss = sqlrs.GetRuleSets(rulesetname, RuleStore.Filter.Latest);
}
Las ventajas de utilizar una base de datos se enumeran en:
- Las BR quedan almacenadas en forma centralizada, por lo tanto las aplicaciones que la consuman tendran siempre un repositorio único
- Se puede utilizar el Business Rule Composer para administrar las BR, publicarlas (publish) o desplegarlas (deploy).
- La BR puede ser invocada desde un .net assembly utilizando las clases provitas por el framework de BRE.
- Las BR pueden ser invocadas desde orquestaciones usando Call Rules Shapes.
Las desventajas son:
- El instanciamiento inicial de la BR puede ser lenta dependiendo de la conexion a la base de datos
- Se debe tener una base de datos para el almacenamiento de las BR
- La administracion y modificaciones a las BR tienen que hacerse por medio de un editor de BR, ejemplo el Business Rule Composer.
En ambos casos se puede exportar facilmente una BR de un archivo xml a la base de datos y viceversa, para ello se puede utilizar el framework de BRE o el Business Rule Engine Deployment Wizard que provee BizTalk Server.
Autor: Carlos Medina
Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga ningun derecho