<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7119233</id><updated>2024-10-04T19:07:15.951-07:00</updated><category term="Windows Workflow Foundation"/><category term="Rule Manager"/><category term="Rule Animation"/><category term="Rule Formats"/><category term="Rule Validation"/><category term="BizTalk"/><category term="Business Rules Forum"/><category term="Rule Conversion"/><category term="Rule Engine"/><category term="Rule Verification"/><category term="Decision Tree"/><category term="PDF format"/><category term="Ubuntu"/><category term="VSCode"/><category term="Video"/><category term="Windows10"/><category term="XPS format"/><category term="default application"/><title type='text'>BizKnowledge</title><subtitle type='html'>Thoughts on Business Rules</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default?alt=atom'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default?alt=atom&amp;start-index=26&amp;max-results=25'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>55</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7119233.post-6160613501680579046</id><published>2018-12-10T11:54:00.003-08:00</published><updated>2018-12-10T11:54:56.104-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="default application"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="VSCode"/><title type='text'>xdg-open; vscode acts as default application for html</title><content type='html'>Opening html files stopped launching the browser, but launched the vscode application.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;gt; xdg-mime query default text/html&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
code-url-handler.desktop&lt;/blockquote&gt;
&lt;br /&gt;
It turned out a new handler was configured&lt;br /&gt;
&lt;br /&gt;
check your ~/.config/mimeapps.list file&lt;br /&gt;
&lt;br /&gt;
The line&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
[Default Applications]&lt;br /&gt;text/html=code-url-handler.desktop&lt;/blockquote&gt;
&lt;br /&gt;
sends the text/html files to a handler that launches vscode.&lt;br /&gt;
&lt;br /&gt;
Just remove that line. And the xdg-open &amp;lt;&amp;gt;&amp;nbsp; will work again as expected&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/6160613501680579046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/6160613501680579046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/6160613501680579046'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/6160613501680579046'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2018/12/xdg-open-vscode-acts-as-default.html' title='xdg-open; vscode acts as default application for html'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-3633201124314796085</id><published>2017-12-07T09:55:00.002-08:00</published><updated>2017-12-07T09:55:58.408-08:00</updated><title type='text'>make files explained if you did not grew up with them</title><content type='html'>Here is a nice post on how to define makefiles for a go project and actually teaching you some makefile constructs:&lt;br /&gt;
&lt;br /&gt;
https://sahilm.com/makefiles-for-golang/</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/3633201124314796085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/3633201124314796085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/3633201124314796085'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/3633201124314796085'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2017/12/make-files-explained-if-you-did-not.html' title='make files explained if you did not grew up with them'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-8275062855383441642</id><published>2017-10-26T09:14:00.002-07:00</published><updated>2017-10-26T09:14:39.309-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Windows10"/><title type='text'>Removing &#39;uninstallable&#39; Packages from Windows10 </title><content type='html'>I assume you&#39;ll have to some admin skill knowledge.&lt;br /&gt;
So how do you install all these pre-installed windows apps that are on your new laptop?&lt;br /&gt;
&lt;br /&gt;
&#39;Add Remove&#39; programs only allows you to report a problem. Well the problem is that you want to uninstall it. So here is how you can do it:&lt;br /&gt;
&lt;br /&gt;
Open a &lt;b&gt;powershell in admin mode&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
You can search for packages with the command&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;gt; Get-AppxPackage | Where-Object {$_.Name -like &#39;*3D*&#39;}&lt;/blockquote&gt;
&lt;br /&gt;
And you get something like&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;br /&gt;
Name&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Microsoft.Microsoft3DViewer&lt;br /&gt;
Publisher&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US&lt;br /&gt;
Architecture&amp;nbsp; &amp;nbsp; &amp;nbsp; : X64&lt;br /&gt;
ResourceId&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&lt;br /&gt;
Version&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 2.1709.8012.0&lt;br /&gt;
PackageFullName&amp;nbsp; &amp;nbsp;: Microsoft.Microsoft3DViewer_2.1709.8012.0_x64__8wekyb3d8bbwe&lt;br /&gt;
InstallLocation&amp;nbsp; &amp;nbsp;: C:\Program Files\WindowsApps\Microsoft.Microsoft3DViewer_2.1709.8012.0_x64__8wekyb3d8bbwe&lt;br /&gt;
IsFramework&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: False&lt;br /&gt;
PackageFamilyName : Microsoft.Microsoft3DViewer_8wekyb3d8bbwe&lt;br /&gt;
PublisherId&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 8wekyb3d8bbwe&lt;br /&gt;
IsResourcePackage : False&lt;br /&gt;
IsBundle&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : False&lt;br /&gt;
IsDevelopmentMode : False&lt;br /&gt;
Dependencies&amp;nbsp; &amp;nbsp; &amp;nbsp; : {Microsoft.VCLibs.140.00.UWPDesktop_14.0.25426.0_x64__8wekyb3d8bbwe,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Microsoft.VCLibs.140.00_14.0.25426.0_x64__8wekyb3d8bbwe,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Microsoft.NET.Native.Framework.1.3_1.3.24201.0_x64__8wekyb3d8bbwe,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Microsoft.NET.Native.Runtime.1.4_1.4.24201.0_x64__8wekyb3d8bbwe}&lt;br /&gt;
IsPartiallyStaged : False&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Remove the 3D viewer &lt;/b&gt;(a.k.a. mixed reality)&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;br /&gt;
&amp;gt; Get-AppxPackage Microsoft.Microsoft3DViewer | Remove-AppxPackage&lt;/blockquote&gt;
&lt;br /&gt;
So it is just a matter of guessing the name of the package you want to install. But you get the idea.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Remove OneNote&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;gt;&amp;nbsp; Get-AppxPackage Microsoft.Office.OneNote | Remove-AppxPackage&lt;/blockquote&gt;
&lt;br /&gt;
&lt;b&gt;Remove XBox&lt;/b&gt; stuff&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;gt;&amp;nbsp;Get-AppxPackage Microsoft.XboxApp | Remove-AppxPackage&lt;br /&gt;
&amp;gt; Get-AppxPackage Microsoft.XboxSpeechToTextOverlay | Remove-AppxPackage&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/8275062855383441642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/8275062855383441642' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/8275062855383441642'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/8275062855383441642'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2017/10/removing-uninstallable-packages-from.html' title='Removing &#39;uninstallable&#39; Packages from Windows10 '/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-2679587582106154627</id><published>2017-01-19T08:48:00.001-08:00</published><updated>2017-01-19T08:48:36.207-08:00</updated><title type='text'>Notes on GSM USB dongles on linux. </title><content type='html'>&lt;h2&gt;
Analyzing Huawei GSM dongles&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the last few months I&#39;ve been writing drivers for Huawei GSM dongles. In particular to be used in combination with the Android RIL (Radio Interface Layer). In general Android runs on top of a Linux Kernel. The drivers that ships with GSM dongles typically works with Windows software. So we often have to do some reverse engineering.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
Here are my notes:&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
My target environment is a Linux Kernel 2.6.... &amp;nbsp;My first step is to see if it works with the Windows software. Does the dongle pick up a signal. Can it register to a network. etc.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
Next step, setup a connection by providing the relevant APN, username and password.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Huawei dongles typically ships with variations of Mobinil software. There is an option to use different connection type. RAS (modem) or NDIS&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left; margin-right: 1em; text-align: left;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0xxCHR5v1QUxaeelnZoWINbpPY0E3i0gpQP8Bif2O5uy5ioQ2MdOrrTatASfx8hLuodvRh1Q38ClbdJPSKbOBYWc8kuJeImhDHPnsoCo67HdNJCeEOtCQ3Zn2hFEM26NZ2LTn/s1600/5-10-2013+8-54-54+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;268&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0xxCHR5v1QUxaeelnZoWINbpPY0E3i0gpQP8Bif2O5uy5ioQ2MdOrrTatASfx8hLuodvRh1Q38ClbdJPSKbOBYWc8kuJeImhDHPnsoCo67HdNJCeEOtCQ3Zn2hFEM26NZ2LTn/s320/5-10-2013+8-54-54+AM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Selecting RAS (modem) mode&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
When you select the RAS (modem) we can use a tool like USBlyzer to inspect the AT commands that are used to register the the GSM dongle to the network.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
There are generic AT commands but &amp;nbsp;also vendor specific AT commands.&lt;br /&gt;
&lt;br /&gt;
... to be continued.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Linux&amp;nbsp;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
When switching to Linux the first challenge you might run into is that the device nodes are not created. Typically their modem software is included inside the GSM dongle and will be installed by telling the OS that it is a mass storage device, or tells the OS is behaves as a CD-rom. And it launches the install software.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In order to stop fooling the OS, we can use a tool USBMode_switch. The site has good forum discussions and a lot of hints to get your specific vendor dongle recognized. Most linux distros have a very recent version installed. What you might notice is that the product id from the GSM dongle is changing.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
You can see this when you call &#39;lsusb&#39; and do this a couple of times (every 5 sec) while putting in the GSM dongle.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
You will see the USB being recognized by linux. It disappears briefly and reappears with a different product id. &amp;nbsp;You can see with &#39;dmesg&#39; that new device nodes are being created. If that is not the case you first have to go over this hump.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
AT commands&amp;nbsp;&lt;/h3&gt;
AT+CLAC will reveal most (not all) supported commands for the stick&lt;br /&gt;
There are different options to send the commands and monitory the result.&lt;br /&gt;
&lt;br /&gt;
I&#39;ve used putty on linux and start a serial connection type. (the /dev/ttyUSB3 is just an example.)&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZNKs1HP1OyUrDWX-eqgtnEA3dKLe5v-V9zLx3dTVCYHQ0YuQt506KKgxEe9IN6Vl2Rcy09jslZi8w8WFqypCGwVE5eB-No9UOemyfpz3Dz_7zOwtXA36EorPKHniYy6zWTOcV/s1600/7-22-2013+5-44-48+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;302&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZNKs1HP1OyUrDWX-eqgtnEA3dKLe5v-V9zLx3dTVCYHQ0YuQt506KKgxEe9IN6Vl2Rcy09jslZi8w8WFqypCGwVE5eB-No9UOemyfpz3Dz_7zOwtXA36EorPKHniYy6zWTOcV/s320/7-22-2013+5-44-48+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
A bit more primitive but still working is to open to shell sessions.&lt;br /&gt;
Monitor the output in one session:&lt;br /&gt;
&lt;br /&gt;
cat /dev/ttyUSB1&lt;br /&gt;
&lt;br /&gt;
And in another terminal session, send the at commands.:&lt;br /&gt;
&lt;br /&gt;
echo &quot;AT^SETPORT=?&quot; &amp;gt; /dev/ttyUSB1&lt;br /&gt;
&lt;br /&gt;
The question is to find out which node you can use. And I&#39;ve only come to a trial and error mode.&lt;br /&gt;
I quickly try the commands &lt;br /&gt;
cat /dev/ttyUSB1&lt;br /&gt;
cat /dev/ttyUSB2&lt;br /&gt;
cat /dev/ttyUSB3&lt;br /&gt;
cat /dev/ttyUSB4&lt;br /&gt;
...&lt;br /&gt;
To find out on which node I can communication. You will often see some AT^BOOT messages, ^RSSI, ^CSNR, ^MODE messages &amp;nbsp;passing by. They are rather an annoyance when you use putty. So the first commands I use during a putty session is to &lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;turn off the boot messages with &amp;nbsp;AT^BOOT=0,0&lt;/li&gt;
&lt;li&gt;turn off RSSI reporting with&amp;nbsp;AT^CURC=0&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
The output of the AT^SETPORT=?&quot; will give you a list of the different &#39;ports&#39;.&lt;br /&gt;
&lt;br /&gt;
output::&lt;br /&gt;
1:MODEM&lt;br /&gt;
2:PCUI&lt;br /&gt;
3:DIAG&lt;br /&gt;
4:PCSC&lt;br /&gt;
5:GPS&lt;br /&gt;
6:GPS CONTROL&lt;br /&gt;
7:NDIS&lt;br /&gt;
A:BLUE TOOTH&lt;br /&gt;
B:FINGER PRINT&lt;br /&gt;
D:MMS&lt;br /&gt;
E:PC VOICE&lt;br /&gt;
A1:CDROM&lt;br /&gt;
A2:SD&lt;br /&gt;
&lt;br /&gt;
You can enable /disable these &#39;ports&#39; by enumerating them in the AT^SETPORT=&quot;A1,A2;1,2&quot;&lt;br /&gt;
This would enable modem and pcui on ttyUSB0 and ttyUSB1.&lt;br /&gt;
&lt;br /&gt;
If you change the order AT^SETPORT=&quot;A1,A2;2,1&quot;&lt;br /&gt;
The modem and pcui will be on ttyUSB1 and ttyUSB0.&lt;br /&gt;
&lt;br /&gt;
I&#39;m not sure how to reset a dongle to factory setting to restore the port mode. But you can imagine, you have to be carefull with these AT commands. If you disable the Application interface (PCUI) I would not know of a mechanism to undo you changes (maybe via the NDIS interface?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo -e &quot;AT^GETPORTMODE&quot; &amp;gt; /dev/ttyUSB1&lt;br /&gt;
&lt;br /&gt;
output:: /&lt;br /&gt;
^getportmode:type:WCDMA:Qualcomm,MDM:0,NDIS:1,DIAG:2,PCUI:3&lt;br /&gt;
&lt;br /&gt;
(suggesting it was 1,7,3,2)&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
# echo -e &quot;AT^SETPORT=\&quot;A1,A2;1,2\&quot;&quot; &amp;gt; /dev/ttyUSB1&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
plug in and out the dongle.&lt;/div&gt;
&lt;div&gt;
ls /dev/ttyU*&lt;/div&gt;
&lt;div&gt;
/dev/ttyUSB0 &amp;nbsp;/dev/ttyUSB1&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
# echo &quot;AT^GETPORTMODE&quot; &amp;gt; /dev/ttyUSB1&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
^getportmode:type:WCDMA:Qualcomm,MDM:0,PCUI:1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
E353 specific&lt;/h4&gt;
&lt;br /&gt;
&lt;b&gt;TIGO dongle:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
echo &quot;AT^SYSCFG=?&quot; &amp;gt; /dev/ttyUSB1&lt;br /&gt;
^SYSCFG:(2,13,14,16),(0-3),((400380,&quot;GSM900/GSM1800/WCDMA2100&quot;),(4a80000,&quot;GSM850/GSM1900/WCDMA850/WCDMA1900&quot;),(3fffffff,&quot;All Bands&quot;)),(0-2),(0-4)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Probably default is&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
echo -e &quot;AT^SETPORT=\&quot;A1,A2;1,7,3,2,A1\&quot;&quot; &amp;gt; /dev/ttyUSB1&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;3 Dongle:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
echo &quot;AT^GETPORTMODE&quot; &amp;gt; /dev/ttyUSB4&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
^getportmode:type:WCDMA:Qualcomm,MDM:0,NDIS:1,DIAG:2,PCUI:3,CDROM:&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&quot;AT^SYSCFG=?&quot; &amp;gt; /dev/ttyUSB4&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
^SYSCFG:(2,13,14,16),(0-3),((400000,&quot;WCDMA2100&quot;)),(0-2),(0-4)&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/2679587582106154627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/2679587582106154627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/2679587582106154627'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/2679587582106154627'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2017/01/notes-on-gsm-usb-dongles-on-linux.html' title='Notes on GSM USB dongles on linux. '/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0xxCHR5v1QUxaeelnZoWINbpPY0E3i0gpQP8Bif2O5uy5ioQ2MdOrrTatASfx8hLuodvRh1Q38ClbdJPSKbOBYWc8kuJeImhDHPnsoCo67HdNJCeEOtCQ3Zn2hFEM26NZ2LTn/s72-c/5-10-2013+8-54-54+AM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-2548689360013320540</id><published>2011-11-10T10:32:00.000-08:00</published><updated>2011-11-10T10:32:33.663-08:00</updated><title type='text'>Watin =&gt; Selenium ?</title><content type='html'>I&#39;ve been using &lt;a href=&quot;http://watin.org/&quot;&gt;Watin &lt;/a&gt;for quite some browser automation projects. But it seems that Watin is a bit dead in the water. No Chrome support. No Firefox 4 or higher support.&amp;nbsp;It also seems to be an heroic effort of a few people.&lt;br /&gt;
&lt;br /&gt;
So it might be time to move over to &lt;a href=&quot;http://seleniumhq.org/projects/&quot;&gt;Selenium&lt;/a&gt;. Active development, wide browser support...</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/2548689360013320540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/2548689360013320540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/2548689360013320540'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/2548689360013320540'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2011/11/watin-selenium.html' title='Watin =&gt; Selenium ?'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-7320200977299136907</id><published>2010-09-26T13:33:00.000-07:00</published><updated>2010-09-27T19:04:33.396-07:00</updated><title type='text'>Mercurial branching</title><content type='html'>&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;It takes time to get used to a new source control management system, but Mercurial HG visualization sure helps.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;Branching default branch to 1.5.1 release and 1.6.1 release. Look at these rail tracks:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiL40srlpBNqKAY3aHlYNd9Ed_Hba-qDMtPvUmZhz5VpVMBezNmEvgzIF17UG_PJ_gJ7zF-ZPLBu6sxGK96fF1R1ThXiJUwt8BcnMBeECJlX_8HEoKBrTMzOhLN9tvGizZe2BD/s1600/9-26-2010+1-19-48+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;313&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiL40srlpBNqKAY3aHlYNd9Ed_Hba-qDMtPvUmZhz5VpVMBezNmEvgzIF17UG_PJ_gJ7zF-ZPLBu6sxGK96fF1R1ThXiJUwt8BcnMBeECJlX_8HEoKBrTMzOhLN9tvGizZe2BD/s640/9-26-2010+1-19-48+PM.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
I&#39;m build the 1.5.1 release and the 1.6.1 release from two different VM&#39;s. Just to keep everything&amp;nbsp;separated.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;lt;target name=&quot;refresh&quot; depends=&quot;clean-test&quot; description=&quot;Update the source from Mercurial&quot;&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!-- create the source directory if needed --&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;lt;mkdir dir=&quot;${source.dir}&quot; failonerror=&quot;true&quot; unless=&quot;${directory::exists(&#39;source.dir&#39;)}&quot; /&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;lt;mkdir dir=&quot;${drop.dir}&quot; failonerror=&quot;true&quot; unless=&quot;${directory::exists(&#39;drop.dir&#39;)}&quot; /&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;lt;exec program=&quot;hg&quot; commandline=&#39;pull -u ${repository.mercurial.rulemanager} -R ${source.dir} -v --branch 1.5.1&#39; &amp;nbsp;failonerror=&quot;false&quot; &amp;nbsp;verbose=&quot;${verbose}&quot;/&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/target&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/7320200977299136907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/7320200977299136907' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/7320200977299136907'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/7320200977299136907'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2010/09/mercurial-branching.html' title='Mercurial branching'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiL40srlpBNqKAY3aHlYNd9Ed_Hba-qDMtPvUmZhz5VpVMBezNmEvgzIF17UG_PJ_gJ7zF-ZPLBu6sxGK96fF1R1ThXiJUwt8BcnMBeECJlX_8HEoKBrTMzOhLN9tvGizZe2BD/s72-c/9-26-2010+1-19-48+PM.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-180550105357866814</id><published>2008-04-25T10:23:00.000-07:00</published><updated>2008-04-25T10:37:12.273-07:00</updated><title type='text'>External function calls</title><content type='html'>The latest release of the Rule Manager allows to import external functions into the business vocabulary. As a little exercise I tried to get the current weather condition for a zipcode (maybe I can write some rules if I should bring my umbrella while I leave my house in L.A.)&lt;br /&gt;&lt;br /&gt;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&#39;m interested in:&lt;br /&gt;&lt;br /&gt;Here is the code (note the FunctionAttribute decoration on the method)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;&quot;   &gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;    1&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;using&lt;/span&gt; System.IO;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;    2&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;using&lt;/span&gt; System.Net;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;    3&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;using&lt;/span&gt; System.Xml;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;    4&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;using&lt;/span&gt; AcumenBusiness.IModel;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;    5&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;using&lt;/span&gt; &lt;span style=&quot;color:#2b91af;&quot;&gt;Type&lt;/span&gt;=AcumenBusiness.IModel.&lt;span style=&quot;color:#2b91af;&quot;&gt;Type&lt;/span&gt;;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;    6&lt;/span&gt; &lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;    7&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;namespace&lt;/span&gt; TestCallWebService&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;    8&lt;/span&gt; {&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;    9&lt;/span&gt;     [&lt;span style=&quot;color:#2b91af;&quot;&gt;Concept&lt;/span&gt;(&lt;span style=&quot;color:#a31515;&quot;&gt;&quot;Weather info&quot;&lt;/span&gt;, &lt;span style=&quot;color:#a31515;&quot;&gt;&quot;Try to get weather forecast from different services&quot;&lt;/span&gt;)]&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   10&lt;/span&gt;     &lt;span style=&quot;color:blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color:#2b91af;&quot;&gt;WeatherInfoProvider&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   11&lt;/span&gt;     {&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   12&lt;/span&gt;         &lt;span style=&quot;color:blue;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;readonly&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;string&lt;/span&gt; YahooWeatherURLFormat = &lt;span style=&quot;color:#a31515;&quot;&gt;&quot;http://weather.yahooapis.com/forecastrss?p={0}&quot;&lt;/span&gt;;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   13&lt;/span&gt; &lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   14&lt;/span&gt;         [&lt;span style=&quot;color:#2b91af;&quot;&gt;Term&lt;/span&gt;(&lt;span style=&quot;color:#a31515;&quot;&gt;&quot;workaround&quot;&lt;/span&gt;, &lt;span style=&quot;color:#a31515;&quot;&gt;&quot;import function requires one field. (bug)&quot;&lt;/span&gt;)]&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   15&lt;/span&gt;         &lt;span style=&quot;color:blue;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;string&lt;/span&gt; dummyField;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   16&lt;/span&gt;         &lt;span style=&quot;color:blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;string&lt;/span&gt; DummyField&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   17&lt;/span&gt;         {&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   18&lt;/span&gt;             &lt;span style=&quot;color:blue;&quot;&gt;get&lt;/span&gt; { &lt;span style=&quot;color:blue;&quot;&gt;return&lt;/span&gt; dummyField; }&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   19&lt;/span&gt;             &lt;span style=&quot;color:blue;&quot;&gt;set&lt;/span&gt; { dummyField = &lt;span style=&quot;color:blue;&quot;&gt;value&lt;/span&gt;; }&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   20&lt;/span&gt;         }&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   21&lt;/span&gt; &lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   22&lt;/span&gt;         [&lt;span style=&quot;color:#2b91af;&quot;&gt;Function&lt;/span&gt;(&lt;span style=&quot;color:#a31515;&quot;&gt;&quot;Get temperature&quot;&lt;/span&gt;, &lt;span style=&quot;color:#a31515;&quot;&gt;&quot;Get the weather info from Yahoo&quot;&lt;/span&gt;,&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   23&lt;/span&gt;             ReturnType = &lt;span style=&quot;color:#2b91af;&quot;&gt;Type&lt;/span&gt;.text,&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   24&lt;/span&gt;             ArgumentTypes = &lt;span style=&quot;color:blue;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color:#2b91af;&quot;&gt;Type&lt;/span&gt;[] { &lt;span style=&quot;color:#2b91af;&quot;&gt;Type&lt;/span&gt;.integer })]&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   25&lt;/span&gt;         &lt;span style=&quot;color:blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;string&lt;/span&gt; GetWeatherInfoAsFeed(&lt;span style=&quot;color:blue;&quot;&gt;int&lt;/span&gt; zipCode)&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   26&lt;/span&gt;         {&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   27&lt;/span&gt;             &lt;span style=&quot;color:#2b91af;&quot;&gt;HttpWebRequest&lt;/span&gt; request = (&lt;span style=&quot;color:#2b91af;&quot;&gt;HttpWebRequest&lt;/span&gt;) &lt;span style=&quot;color:#2b91af;&quot;&gt;WebRequest&lt;/span&gt;.Create(&lt;span style=&quot;color:blue;&quot;&gt;string&lt;/span&gt;.Format(YahooWeatherURLFormat, zipCode));&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   28&lt;/span&gt;             &lt;span style=&quot;color:green;&quot;&gt;// execute the request&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   29&lt;/span&gt;             &lt;span style=&quot;color:#2b91af;&quot;&gt;HttpWebResponse&lt;/span&gt; response = (&lt;span style=&quot;color:#2b91af;&quot;&gt;HttpWebResponse&lt;/span&gt;) request.GetResponse();&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   30&lt;/span&gt; &lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   31&lt;/span&gt;             &lt;span style=&quot;color:green;&quot;&gt;// we will read data via the response stream&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   32&lt;/span&gt;             &lt;span style=&quot;color:#2b91af;&quot;&gt;Stream&lt;/span&gt; resStream = response.GetResponseStream();&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   33&lt;/span&gt;             &lt;span style=&quot;color:#2b91af;&quot;&gt;XmlDocument&lt;/span&gt; rssFeed = &lt;span style=&quot;color:blue;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color:#2b91af;&quot;&gt;XmlDocument&lt;/span&gt;();&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   34&lt;/span&gt;             rssFeed.Load(resStream);&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   35&lt;/span&gt; &lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   36&lt;/span&gt;             &lt;span style=&quot;color:green;&quot;&gt;//set an XmlNamespaceManager since we have to make explicit namespace searches&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   37&lt;/span&gt;             &lt;span style=&quot;color:#2b91af;&quot;&gt;XmlNamespaceManager&lt;/span&gt; xmlnsManager = &lt;span style=&quot;color:blue;&quot;&gt;new&lt;/span&gt; System.Xml.&lt;span style=&quot;color:#2b91af;&quot;&gt;XmlNamespaceManager&lt;/span&gt;(rssFeed.NameTable);&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   38&lt;/span&gt;             &lt;span style=&quot;color:green;&quot;&gt;//Add the namespaces used in the xml doc to the XmlNamespaceManager.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   39&lt;/span&gt;             xmlnsManager.AddNamespace(&lt;span style=&quot;color:#a31515;&quot;&gt;&quot;yweather&quot;&lt;/span&gt;, &lt;span style=&quot;color:#a31515;&quot;&gt;&quot;http://xml.weather.yahoo.com/ns/rss/1.0&quot;&lt;/span&gt;);&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   40&lt;/span&gt; &lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   41&lt;/span&gt;             &lt;span style=&quot;color:#2b91af;&quot;&gt;XmlNode&lt;/span&gt; weatherCondition = rssFeed.SelectSingleNode(&lt;span style=&quot;color:#a31515;&quot;&gt;&quot;/rss/channel/item/yweather:condition/@temp&quot;&lt;/span&gt;, xmlnsManager);&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   42&lt;/span&gt;             &lt;span style=&quot;color:blue;&quot;&gt;if&lt;/span&gt; (weatherCondition != &lt;span style=&quot;color:blue;&quot;&gt;null&lt;/span&gt;) {&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   43&lt;/span&gt;                 &lt;span style=&quot;color:blue;&quot;&gt;return&lt;/span&gt; weatherCondition.Value;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   44&lt;/span&gt;             }&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   45&lt;/span&gt;             &lt;span style=&quot;color:blue;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color:blue;&quot;&gt;null&lt;/span&gt;;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   46&lt;/span&gt;         }&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   47&lt;/span&gt;     }&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;span style=&quot;color:#2b91af;&quot;&gt;   48&lt;/span&gt; }&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;Nice weather to jump on the bike and cycle to work...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC-lErkgKK1Ap23srbDfEy4VSyqFw0fHmT2w1wFBLN5uNGeSCbOLYHinyh1EHoVqJSfo-WggM-RgBmX-k2Qic_AFR1dOseSlYuwybApihaZgwZc5llnNc0cPdlKEPYktnJdThw/s1600-h/ExternalFunctionCall.png&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5193235108253016930&quot; style=&quot;CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC-lErkgKK1Ap23srbDfEy4VSyqFw0fHmT2w1wFBLN5uNGeSCbOLYHinyh1EHoVqJSfo-WggM-RgBmX-k2Qic_AFR1dOseSlYuwybApihaZgwZc5llnNc0cPdlKEPYktnJdThw/s400/ExternalFunctionCall.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New&quot;&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/180550105357866814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/180550105357866814' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/180550105357866814'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/180550105357866814'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2008/04/external-function-calls.html' title='External function calls'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC-lErkgKK1Ap23srbDfEy4VSyqFw0fHmT2w1wFBLN5uNGeSCbOLYHinyh1EHoVqJSfo-WggM-RgBmX-k2Qic_AFR1dOseSlYuwybApihaZgwZc5llnNc0cPdlKEPYktnJdThw/s72-c/ExternalFunctionCall.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-8418866342576300963</id><published>2008-01-10T21:36:00.000-08:00</published><updated>2008-01-10T21:36:15.841-08:00</updated><title type='text'>.NET SOA BizTalk: BizTalk Tools and guidelines</title><content type='html'>Kishore Dharanikota has created a nice list of tools and guidelines for BizTalk developers and designers &lt;a href=&quot;http://kishored.blogspot.com/2007/08/biztalk-tools-and-guidelines.html&quot;&gt;.NET SOA BizTalk: BizTalk Tools and guidelines&lt;/a&gt;. The Rule Manager is mentioned in the Development category. Interesting to see this classification. I probably would have placed it in the Design category. But that all depends on your frame of reference. Or it might hint that many BizTalk developers are playing a dual role of business analyst and developer.</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/8418866342576300963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/8418866342576300963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/8418866342576300963'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/8418866342576300963'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2008/01/net-soa-biztalk-biztalk-tools-and.html' title='.NET SOA BizTalk: BizTalk Tools and guidelines'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-1663849093618997848</id><published>2007-10-30T21:32:00.000-07:00</published><updated>2007-10-30T21:42:11.073-07:00</updated><title type='text'>RenewCert - Renew Expired Certificates</title><content type='html'>It&#39;s been just over a year when I deployed the RuleManager with a ClickOnce certificate. Today it expired. Visual Studio 2005 would suggest to generate a new certificate file, however none of the existing users would be able to update the Application (because of different certificate keys).&lt;br /&gt;The error you would get is:&lt;br /&gt;&lt;div id=&quot;mycode&quot;&gt;&lt;code&gt;&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;System.NullReferenceException: Object reference not set to an instance of an object.&lt;br /&gt;at System.Deployment.Application.ApplicationTrust.RequestTrust(SubscriptionState subState, Boolean isShellVisible, Boolean isUpdate, ActivationContext actCtx, TrustManagerContext tmc)&lt;br /&gt;at System.Deployment.Application.DeploymentManager.DetermineTrustCore(Boolean blocking, TrustParams tp)&lt;br /&gt;at System.Deployment.Application.DeploymentManager.DetermineTrust(TrustParams trustParams)&lt;br /&gt;at System.Deployment.Application.ApplicationDeployment.CheckForDetailedUpdate()&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There is a workaround made by Cliff Stanford &lt;a href=&quot;http://www.may.be/renewcert/&quot;&gt;RenewCert&lt;/a&gt;, which allows you to regenerate an expired certification.&lt;br /&gt;&lt;br /&gt;Thanks Cliff!</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/1663849093618997848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/1663849093618997848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/1663849093618997848'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/1663849093618997848'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/10/renewcert-renew-expired-certificates.html' title='RenewCert - Renew Expired Certificates'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-3312432499876275637</id><published>2007-10-14T14:31:00.000-07:00</published><updated>2007-11-02T10:14:48.078-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Rule Conversion"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Formats"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Manager"/><title type='text'>Graphical Rule Editor for RuleML format</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj7EM6C97mM2wHKBztSE-0nCjvhqiFESMokkYNKniEdakRXn3P3Od9spG-OTAdPsPeMXKk1aBuSqTwsAM_RnNLlMFrXJbhze8nxEpdPWazwut4LXo7Fa4hfxUq1gUlsnX762Jg/s1600-h/RuleML.jpg&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_&quot; style=&quot;CLEAR: both; FLOAT: right; MARGIN: 0px 0px 10px 10px&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj7EM6C97mM2wHKBztSE-0nCjvhqiFESMokkYNKniEdakRXn3P3Od9spG-OTAdPsPeMXKk1aBuSqTwsAM_RnNLlMFrXJbhze8nxEpdPWazwut4LXo7Fa4hfxUq1gUlsnX762Jg/s320/RuleML.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;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 &lt;a href=&quot;http://ibis.in.tum.de/research/ReactionRuleML/0.2/index.htm&quot;&gt;Reaction RuleML format&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;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 &lt;a href=&quot;http://www.acumenbusiness.com/support&quot;&gt;http://www.acumenbusiness.com/support&lt;/a&gt; forum.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Installation:&lt;/em&gt;&lt;br /&gt;The Rule Manager product is available from the website &lt;a href=&quot;http://www.acumenbusiness.com/&quot;&gt;http://www.acumenbusiness.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can export to the RuleML format by installing the RuleML adapter module. See the screenshot [Menu: File\Options\Adapters\Rule ML]&lt;br /&gt;&lt;br /&gt;The adapter will provide the new export format &quot;RuleML (*.rrml)&quot; in the Export wizard. [Menu: File\Export]&lt;br /&gt;You can set .rrml as the default export type by changing the File Export type on the Import &amp;amp; Export options&lt;br /&gt;[Menu: File\Options\Import &amp;amp; Export\File Export = RuleML (*.rrml)]&lt;br /&gt;&lt;br /&gt;An example of the &lt;a href=&quot;http://www.acumenbusiness.com/portals/ProductDerbyCaseStudy/AcumenDriverEligibility.pdf&quot;&gt;Driver Eligibility&lt;/a&gt; export is &lt;a href=&quot;http://www.acumenbusiness.com/portals/ProductDerbyCaseStudy/DriverEligibility.rrml&quot;&gt;here &lt;/a&gt;&lt;div style=&quot;CLEAR: both; TEXT-ALIGN: right&quot;&gt;&lt;a href=&quot;http://picasa.google.com/blogger/&quot; target=&quot;ext&quot;&gt;&lt;img style=&quot;BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: 0px; BACKGROUND: 0% 50%; PADDING-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial&quot; alt=&quot;Posted by Picasa&quot; src=&quot;http://photos1.blogger.com/pbp.gif&quot; align=&quot;middle&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/3312432499876275637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/3312432499876275637' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/3312432499876275637'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/3312432499876275637'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/10/graphical-rule-editor-for-ruleml-format.html' title='Graphical Rule Editor for RuleML format'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj7EM6C97mM2wHKBztSE-0nCjvhqiFESMokkYNKniEdakRXn3P3Od9spG-OTAdPsPeMXKk1aBuSqTwsAM_RnNLlMFrXJbhze8nxEpdPWazwut4LXo7Fa4hfxUq1gUlsnX762Jg/s72-c/RuleML.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-4623645304238003610</id><published>2007-08-08T09:39:00.000-07:00</published><updated>2007-08-08T09:39:25.298-07:00</updated><title type='text'>Paul Andrew : What to use Windows Workflow Foundation for?</title><content type='html'>Paul Andrew has a nice write up on &lt;a href=&quot;http://blogs.msdn.com/pandrew/archive/2007/02/01/what-to-use-windows-workflow-foundation-for.aspx&quot;&gt;why you would use Windows Workflow Foundation&lt;/a&gt;. There are some excellent arguments for the use of the rules component: the visibility into the business logic  and the ability to change this business logic.&lt;br /&gt;&lt;br /&gt;That is exactly the reason why I&#39;m currently designing a Windows Workflow Foundation architecture for a very large client. Performance will become critical...</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/4623645304238003610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/4623645304238003610' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/4623645304238003610'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/4623645304238003610'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/08/paul-andrew-what-to-use-windows.html' title='Paul Andrew : What to use Windows Workflow Foundation for?'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-3859681987529458349</id><published>2007-07-18T15:40:00.000-07:00</published><updated>2007-07-21T11:13:45.962-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Business Rules Forum"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Verification"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Workflow Foundation"/><title type='text'>Rule Vendors - Product Derby</title><content type='html'>Once a year, during the &lt;a href=&quot;http://www.businessrulesforum.com/&quot;&gt;business rules symposium&lt;/a&gt;, vendors of rule engines can show how they implement a general use case that contains many business rules. This use case is known as the UServ Product Derby. You can read the specifications &lt;a href=&quot;http://www.businessrulesforum.com/2005_Product_Derby.pdf&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;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&#39;ve been examining the implementation from Microsoft with WF rules.&lt;br /&gt;&lt;br /&gt;Microsoft&#39;s example (download &lt;a href=&quot;http://wf.netfx3.com/files/folders/rules_samples/entry10377.aspx&quot;&gt;here&lt;/a&gt;) illustrates the &lt;em&gt;technical feasibility &lt;/em&gt;of using WF rules. Although this example shows that it&#39;s technical possible, it does not highlight the business rules management, rule audit trail and rule traceability.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;We start this blog series with a closer look at the &#39;Driver&#39;s Eligibility&#39; policy as defined in the &lt;a href=&quot;http://www.businessrulesforum.com/2005_Product_Derby.pdf&quot;&gt;use case&lt;/a&gt;. After a few adjustments on the Rule Manager, I produced this report (&lt;a href=&quot;http://www.acumenbusiness.com/portals/productderbycasestudy/MicrosoftDriverEligibility.pdf&quot;&gt;PDF&lt;/a&gt;, &lt;a href=&quot;http://www.acumenbusiness.com/portals/productderbycasestudy/MicrosoftDriverEligibility.xps&quot;&gt;XPS&lt;/a&gt;) from Microsoft&#39;s example implementation.&lt;br /&gt;&lt;br /&gt;The part that got my attention right away was the discovered contradiction.&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj41VBEit98Ym2t0aPAVaN5zihfOdVvkq-OiKWS4vzJ0hAft1RkCBzlf_WppSKhrkp7vs3jtZLJiOAxib1x2gfKAyDV98a68JF-Yxgr-GhBmkbH0HDGu0QHhJH3LyiHbb2JnSS2/s1600-h/MicrosoftContradiction.png&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5088676952140333314&quot; title=&quot;Automatic discovered rule contradiction with the Rule Manager&quot; style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj41VBEit98Ym2t0aPAVaN5zihfOdVvkq-OiKWS4vzJ0hAft1RkCBzlf_WppSKhrkp7vs3jtZLJiOAxib1x2gfKAyDV98a68JF-Yxgr-GhBmkbH0HDGu0QHhJH3LyiHbb2JnSS2/s320/MicrosoftContradiction.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; On first look, the rule DA_7 is rather complicated. It is a typical programmer&#39;s construction to use a &lt;em&gt;not (expr and &lt;operator&gt;expr)&lt;/em&gt;&lt;br /&gt;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 &lt;a href=&quot;http://en.wikipedia.org/wiki/De_Morgan%27s_laws&quot;&gt;De Morgan&#39;s law&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Just keep it simple stupid. Where possible,&lt;strong&gt; avoid negated nested expressions and split or-statements in multiple rules.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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 &#39;Senior&#39; to the Driver class, and consecutively overwrites this value with &#39;Typical Driver&#39;.  Now we also have to make sure that rule &#39;DA_3&#39; 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.&lt;br /&gt;&lt;br /&gt;A second problem related to the priority and overwriting conclusions is that a rule audit report would show incorrect results. So please &lt;strong&gt;use rule priorities careful. &lt;/strong&gt;We will show below that the Driver Eligibility policy actually don&#39;t require priorities.&lt;br /&gt;&lt;br /&gt;Finally, the generated rule graph shows two disjoint rule networks. We have to wonder what happened with the rules that determine the &#39;Training Certification&#39;. 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.&lt;br /&gt;&lt;br /&gt;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...)&lt;br /&gt;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 (&lt;a href=&quot;http://www.acumenbusiness.com/portals/productderbycasestudy/AcumenDriverEligibility.pdf&quot;&gt;PDF&lt;/a&gt;, &lt;a href=&quot;http://www.acumenbusiness.com/portals/productderbycasestudy/AcumenDriverEligibility.xps&quot;&gt;XPS&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;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?&lt;br /&gt;This incompleteness can be a misinterpretation of the use case specification, or an actual incompleteness in the specification. But with this rule report it&#39;s very easy to get these issues clarified.</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/3859681987529458349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/3859681987529458349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/3859681987529458349'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/3859681987529458349'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/07/rule-vendors-product-derby.html' title='Rule Vendors - Product Derby'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj41VBEit98Ym2t0aPAVaN5zihfOdVvkq-OiKWS4vzJ0hAft1RkCBzlf_WppSKhrkp7vs3jtZLJiOAxib1x2gfKAyDV98a68JF-Yxgr-GhBmkbH0HDGu0QHhJH3LyiHbb2JnSS2/s72-c/MicrosoftContradiction.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-1796391920975723334</id><published>2007-07-04T11:54:00.000-07:00</published><updated>2007-07-04T12:23:18.073-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Rule Manager"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Workflow Foundation"/><title type='text'>WebCast on Advanced Scenarios of WFRules</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7lN1OdlBoB77jGo7ZYJrU4gOs-bGOaHT136VS1C40BM8RYwhoMVRTOaO2l1NCkwsbtDOTcYh6ehIdq7B8S5OOqOZMFrt-al4UKbbzmwj22JpdFvJLlWzEJ-AaliwtkDZ3jgwn/s1600-h/RuleManagerAddToRuleRepository3.png&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5083419275054542786&quot; style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7lN1OdlBoB77jGo7ZYJrU4gOs-bGOaHT136VS1C40BM8RYwhoMVRTOaO2l1NCkwsbtDOTcYh6ehIdq7B8S5OOqOZMFrt-al4UKbbzmwj22JpdFvJLlWzEJ-AaliwtkDZ3jgwn/s320/RuleManagerAddToRuleRepository3.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://blogs.msdn.com/kavitak/default.aspx&quot;&gt;Kavita &lt;/a&gt;(Microsoft) will give a presentation this Friday (7/6/2007) about some advanced scenarios using rules with Windows Workflow Foundation. &lt;p&gt;During this presentation you will see screenshots of Acumen Business &lt;a href=&quot;http://www.acumenbusiness.com/Products.htm&quot;&gt;Rule Manager &lt;/a&gt;as an example of an advanced Business Rules solution! &lt;/p&gt;&lt;p&gt;The Rule Manager provides the additional functionality of Rule Authoring, Rule Repository Rule Verification &amp; 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. &lt;/p&gt;Here are the details of the Live Webcast:&lt;br /&gt;&lt;br /&gt;Event Name: Webcast: Introduction to Windows Workflow Foundation Rules - Part II&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Start Date: 7/6/07&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Start Time: 1:30 PM (GMT-05:00) Eastern Time (US &amp;amp; Canada)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;End Time: 3:00 PM (GMT-05:00) Eastern Time (US &amp; Canada) &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Audio conferencing: +1 (866) 500-6738&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Participant code: 7545634&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Presenter code: 9070863&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Click on &lt;a href=&quot;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344008&amp;amp;Culture=en-US&quot;&gt;this link&lt;/a&gt; for more information regarding this Webcast</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/1796391920975723334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/1796391920975723334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/1796391920975723334'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/1796391920975723334'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/07/webcast-on-advanced-scenarios-of.html' title='WebCast on Advanced Scenarios of WFRules'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7lN1OdlBoB77jGo7ZYJrU4gOs-bGOaHT136VS1C40BM8RYwhoMVRTOaO2l1NCkwsbtDOTcYh6ehIdq7B8S5OOqOZMFrt-al4UKbbzmwj22JpdFvJLlWzEJ-AaliwtkDZ3jgwn/s72-c/RuleManagerAddToRuleRepository3.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-688842657099902693</id><published>2007-06-28T08:10:00.000-07:00</published><updated>2007-07-04T11:54:03.747-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Rule Manager"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Validation"/><title type='text'>A Test suite for business rules</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhztTuvL7Z9LqQ1AvAyZ3Kxt1jQzZ6KTQHwER5UWUn2ncSi8qqfB-3wQh7m3sHeySHZgOfboB89sxid70mA_L947ULXUe5usQAMgAO18KwgBsor3zsdoBgyO944lz73-nZa6Qgw/s1600-h/RuleValidation.jpg&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_&quot; style=&quot;CLEAR: both; FLOAT: right; MARGIN: 0px 0px 10px 10px&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhztTuvL7Z9LqQ1AvAyZ3Kxt1jQzZ6KTQHwER5UWUn2ncSi8qqfB-3wQh7m3sHeySHZgOfboB89sxid70mA_L947ULXUe5usQAMgAO18KwgBsor3zsdoBgyO944lz73-nZa6Qgw/s320/RuleValidation.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; 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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;For every test record we compare the user defined &lt;em&gt;expected value &lt;/em&gt;with the rules engine &lt;em&gt;computed value. &lt;/em&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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. &lt;div style=&quot;CLEAR: both; TEXT-ALIGN: right&quot;&gt;&lt;a href=&quot;http://picasa.google.com/blogger/&quot; target=&quot;ext&quot;&gt;&lt;img style=&quot;BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: 0px; BACKGROUND: 0% 50%; PADDING-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial&quot; alt=&quot;Posted by Picasa&quot; src=&quot;http://photos1.blogger.com/pbp.gif&quot; align=&quot;middle&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/688842657099902693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/688842657099902693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/688842657099902693'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/688842657099902693'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/06/test-suite-for-business-rules.html' title='A Test suite for business rules'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhztTuvL7Z9LqQ1AvAyZ3Kxt1jQzZ6KTQHwER5UWUn2ncSi8qqfB-3wQh7m3sHeySHZgOfboB89sxid70mA_L947ULXUe5usQAMgAO18KwgBsor3zsdoBgyO944lz73-nZa6Qgw/s72-c/RuleValidation.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-4647737030162749647</id><published>2007-06-11T17:31:00.000-07:00</published><updated>2007-06-12T14:28:09.532-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PDF format"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Manager"/><category scheme="http://www.blogger.com/atom/ns#" term="XPS format"/><title type='text'>Microsoft XPS format</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjOfiWuC9ujyx8r0CW5PFwwIeyzHYi-0hvDeamZiPrwpk01ORJWsM7rIBwESyRrf1TjqG9e8bzFx3GWXGmw9mmJbkNGQV6d2bRTNyj5hQ5e07YSWPZ8ZEn3x9yHiVbNrw67zsa/s1600-h/new-report.png&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5075279280554200386&quot; style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjOfiWuC9ujyx8r0CW5PFwwIeyzHYi-0hvDeamZiPrwpk01ORJWsM7rIBwESyRrf1TjqG9e8bzFx3GWXGmw9mmJbkNGQV6d2bRTNyj5hQ5e07YSWPZ8ZEn3x9yHiVbNrw67zsa/s320/new-report.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;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.&lt;br /&gt;&lt;br /&gt;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&#39;m not too happy with these forced downloads.&lt;br /&gt;&lt;br /&gt;Finally the free PDF viewer started to contain advertisement to FedEx. These &#39;convenient&#39; link buttons are always a big annoyance to me.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;The good part of this is that an XPS viewer comes pre-installed on Microsoft Vista. I&#39;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.&lt;br /&gt;&lt;br /&gt;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)&lt;br /&gt;&lt;br /&gt;The main shortcoming I currently see with the XPS viewer is that you can not rotate a page.&lt;br /&gt;&lt;br /&gt;Here are the results:&lt;br /&gt;XPS: &lt;a href=&quot;http://www.acumenbusiness.com/portals/Loan%20Mortgage%20Approval.xps&quot;&gt;http://www.acumenbusiness.com/portals/Loan%20Mortgage%20Approval.xps&lt;/a&gt;&lt;br /&gt;PDF: &lt;a href=&quot;http://www.acumenbusiness.com/portals/Loan%20Mortgage%20Approval.pdf&quot;&gt;http://www.acumenbusiness.com/portals/Loan%20Mortgage%20Approval.pdf&lt;/a&gt;&lt;br /&gt;&lt;div style=&quot;CLEAR: both; TEXT-ALIGN: right&quot;&gt;&lt;a href=&quot;http://picasa.google.com/blogger/&quot; target=&quot;ext&quot;&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/4647737030162749647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/4647737030162749647' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/4647737030162749647'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/4647737030162749647'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/06/microsoft-xps-format.html' title='Microsoft XPS format'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjOfiWuC9ujyx8r0CW5PFwwIeyzHYi-0hvDeamZiPrwpk01ORJWsM7rIBwESyRrf1TjqG9e8bzFx3GWXGmw9mmJbkNGQV6d2bRTNyj5hQ5e07YSWPZ8ZEn3x9yHiVbNrw67zsa/s72-c/new-report.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-6117347794253693312</id><published>2007-06-04T16:24:00.000-07:00</published><updated>2007-06-04T16:37:35.197-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Rule Manager"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Validation"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Workflow Foundation"/><title type='text'>Rule Manager 1.5.0.x is released</title><content type='html'>The &lt;a href=&quot;http://www.acumenbusiness.com/Products.htm&quot;&gt;new Rule Manager (1.5.0.x) &lt;/a&gt;is released! There are many new features and enhancements. Here are some of the highlights:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Rule Validation; in the interactive rule map you can let the rules engine resolve any term.&lt;br /&gt;This starts an animated goal seeking process. The default waiting time is 0.5 sec. You can change this in the debug options.&lt;/li&gt;&lt;li&gt;Panning and zooming of the interactive rule map.&lt;/li&gt;&lt;li&gt;Creation of business rules and business terms are completely accessible during the trial period. &lt;/li&gt;&lt;li&gt;Export your rule policy to Windows Workflow Foundation, and you see the rules executing on top of Microsoft&#39;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.&lt;/li&gt;&lt;/ul&gt;Existing users can follow the internal update wizard (except that you need the .NET Framework 3.0)&lt;br /&gt;&lt;br /&gt;New users can start the installation wizard that is available &lt;a href=&quot;http://www.acumenbusiness.com/Products.htm&quot;&gt;here.&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/6117347794253693312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/6117347794253693312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/6117347794253693312'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/6117347794253693312'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/06/rule-manager-150x-is-released.html' title='Rule Manager 1.5.0.x is released'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-671551874740615672</id><published>2007-05-26T07:41:00.000-07:00</published><updated>2008-08-04T18:55:17.554-07:00</updated><title type='text'>Suppress “A first chance exception of type…” Messages in VS 2005</title><content type='html'>When writing an &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;API&lt;/span&gt; framework, it&#39;s good practice to throw appropriate framework exceptions. I have several extended application exceptions in my rule engine framework. When executing all unit tests, or just stepping through the development code, I would see hundred of messages in Visual Studio of &#39;A first chance exception of type&#39; ...&lt;br /&gt;This is just perfect behavior from my development point of view. I&#39;m throwing these exceptions myself from the framework. I&#39;ve made several attempts to find how to disable these messages. And finally I found the answer on Peter &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;Macej&lt;/span&gt; blog:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.helixoft.com/blog/archives/24&quot;&gt;How To Disable “A first chance exception of type…” Messages in VS 2005&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;So how do we suppress the messages? You most likely see these messages in&lt;br /&gt;Immediate Window because you have set Redirect all Output Window text to the&lt;br /&gt;Immediate Window in Tools - Options… - Debugging - General. That’s why when you&lt;br /&gt;right-click in Immediate Window, you cannot see any option to disable messages.&lt;br /&gt;It’s Output Window text and thus you need to set it in the Output Window. So&lt;br /&gt;open Output Window, right-click and uncheck Exception Messages from context&lt;br /&gt;menu. Simple but it took me one hour to find it. &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;It was just a simple context menu option on the Output window: Uncheck the &#39;Exception Messages&#39;.&lt;br /&gt;&lt;br /&gt;I was always trying to do this somewhere in the Debug \ Exceptions form. Well I&#39;m glad I found it. It makes the Output windows trace less convoluted with irrelevant messages.</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/671551874740615672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/671551874740615672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/671551874740615672'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/671551874740615672'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/05/suppress-first-chance-exception-of-type.html' title='Suppress “A first chance exception of type…” Messages in VS 2005'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-7934950689222968155</id><published>2007-05-17T18:29:00.000-07:00</published><updated>2007-05-17T18:48:21.766-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Rule Engine"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Workflow Foundation"/><title type='text'>WebCast about Windows Workflow Foundation Rules</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Tomorrow&lt;/span&gt;, there is a free webcast by &lt;a href=&quot;http://blogs.msdn.com/kavitak/archive/2007/05/17/intro-to-wf-rules-webcast.aspx&quot;&gt;Kavita Kamani &lt;/a&gt;(Microsoft) about using the rules engine that is part of Windows Workflow Foundation. You can register for this event &lt;a href=&quot;http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032336112&amp;EventCategory=4&amp;amp;culture=en-US&amp;CountryCode=US&quot;&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Microsoft&#39;s rules engine is a bare bones forward-chaining rules engine. The rule engine can also be invoked without using the workflow engine. When you export a business rule policy from the Rule Manager, it will generate a C# solution that illustrates how rules are invoked without the workflow engine. &lt;/p&gt;&lt;p&gt;Start Date: &lt;span style=&quot;color:#000000;&quot;&gt;5/18/07&lt;/span&gt;&lt;br /&gt;Start Time: 2:00 PM (GMT-05:00) Eastern Time (US &amp; Canada)&lt;br /&gt;End Time: 3:30 PM (GMT-05:00) Eastern Time (US &amp;amp; Canada)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/7934950689222968155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/7934950689222968155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/7934950689222968155'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/7934950689222968155'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/05/webcast-about-windows-workflow.html' title='WebCast about Windows Workflow Foundation Rules'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-6367197971174795253</id><published>2007-03-30T10:40:00.000-07:00</published><updated>2007-04-04T22:09:53.305-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Rule Animation"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Manager"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Validation"/><category scheme="http://www.blogger.com/atom/ns#" term="Video"/><title type='text'>Rule Validation Video</title><content type='html'>The Rule Manager will soon be enhanced with a new feature that allows the Interactive Rule Map as a Rule Debugger. See a video here: &lt;a href=&quot;http://www.acumenbusiness.com/video/ruleValidation.html&quot;&gt;Rule Validation Video&lt;/a&gt;. It almost became an action movie :).&lt;br /&gt;&lt;br /&gt;This is part one of providing Rule Validation (that is: testing your rules) with the &lt;a href=&quot;http://www.acumenbusiness.com/products.htm&quot;&gt;Rule Manager&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-RpihKG_XzNYHS27kCeP4wPyrDiphRt_YMa4aeHFuMevyEv5D9DoCzPanqY7avKTWICj-SKJpkdynTN0T5BE2uIhZYk34yMRnzh3J1qTO7BTJqA_uaIg_7lW23mYAyJOrqO_G/s1600-h/rule-validation.png&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5047774208160125346&quot; style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-RpihKG_XzNYHS27kCeP4wPyrDiphRt_YMa4aeHFuMevyEv5D9DoCzPanqY7avKTWICj-SKJpkdynTN0T5BE2uIhZYk34yMRnzh3J1qTO7BTJqA_uaIg_7lW23mYAyJOrqO_G/s400/rule-validation.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Color legend for Rule:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Green: Rule fired &lt;/li&gt;&lt;li&gt;Red: Rule failed &lt;/li&gt;&lt;li&gt;Orange: Rule is pending &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Color legend for Term:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Green: Term is assigned &lt;/li&gt;&lt;li&gt;Orange: Term is unknown&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;How it works? We use the backward chaining algorithm to resolve a goal. The user can select any business term as a goal. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;When the user clicks resolve, the inference engine will try to resolve this goal by executing the rules. &lt;/li&gt;&lt;li&gt;When a term is encountered that can not be derived from other rules, an ask dialog will be shown to the user. The user value will be stored into an internal table, so consecutive runs will first use this table before asking the user. Internally the rule manager supports defining restrictions on business terms. This allows the inference engine to show input options when asking a value for a term. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;About the user data value table: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;The table can be cleared by clicking on &#39;Reset All Values&#39; from the context menu. &lt;/li&gt;&lt;li&gt;You can change the value of one particular term by selecting the &#39;Reset Term&#39; on the Term context menu. &lt;/li&gt;&lt;li&gt;Note: also business terms that are inferred by the inference engine can be overwritten by the user. Be careful with this because this would skip the backward-chaining of this rule branch.&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/6367197971174795253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/6367197971174795253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/6367197971174795253'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/6367197971174795253'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/03/acumen-business-rule-validation-video.html' title='Rule Validation Video'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-RpihKG_XzNYHS27kCeP4wPyrDiphRt_YMa4aeHFuMevyEv5D9DoCzPanqY7avKTWICj-SKJpkdynTN0T5BE2uIhZYk34yMRnzh3J1qTO7BTJqA_uaIg_7lW23mYAyJOrqO_G/s72-c/rule-validation.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-616510662534937416</id><published>2007-03-24T15:42:00.000-07:00</published><updated>2007-03-24T15:56:35.050-07:00</updated><title type='text'>13 years ago</title><content type='html'>Found my old research paper from 1994 &lt;a href=&quot;http://doc.utwente.nl/18210/1/Ensing94object.pdf&quot;&gt;&quot;An object-oriented approach to knowledge representation in a biomedical domain&quot;&lt;/a&gt;. Looked like they scanned the contents of the original paper.&lt;br /&gt;&lt;br /&gt;It&#39;s pretty outdated. Note that this was before the existence of Java or C#, but there was good old Smalltalk.&lt;br /&gt;&lt;br /&gt;One thing is still relevant. The construction of a hybrid knowledge based system. Translated to 2007; the semantic web 3.0. Defining a clear terminological component (vocabulary) in order to make assertions from basic facts.</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/616510662534937416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/616510662534937416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/616510662534937416'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/616510662534937416'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/03/16-years-ago.html' title='13 years ago'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-841297979262208891</id><published>2007-03-14T19:45:00.000-07:00</published><updated>2007-03-19T18:59:34.562-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Conversion"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Workflow Foundation"/><title type='text'>Importing Biztalk rules and export to Windows Workflow Foundation</title><content type='html'>&lt;span style=&quot;font-size:130%;&quot;&gt;The new &lt;a href=&quot;http://www.acumenbusiness.com/Support/default.aspx?g=posts&amp;t=332&quot;&gt;Rule Manager (version 1.4.0.50)&lt;/a&gt; is released!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1VS63hNjdR_RX5QMwBYAx7wuVYlnH3RLJ_puncb7FFMgcFLbHEfL9AQCJUmUXB9RWSt70YCus-Wu-r109DH2Xc1a-Q_Hu7qbNqEqNaE5_Iw8YCo3GrAkC7IRmbFvMLwAKb0eT/s1600-h/save-policy-as.png&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5041977422632162898&quot; style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1VS63hNjdR_RX5QMwBYAx7wuVYlnH3RLJ_puncb7FFMgcFLbHEfL9AQCJUmUXB9RWSt70YCus-Wu-r109DH2Xc1a-Q_Hu7qbNqEqNaE5_Iw8YCo3GrAkC7IRmbFvMLwAKb0eT/s400/save-policy-as.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With just a few mouse clicks, the Rule Manager from &lt;a href=&quot;http://www.acumenbusiness.com/&quot;&gt;Acumen Business &lt;/a&gt;imports a BizTalk rule policy and export the rules to the Windows Workflow Foundation format.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuxfWyLVp5Ns2U_Rq-TJpkrpOXrzeDbrODxm1uqN7wc355zCCtu8Ssl4sEqsVNRv0tEFvOVp8ks-9P4TUPuz0moPNJoSI7BIWz6eMpV2Y4muE8kCxvn9jEVu-4RtO3jQvIjs8u/s1600-h/generated-solution.png&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5041977882193663586&quot; style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuxfWyLVp5Ns2U_Rq-TJpkrpOXrzeDbrODxm1uqN7wc355zCCtu8Ssl4sEqsVNRv0tEFvOVp8ks-9P4TUPuz0moPNJoSI7BIWz6eMpV2Y4muE8kCxvn9jEVu-4RtO3jQvIjs8u/s400/generated-solution.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The export generates a complete Visual studio solutions. This includes the .rules file, the Business Object model and the code that calls Windows Worklow Engine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd4w1koez7iaw1S3n0aGxJs6triEL-fpeD0bNPNiYiC2dsOWJES12_MArIQ_gdIVFpTcCbhhCC64Otn0uVCy4dtgpxmWbsYRPzheroa5rsIL7ksIZYUUPCFhcPxlepeOCa-_zf/s1600-h/solution-execution.png&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5041978466309215858&quot; style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd4w1koez7iaw1S3n0aGxJs6triEL-fpeD0bNPNiYiC2dsOWJES12_MArIQ_gdIVFpTcCbhhCC64Otn0uVCy4dtgpxmWbsYRPzheroa5rsIL7ksIZYUUPCFhcPxlepeOCa-_zf/s400/solution-execution.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;And voila, here is the results of a CarDiagnosis example with the recommendation that I have to get &#39;Fuel&#39;&lt;br /&gt;&lt;br /&gt;It&#39;s just a console output, but you hopefully get the idea. It&#39;s an executable solution that can be incorporated into the IT infrastructure.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;I don&#39;t think we can make it any easier.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;What you need: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Microsoft BizTalk 2006&lt;/li&gt;&lt;li&gt;.NET 3.0 (this includes Windows Workflow Foundation)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.acumenbusiness.com/Product/Download.htm&quot;&gt;Acumen&#39;s Rule Manager&lt;/a&gt; with the BizTalk and Windows Workflow Foundation adapters&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;What you get:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Your BizTalk rule policy converted to Windows Workflow Foundation. The best part is that the Windows Workflow Foundation is free and is included in the .NET 3.0 framework.&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/841297979262208891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/841297979262208891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/841297979262208891'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/841297979262208891'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/03/importing-biztalk-rules-and-export-to.html' title='Importing Biztalk rules and export to Windows Workflow Foundation'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1VS63hNjdR_RX5QMwBYAx7wuVYlnH3RLJ_puncb7FFMgcFLbHEfL9AQCJUmUXB9RWSt70YCus-Wu-r109DH2Xc1a-Q_Hu7qbNqEqNaE5_Iw8YCo3GrAkC7IRmbFvMLwAKb0eT/s72-c/save-policy-as.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-3106668052010550857</id><published>2007-03-13T10:12:00.000-07:00</published><updated>2007-03-13T10:44:34.697-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Business Rules Forum"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Formats"/><title type='text'>Business Rules for the Windows Workflow Foundation</title><content type='html'>If you like to see the latest version of the &lt;a href=&quot;http://www.acumenbusiness.com/Products.htm&quot;&gt;RuleManager&lt;/a&gt; with support for Microsoft Windows Workflow Foundation, you can request to see the product in action at the Business Rules Forum. Fill in the form &lt;a href=&quot;http://www.businessrulesforum.com/conf_funlabs.php&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFx1k5VvW55c5uN9eSGFKD5ICCYpCbcSsnuU5ty_CXsFfByW-rCFLPjho_Os_z-BzkH-KLcvpgPXoFI6tGm60seh3SjnNrAqaHjl58V5GZBS6hzJpDLQ_CHvW7dEALva4-vWUF/s1600-h/Rule+Manager-DiscountRuleset.png&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5041461575585076802&quot; style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFx1k5VvW55c5uN9eSGFKD5ICCYpCbcSsnuU5ty_CXsFfByW-rCFLPjho_Os_z-BzkH-KLcvpgPXoFI6tGm60seh3SjnNrAqaHjl58V5GZBS6hzJpDLQ_CHvW7dEALva4-vWUF/s400/Rule+Manager-DiscountRuleset.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The image shows the imported DiscountRuleSet from the Microsoft Windows Worklow Foundation advanced policy example.</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/3106668052010550857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/3106668052010550857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/3106668052010550857'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/3106668052010550857'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/03/business-rules-for-windows-workflow.html' title='Business Rules for the Windows Workflow Foundation'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFx1k5VvW55c5uN9eSGFKD5ICCYpCbcSsnuU5ty_CXsFfByW-rCFLPjho_Os_z-BzkH-KLcvpgPXoFI6tGm60seh3SjnNrAqaHjl58V5GZBS6hzJpDLQ_CHvW7dEALva4-vWUF/s72-c/Rule+Manager-DiscountRuleset.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-1265371950210402892</id><published>2007-01-26T06:31:00.000-08:00</published><updated>2007-06-11T17:47:53.678-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Rule Animation"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Engine"/><title type='text'>How to understand a large ruleset?</title><content type='html'>Peter Lin has a very &lt;span class=&quot;snap_preview&quot;&gt;&lt;a href=&quot;http://qrdn.brmsblog.com/2006/12/20/using-decision-tables-take-2/#comment-809&quot;&gt;valid concern&lt;/a&gt;&lt;/span&gt; :&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;My main caution to users is that no matter how nice the writing part is, how&lt;br /&gt;does the tool make it easier to maintain and understand a large ruleset? Does it&lt;br /&gt;have the ability to analyze the rules and show the relationship to the user?&lt;/em&gt;&lt;/blockquote&gt;At Acumen Business (where I work), we have addressed this issue by the introduction of the Interactive Rule Map. Sometimes also referred to as Rule Spider. This dynamic rulemap shows the direct dependencies of rules-to-terms and from terms-to-rules.&lt;br /&gt;&lt;br /&gt;There is also a complete Rule Graph generation, however that will quickly loose it’s power when hundreds of rules are defined. The interactive rule map is an advanced browser that shows parts of the rule graph.&lt;br /&gt;&lt;br /&gt;Currently we are doing some research to integrate the Rule Validation into the Interactive Rule Map. This allows step through debugging of the just the business rules. Our prototype is looking very promising.</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/1265371950210402892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/1265371950210402892' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/1265371950210402892'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/1265371950210402892'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/01/how-to-understand-large-ruleset.html' title='How to understand a large ruleset?'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-2841767603334288499</id><published>2007-01-26T06:07:00.000-08:00</published><updated>2007-03-15T05:32:25.870-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Windows Workflow Foundation"/><title type='text'>What is missing in WWF rules</title><content type='html'>There is an interesting &lt;span class=&quot;snap_preview&quot;&gt;&lt;a href=&quot;http://qrdn.brmsblog.com/2006/09/05/windows-workflow-foundation-and-business-rules/#comments&quot;&gt;discussion going on&lt;/a&gt;&lt;/span&gt; how WWF rules is different from a BRMS solution. Although some comparisions are more related to the comparison with QuickRules.NET, there are quite a few valid points.&lt;br /&gt;&lt;br /&gt;The argument list WWF Rules vs. BRMS rules will soon have to be rewritten. Acumen Busines is in the process of providing their tool components for WWF. This will include&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Rule Repository&lt;/li&gt;&lt;li&gt;Rule Validation and Verification&lt;/li&gt;&lt;li&gt;Rule Animation&lt;/li&gt;&lt;li&gt;Rule Reporting&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Stay tuned. &lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/2841767603334288499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/2841767603334288499' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/2841767603334288499'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/2841767603334288499'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/01/what-is-missing-in-wwf-rules.html' title='What is missing in WWF rules'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7119233.post-2644420692921430394</id><published>2007-01-23T14:21:00.000-08:00</published><updated>2007-01-24T07:52:51.033-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Decision Tree"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Formats"/><title type='text'>Decision Tree Editor</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn0mDKYMTRNO_b8DE0Tz1hx9kTyDVrOYTeoq25XcyTcavyQ68yv9xY7SS3sFfDmW5whngfKovsRdq50HD1ES-BZ-UOOT1uSmh5hYJSYpWlLuh8HbTxDsOKLpFNZ8ytUd-yOu77/s1600-h/DecisionTree.png&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5023625401450142914&quot; style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn0mDKYMTRNO_b8DE0Tz1hx9kTyDVrOYTeoq25XcyTcavyQ68yv9xY7SS3sFfDmW5whngfKovsRdq50HD1ES-BZ-UOOT1uSmh5hYJSYpWlLuh8HbTxDsOKLpFNZ8ytUd-yOu77/s400/DecisionTree.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;In previous posts I have mentioned the usage of Decision Trees or Decision Tables to represent business rules.&lt;br /&gt;&lt;br /&gt;Acumen Business has developed an editor to create such Decision Tree rules. See the &lt;a href=&quot;http://www.acumenbusiness.com/video/decision%20tree.html&quot;&gt;video here&lt;/a&gt;. The decision tree can be viewed in horizontal or vertical layout.&lt;br /&gt;&lt;br /&gt;In order to effectively use such a format on rule execution; the runtime inference engine must support this kind of rule directly. Unfortunately BizTalk does not support this out-of-the-box. CA&#39;s RuleSp (or the new Aion) does support Decisions Tree natively in their inference engine. Corticon&#39;s rule sheets are also very similar to this Decision Tree format. Although it seems that it models a rule sheet like a decision table, the fact that certain branches can be overriden makes it more a decision tree. I&#39;m pretty sure that Blaze and Ilog have something similar as well.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://bizknowledge.blogspot.com/feeds/2644420692921430394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/7119233/2644420692921430394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/2644420692921430394'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7119233/posts/default/2644420692921430394'/><link rel='alternate' type='text/html' href='https://bizknowledge.blogspot.com/2007/01/decisoin-tree-editor.html' title='Decision Tree Editor'/><author><name>Ensing</name><uri>http://www.blogger.com/profile/01098367831623180604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn0mDKYMTRNO_b8DE0Tz1hx9kTyDVrOYTeoq25XcyTcavyQ68yv9xY7SS3sFfDmW5whngfKovsRdq50HD1ES-BZ-UOOT1uSmh5hYJSYpWlLuh8HbTxDsOKLpFNZ8ytUd-yOu77/s72-c/DecisionTree.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>