Skip to main content



Executing a Decision on irServer SOAP endpoint using a Service Reference

Prerequisites: A valid Service Reference

See Also: irServer - Rule Execution Service

The following sample represents how to execute a Decision on irServer Rule Execution Service using a service reference:

using (RuleEngineServiceClient proxy = new RuleEngineServiceClient()) 
{
// Get RuleApp as defined in the config (RepositoryRuleApp or FileSystemRuleApp)
RepositoryRuleApp ruleApp = new RepositoryRuleApp
{
RepositoryServiceUri = "http://localhost/InRuleCatalogService/Service.svc",
RepositoryRuleAppRevisionSpec = new RepositoryRuleAppRevisionSpec { RuleApplicationName ="AreaCalculator" }, UserName = "Admin",
Password = "password"
};
// Create new ExecuteDecisionRequest
ExecuteDecisionRequest request = new ExecuteDecisionRequest
{
RuleApp = ruleApp,
DecisionName = "CalculateArea",
InputState = "{\\"Height\\":50,\\"Width\\":3}", // Note: Decisions only accept JSON input
RuleEngineServiceOutputTypes = new RuleEngineServiceOutputTypes {
ActiveNotifications = true,
ActiveValidations = true
}
};
try
{
// Submit request
Console.WriteLine("- Calling ExecuteDecition on RuleEngineService...");
ExecuteDecisionResponse response =
(ExecuteDecisionResponse)proxy.ExecuteRuleEngineRequest(request);
Console.WriteLine("Active Notifications:");
foreach (Notification notification in response.ActiveNotifications) {
Console.WriteLine($"[{notification.NotificationType}]: {notification.Message}");
}
Console.WriteLine("");
Console.WriteLine("Active Validations:");
foreach (Validation validation in response.ActiveValidations) {
Console.WriteLine(validation.InvalidMessageText);
}
Console.WriteLine("");
// Note: Decisions only support the output of JSON, not XML
Console.WriteLine("Decision Output:");
Console.WriteLine(response.OutputState);
Console.WriteLine("");
}
catch (Exception ex) {
Console.WriteLine($"Unknown exception occurred during RuleEngineService request: {ex}");
}
}
Console.WriteLine("[END ExecuteDecisionServiceReferenceConsumer Sample]");