Sunday, September 26, 2010
Friday, April 25, 2008
External function calls
Initially I intended to call a webservice, but it seems that all free weather webservice calls is something from the past. Yahoo offers weather information as an RSS feed. So a simple XPath query can select the information that I'm interested in:
Here is the code (note the FunctionAttribute decoration on the method)
1 using System.IO;
2 using System.Net;
3 using System.Xml;
4 using AcumenBusiness.IModel;
5 using Type=AcumenBusiness.IModel.Type;
6
7 namespace TestCallWebService
8 {
9 [Concept("Weather info", "Try to get weather forecast from different services")]
10 public class WeatherInfoProvider
11 {
12 private static readonly string YahooWeatherURLFormat = "http://weather.yahooapis.com/forecastrss?p={0}";
13
14 [Term("workaround", "import function requires one field. (bug)")]
15 private string dummyField;
16 public string DummyField
17 {
18 get { return dummyField; }
19 set { dummyField = value; }
20 }
21
22 [Function("Get temperature", "Get the weather info from Yahoo",
23 ReturnType = Type.text,
24 ArgumentTypes = new Type[] { Type.integer })]
25 public static string GetWeatherInfoAsFeed(int zipCode)
26 {
27 HttpWebRequest request = (HttpWebRequest) WebRequest.Create(string.Format(YahooWeatherURLFormat, zipCode));
28 // execute the request
29 HttpWebResponse response = (HttpWebResponse) request.GetResponse();
30
31 // we will read data via the response stream
32 Stream resStream = response.GetResponseStream();
33 XmlDocument rssFeed = new XmlDocument();
34 rssFeed.Load(resStream);
35
36 //set an XmlNamespaceManager since we have to make explicit namespace searches
37 XmlNamespaceManager xmlnsManager = new System.Xml.XmlNamespaceManager(rssFeed.NameTable);
38 //Add the namespaces used in the xml doc to the XmlNamespaceManager.
39 xmlnsManager.AddNamespace("yweather", "http://xml.weather.yahoo.com/ns/rss/1.0");
40
41 XmlNode weatherCondition = rssFeed.SelectSingleNode("/rss/channel/item/yweather:condition/@temp", xmlnsManager);
42 if (weatherCondition != null) {
43 return weatherCondition.Value;
44 }
45 return null;
46 }
47 }
48 }
With the Import Schema adapter I can import this function and call it from my business rules. The coolest part is that you can invoke this from the Interactive Rule Map. So you can see how your rules are executing with this external data. It seems to be 76 fahrenheid in L.A.
Nice weather to jump on the bike and cycle to work...

Thursday, January 10, 2008
.NET SOA BizTalk: BizTalk Tools and guidelines
Tuesday, October 30, 2007
RenewCert - Renew Expired Certificates
The error you would get is:
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Deployment.Application.ApplicationTrust.RequestTrust(SubscriptionState subState, Boolean isShellVisible, Boolean isUpdate, ActivationContext actCtx, TrustManagerContext tmc)
at System.Deployment.Application.DeploymentManager.DetermineTrustCore(Boolean blocking, TrustParams tp)
at System.Deployment.Application.DeploymentManager.DetermineTrust(TrustParams trustParams)
at System.Deployment.Application.ApplicationDeployment.CheckForDetailedUpdate()There is a workaround made by Cliff Stanford RenewCert, which allows you to regenerate an expired certification.
Thanks Cliff!
Sunday, October 14, 2007
Graphical Rule Editor for RuleML format

In the last few weeks we have created the RuleML adapter for the Rule Manager. The RuleML adapter allows to export a business rules policy to the Reaction RuleML format.
Please bear with us that we are no experts in RuleML and certain rule constructions might be exported incorrectly. I hope the RuleML community can provide us with the feedback and we will incorporate any changes into our automatic update process as soon as possible. You can give feedback at the http://www.acumenbusiness.com/support forum.
Installation:
The Rule Manager product is available from the website http://www.acumenbusiness.com/
You can export to the RuleML format by installing the RuleML adapter module. See the screenshot [Menu: File\Options\Adapters\Rule ML]
The adapter will provide the new export format "RuleML (*.rrml)" in the Export wizard. [Menu: File\Export]
You can set .rrml as the default export type by changing the File Export type on the Import & Export options
[Menu: File\Options\Import & Export\File Export = RuleML (*.rrml)]
An example of the Driver Eligibility export is here
Wednesday, August 08, 2007
Paul Andrew : What to use Windows Workflow Foundation for?
That is exactly the reason why I'm currently designing a Windows Workflow Foundation architecture for a very large client. Performance will become critical...
Wednesday, July 18, 2007
Rule Vendors - Product Derby
A few years ago I was actively involved with the implementation using Aion (from CA). Last year I put together the web front-end for Corticon. And recently I've been examining the implementation from Microsoft with WF rules.
Microsoft's example (download here) illustrates the technical feasibility of using WF rules. Although this example shows that it's technical possible, it does not highlight the business rules management, rule audit trail and rule traceability.
For me it was a nice opportunity to see if the Rule Manager from Acumen Business could visualize the rules and perform rule verification on the policy to discover if the actual implementation was logically correct.
We start this blog series with a closer look at the 'Driver's Eligibility' policy as defined in the use case. After a few adjustments on the Rule Manager, I produced this report (PDF, XPS) from Microsoft's example implementation.
The part that got my attention right away was the discovered contradiction.
On first look, the rule DA_7 is rather complicated. It is a typical programmer's construction to use a not (expr and Such a statement has probably a few nanoseconds advantage on your processor. However do we really want the business user to decipher this statement by applying De Morgan's law?
Just keep it simple stupid. Where possible, avoid negated nested expressions and split or-statements in multiple rules.
You might wonder if we found an error with the rules example? The example should work fine, however the example uses rule priorities to ensure that rule DA_7 (priority -1) , is executed after DA_8 (priority 0). The problem that I have with rule priorities is that you throw away the declarative features of a rule engine. Suddenly the rule writer has to be aware of priority values in order to achieve the desired result.
Also note that DA_7 does not halt the rules engine. In a case where we have a male driver of 71 years old, the rules engine first assign 'Senior' to the Driver class, and consecutively overwrites this value with 'Typical Driver'. Now we also have to make sure that rule 'DA_3' must be executed after DA_7 and DA_8. If DA_3 would fire before, we make the incorrect conclusion that a 71 year old senior is eligible without checking his training certificate.
A second problem related to the priority and overwriting conclusions is that a rule audit report would show incorrect results. So please use rule priorities careful. We will show below that the Driver Eligibility policy actually don't require priorities.
Finally, the generated rule graph shows two disjoint rule networks. We have to wonder what happened with the rules that determine the 'Training Certification'. Also how is the DUI related to the Training Certificate? It seems that the example is not a complete implementation of the specification. Visualizing a rule policy in a complete rule graph does make the business rules code review an easy task.
Again, Microsoft example was only illustrating the technical aspects of WF rules. And the example shows how you can achieve First Order Logic with WF rules. (For All Drivers do...)
I changed the Driver Eligibilty policy to remove the contradiction and remove the priorities to keep the rules 100% declarative. We let the rules engine decide which rule should be executed next. Here is a produced report of my rewrite (PDF, XPS).
There are no disjoint rule graphs, no self contradictions within the rules, and no rule anomalies among rules. We do discover some incompleteness. E.g. is a Female of 24 years old eligible?
This incompleteness can be a misinterpretation of the use case specification, or an actual incompleteness in the specification. But with this rule report it's very easy to get these issues clarified.
Wednesday, July 04, 2007
WebCast on Advanced Scenarios of WFRules
Kavita (Microsoft) will give a presentation this Friday (7/6/2007) about some advanced scenarios using rules with Windows Workflow Foundation. During this presentation you will see screenshots of Acumen Business Rule Manager as an example of an advanced Business Rules solution!
The Rule Manager provides the additional functionality of Rule Authoring, Rule Repository Rule Verification & Validation. Only by empowering the business users with a complete business rules tool set, you will achieve a truly agile business policy that becomes transparent within your organization.
Here are the details of the Live Webcast:Event Name: Webcast: Introduction to Windows Workflow Foundation Rules - Part II
Start Date: 7/6/07
Start Time: 1:30 PM (GMT-05:00) Eastern Time (US & Canada)
End Time: 3:00 PM (GMT-05:00) Eastern Time (US & Canada)
Audio conferencing: +1 (866) 500-6738
Participant code: 7545634
Presenter code: 9070863
Click on this link for more information regarding this Webcast
Thursday, June 28, 2007
A Test suite for business rules
I mentioned in a previous posts that the rule validation in the interactive rule map (cause-effect graph between terms and rules) is part one of the rule validation.In the image on the right (click to zoom) you see the second part that is currently being developed. Test cases that are created in the interactive rule map can be saved to a test suite. A test suite (a collection of test cases for business rules) can be executed in a batch process.
For every test record we compare the user defined expected value with the rules engine computed value. Any discrepancies are flagged with a red info, and the test record would be marked red to indicate a failure. Green test records have all computed values equal to the business users defined expected values.
In the output terms you have to indicate which term you want to set as a goal for the rules engine. One test suite can process multiple goals. But every test record can only have one goal defined.
Similar to the meta information on a business rule, a test record contains the meta information of who the author is, when it was created, a description field etc.
You can imagine that among business users a difference of opinion might exists what the expected outcome value must be for a particular situation. We can not say what is right or wrong withing a rule policy, but we can show there is a difference.
Finally, the test suite can be used perfectly for regression testing your rule policy and can give a good impact analysis what happens when you modify your rule policy.
Monday, June 11, 2007
Microsoft XPS format
During a web demonstration of the Rule Manager I had to go for a full OS reboot. Not very pretty for a product demonstration. What happened? Not really sure, but it seems that the latest version of Adobe Acrobat (8.1.0) started to lock the generated Rule PDF report.Few days later I started to get the forced updates from Adobe. Considering I have many VM installations to test all different platforms and configurations, you can imagine I'm not too happy with these forced downloads.
Finally the free PDF viewer started to contain advertisement to FedEx. These 'convenient' link buttons are always a big annoyance to me.
It was time to provide an alternative to the PDF format. The latest release of the Rule Manager (1.5.0.17) supports now the Microsoft XPS as an alternative.
The good part of this is that an XPS viewer comes pre-installed on Microsoft Vista. I'm not really sure if it is part of .NET 3.0 framework, but on my XP SP2 box I could use the XPS viewer as well.
Currently the Adobe PDF format is still the default report format, but you can easily change that (and we will store your preferences in your user settings)
The main shortcoming I currently see with the XPS viewer is that you can not rotate a page.
Here are the results:
XPS: http://www.acumenbusiness.com/portals/Loan%20Mortgage%20Approval.xps
PDF: http://www.acumenbusiness.com/portals/Loan%20Mortgage%20Approval.pdf
Monday, June 04, 2007
Rule Manager 1.5.0.x is released
- Rule Validation; in the interactive rule map you can let the rules engine resolve any term.
This starts an animated goal seeking process. The default waiting time is 0.5 sec. You can change this in the debug options. - Panning and zooming of the interactive rule map.
- Creation of business rules and business terms are completely accessible during the trial period.
- Export your rule policy to Windows Workflow Foundation, and you see the rules executing on top of Microsoft's Forward chaining rules engine. By default the rule tracing is on. You can see the rule execution in the output console of Visual Studio.
New users can start the installation wizard that is available here.
xdg-open; vscode acts as default application for html
Opening html files stopped launching the browser, but launched the vscode application. > xdg-mime query default text/html code-url-h...
-
When exploring different rule base vendors, you probably encounter references to the RETE algorithm by Charles Forgy. This algorithm has pro...
-
The latest release of the Rule Manager allows to import external functions into the business vocabulary. As a little exercise I tried to get...
