<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>Edward Bakker</title>
    <link>http://www.edwardbakker.nl/</link>
    <description>Guidance, automation and factories</description>
    <language>en-us</language>
    <copyright>Edward Bakker </copyright>
    <lastBuildDate>Sat, 27 Dec 2008 22:24:13 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.8.5223.2</generator>
    <managingEditor>ef.bakker@quicknet.nl</managingEditor>
    <webMaster>ef.bakker@quicknet.nl</webMaster>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=cccad39d-80dc-4d91-905d-b5753b44e291</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,cccad39d-80dc-4d91-905d-b5753b44e291.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      During the development of our Blueprints we can sometimes use a little extra help
      to understand what is really going on. It turns out that if we add a Registry setting
      called ‘<strong>EnableDeveloperFeatures</strong>’ under the ‘<strong>HKey_Local_Machine\Software\Microsoft\Blueprints</strong>’
      key and set its value to ‘true’ we get a few extra features enabled in the Blueprint
      Manager that might help understand (debugging) Blueprints . In the screenshot below
      we can see the checkboxes that become visible after we have added the ‘<strong>EnableDeveloperFeatures</strong>’
      setting to the Registry. The checkboxes are read only in the Blueprint Manager dialog
      but can be set through the Registry. 
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BlueprintsEnableDeveloperFeatures_131E1/Settings.png">
            <img title="Settings" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="330" alt="Settings" src="http://www.edwardbakker.nl/content/binary/BlueprintsEnableDeveloperFeatures_131E1/Settings_thumb.png" width="606" border="0" />
          </a>
        </p>
        <p>
      As we can see, the ‘Custom Menu Filter’ checkbox is checked which means custom menu
      filters are enabled by default for our Blueprints. We can disable this feature by
      adding a ‘<strong>DisableCustomMenuFilters</strong>’ setting under the ‘<strong>HKey_Local_Machine\Software\Microsoft\Blueprints</strong>’
      key and set its value to ‘false’. 
   </p>
        <p>
      To enable logging in the Blueprint Manager we can add the ‘<strong>BPMLogging</strong>’
      setting to the Registry and set its value to ‘true’. 
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/PermaLink,guid,9077ee23-2f38-4521-aa01-2b5baa45cc0c.aspx">In
      an earlier post</a> I demonstrated how to create a custom menu filter. After adding
      a ‘<strong>MenuDebugging</strong>’ setting to the Registry and set its value to ‘true’
      we can see that Blueprint Manager now logs (output window) that it actually detects
      the custom menu filter that we created and also determines if it should be visible
      or not.
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BlueprintsEnableDeveloperFeatures_131E1/Log.png">
            <img title="Log" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="255" alt="Log" src="http://www.edwardbakker.nl/content/binary/BlueprintsEnableDeveloperFeatures_131E1/Log_thumb.png" width="688" border="0" />
          </a>
        </p>
        <p>
      Hopefully, enabling these features help a little during the development of your Blueprints…
   </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=cccad39d-80dc-4d91-905d-b5753b44e291" />
      </body>
      <title>Blueprints: EnableDeveloperFeatures</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,cccad39d-80dc-4d91-905d-b5753b44e291.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,cccad39d-80dc-4d91-905d-b5753b44e291.aspx</link>
      <pubDate>Sat, 27 Dec 2008 22:24:13 GMT</pubDate>
      <description>&lt;p&gt;
   During the development of our Blueprints we can sometimes use a little extra help
   to understand what is really going on. It turns out that if we add a Registry setting
   called ‘&lt;strong&gt;EnableDeveloperFeatures&lt;/strong&gt;’ under the ‘&lt;strong&gt;HKey_Local_Machine\Software\Microsoft\Blueprints&lt;/strong&gt;’
   key and set its value to ‘true’ we get a few extra features enabled in the Blueprint
   Manager that might help understand (debugging) Blueprints . In the screenshot below
   we can see the checkboxes that become visible after we have added the ‘&lt;strong&gt;EnableDeveloperFeatures&lt;/strong&gt;’
   setting to the Registry. The checkboxes are read only in the Blueprint Manager dialog
   but can be set through the Registry. 
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BlueprintsEnableDeveloperFeatures_131E1/Settings.png"&gt;&lt;img title="Settings" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="330" alt="Settings" src="http://www.edwardbakker.nl/content/binary/BlueprintsEnableDeveloperFeatures_131E1/Settings_thumb.png" width="606" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   As we can see, the ‘Custom Menu Filter’ checkbox is checked which means custom menu
   filters are enabled by default for our Blueprints. We can disable this feature by
   adding a ‘&lt;strong&gt;DisableCustomMenuFilters&lt;/strong&gt;’ setting under the ‘&lt;strong&gt;HKey_Local_Machine\Software\Microsoft\Blueprints&lt;/strong&gt;’
   key and set its value to ‘false’. 
&lt;/p&gt;
&lt;p&gt;
   To enable logging in the Blueprint Manager we can add the ‘&lt;strong&gt;BPMLogging&lt;/strong&gt;’
   setting to the Registry and set its value to ‘true’. 
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/PermaLink,guid,9077ee23-2f38-4521-aa01-2b5baa45cc0c.aspx"&gt;In
   an earlier post&lt;/a&gt; I demonstrated how to create a custom menu filter. After adding
   a ‘&lt;strong&gt;MenuDebugging&lt;/strong&gt;’ setting to the Registry and set its value to ‘true’
   we can see that Blueprint Manager now logs (output window) that it actually detects
   the custom menu filter that we created and also determines if it should be visible
   or not.
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BlueprintsEnableDeveloperFeatures_131E1/Log.png"&gt;&lt;img title="Log" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="255" alt="Log" src="http://www.edwardbakker.nl/content/binary/BlueprintsEnableDeveloperFeatures_131E1/Log_thumb.png" width="688" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   Hopefully, enabling these features help a little during the development of your Blueprints…
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=cccad39d-80dc-4d91-905d-b5753b44e291" /&gt;</description>
      <category>Blueprints;Software Factories</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=9077ee23-2f38-4521-aa01-2b5baa45cc0c</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,9077ee23-2f38-4521-aa01-2b5baa45cc0c.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      For one of the Blueprints I am currently writing I had to add a menu item that enables
      the Blueprint user to execute a specific task (command). Adding menu items to a Blueprint
      is pretty easy by using the Blueprint configuration dialog. As we can see in the screenshot
      below we can also set the ‘visibility for the menu item by specifying a menu filter
      in the ‘Visibility box’ on the dialog. 
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/config.png">
            <img title="config" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="343" alt="config" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/config_thumb.png" width="535" border="0" />
          </a>
        </p>
        <p>
      The current Blueprints CTP comes with a few ‘built-in’ menu filters like: Project=roject
      name, FolderEndsWith=folder name, etc. (complete list can be found in de Blueprints
      documentation). Of course I needed a menu filter that wasn’t available out of the
      box. Unfortunately the documentation doesn’t say anything about adding custom menu
      filters but luckily a little experimenting (and Reflector ;)) was enough to get this
      to work.
   </p>
        <p>
      Here are the steps to implement your own custom menu filter:  
   </p>
        <p>
      The first thing to do is to simply add the name of your new custom menu filter in
      the ‘Visibility’ box of the menu item you want the custom menu filter to be applied
      on. In this example we also pass a custom argument (‘BlaBla’) to our custom menu filter.
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/con1.png">
            <img title="con1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="350" alt="con1" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/con1_thumb.png" width="546" border="0" />
          </a>
        </p>
        <p>
      The second step is to actually implement the custom menu filter. This can be easily
      done by adding a ‘Command Extension’ project to your Blueprint solution (Blueprints
      menu –&gt; Add Command Extension). This project already implements a post build event
      to make sure the .dll that hosts your command extension is copied to the correct location
      to let Blueprint Manager find it during execution of your Blueprint. 
   </p>
        <p>
      for this example we can delete all default files in the extension project and add
      a new class to this project that implements the ‘IMenuFilter’ interface (add a reference
      to the ‘Microsoft.SoftwareFactories.BASMAPI.dll’ assembly that can be found under
      the Blueprint installation directory).
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/code1.png">
            <img title="code1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="243" alt="code1" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/code1_thumb.png" width="649" border="0" />
          </a>
        </p>
        <p>
      In this class, the ‘FilterSupported’ method is used to decide whether a  custom
      menu filter is supported in our Blueprints. Àll we have to do in this method is return
      ‘true’ for the custom menu filters (name) that we want to support in our Blueprint.
      (note that we can handle multiple custom filters here).
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/code2.png">
            <img title="code2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="code2" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/code2_thumb.png" width="398" border="0" />
          </a>
        </p>
        <p>
      The ‘Visible’ method is used to decide whether the menu item that has our custom menu
      filter applied should be visible or not. The screenshot below demonstrates a, not
      very useful (and not bulletproof), implementation of a custom menu filter that only
      shows the menu item in case the Blueprint user right clicks the Solution (Solution
      Explorer) and the name of the selected Solution starts with the parameter supplied
      to the custom menu filter (‘BlaBla’ in this case).  As said, not a very useful
      filter but it hopefuly demonstrates what can can be done here. 
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/code3.png">
            <img title="code3" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="521" alt="code3" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/code3_thumb.png" width="549" border="0" />
          </a>
        </p>
        <p>
      After we finished the ‘Visible’ method, we are done implementing our custom menu filter
      and all we have to do is make sure the Blueprints Manager knows about our custom menu
      filter. How?
   </p>
        <p>
      As we can see in the screenshot below, the menus that we define in our Blueprint configuration
      dialog (see above) are stored in the ‘config.xml’ file of our Blueprint (located in
      the properties folder in our Blueprint project).
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/Menu.png">
            <img title="Menu" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="50" alt="Menu" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/Menu_thumb.png" width="745" border="0" />
          </a>
        </p>
        <p>
      At some point, the Blueprint Manager parses this config file, searches for custom
      menus, detects the ‘MyCustomMenuFilter’ that we specified in our menu item and notices
      it isn’t one of the ‘built-in’ menu filters. At that time the Blueprint Manager checks
      if any additional ‘resources’ are registered for our Blueprint that might host an
      implementation of the ‘IMenuFilter’ interface. To make sure the Blueprint Manager
      can find our extension, we register our custom menu filter by adding the following
      (screenshot below) to the config file of our Blueprint.
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/Resources.png">
            <img title="Resources" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="50" alt="Resources" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/Resources_thumb.png" width="906" border="0" />
          </a>
        </p>
        <p>
      After that, if the Blueprints Manager detects a menu filter that is doesn’t recognize,
      it will search its additional resources and find our custom menu filter implementation.
      It will then call the ‘FilterSupported’ and ‘Visible’ methods on our ‘CustomMenuFilters’
      class to decide whether or not the custom menu item is supported and under what circumstances
      display our menu item.
   </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=9077ee23-2f38-4521-aa01-2b5baa45cc0c" />
      </body>
      <title>Blueprints: Custom menu filters</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,9077ee23-2f38-4521-aa01-2b5baa45cc0c.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,9077ee23-2f38-4521-aa01-2b5baa45cc0c.aspx</link>
      <pubDate>Mon, 22 Dec 2008 23:40:59 GMT</pubDate>
      <description>&lt;p&gt;
   For one of the Blueprints I am currently writing I had to add a menu item that enables
   the Blueprint user to execute a specific task (command). Adding menu items to a Blueprint
   is pretty easy by using the Blueprint configuration dialog. As we can see in the screenshot
   below we can also set the ‘visibility for the menu item by specifying a menu filter
   in the ‘Visibility box’ on the dialog. 
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/config.png"&gt;&lt;img title="config" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="343" alt="config" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/config_thumb.png" width="535" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   The current Blueprints CTP comes with a few ‘built-in’ menu filters like: Project=roject
   name, FolderEndsWith=folder name, etc. (complete list can be found in de Blueprints
   documentation). Of course I needed a menu filter that wasn’t available out of the
   box. Unfortunately the documentation doesn’t say anything about adding custom menu
   filters but luckily a little experimenting (and Reflector ;)) was enough to get this
   to work.
&lt;/p&gt;
&lt;p&gt;
   Here are the steps to implement your own custom menu filter:&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   The first thing to do is to simply add the name of your new custom menu filter in
   the ‘Visibility’ box of the menu item you want the custom menu filter to be applied
   on. In this example we also pass a custom argument (‘BlaBla’) to our custom menu filter.
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/con1.png"&gt;&lt;img title="con1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="350" alt="con1" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/con1_thumb.png" width="546" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   The second step is to actually implement the custom menu filter. This can be easily
   done by adding a ‘Command Extension’ project to your Blueprint solution (Blueprints
   menu –&amp;gt; Add Command Extension). This project already implements a post build event
   to make sure the .dll that hosts your command extension is copied to the correct location
   to let Blueprint Manager find it during execution of your Blueprint. 
&lt;/p&gt;
&lt;p&gt;
   for this example we can delete all default files in the extension project and add
   a new class to this project that implements the ‘IMenuFilter’ interface (add a reference
   to the ‘Microsoft.SoftwareFactories.BASMAPI.dll’ assembly that can be found under
   the Blueprint installation directory).
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/code1.png"&gt;&lt;img title="code1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="243" alt="code1" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/code1_thumb.png" width="649" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   In this class, the ‘FilterSupported’ method is used to decide whether a&amp;nbsp; custom
   menu filter is supported in our Blueprints. Àll we have to do in this method is return
   ‘true’ for the custom menu filters (name) that we want to support in our Blueprint.
   (note that we can handle multiple custom filters here).
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/code2.png"&gt;&lt;img title="code2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="code2" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/code2_thumb.png" width="398" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   The ‘Visible’ method is used to decide whether the menu item that has our custom menu
   filter applied should be visible or not. The screenshot below demonstrates a, not
   very useful (and not bulletproof), implementation of a custom menu filter that only
   shows the menu item in case the Blueprint user right clicks the Solution (Solution
   Explorer) and the name of the selected Solution starts with the parameter supplied
   to the custom menu filter (‘BlaBla’ in this case).&amp;nbsp; As said, not a very useful
   filter but it hopefuly demonstrates what can can be done here. 
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/code3.png"&gt;&lt;img title="code3" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="521" alt="code3" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/code3_thumb.png" width="549" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   After we finished the ‘Visible’ method, we are done implementing our custom menu filter
   and all we have to do is make sure the Blueprints Manager knows about our custom menu
   filter. How?
&lt;/p&gt;
&lt;p&gt;
   As we can see in the screenshot below, the menus that we define in our Blueprint configuration
   dialog (see above) are stored in the ‘config.xml’ file of our Blueprint (located in
   the properties folder in our Blueprint project).
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/Menu.png"&gt;&lt;img title="Menu" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="50" alt="Menu" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/Menu_thumb.png" width="745" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   At some point, the Blueprint Manager parses this config file, searches for custom
   menus, detects the ‘MyCustomMenuFilter’ that we specified in our menu item and notices
   it isn’t one of the ‘built-in’ menu filters. At that time the Blueprint Manager checks
   if any additional ‘resources’ are registered for our Blueprint that might host an
   implementation of the ‘IMenuFilter’ interface. To make sure the Blueprint Manager
   can find our extension, we register our custom menu filter by adding the following
   (screenshot below) to the config file of our Blueprint.
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/Resources.png"&gt;&lt;img title="Resources" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="50" alt="Resources" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustommenufilters_127A7/Resources_thumb.png" width="906" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   After that, if the Blueprints Manager detects a menu filter that is doesn’t recognize,
   it will search its additional resources and find our custom menu filter implementation.
   It will then call the ‘FilterSupported’ and ‘Visible’ methods on our ‘CustomMenuFilters’
   class to decide whether or not the custom menu item is supported and under what circumstances
   display our menu item.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=9077ee23-2f38-4521-aa01-2b5baa45cc0c" /&gt;</description>
      <category>Blueprints;Software Factories</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=19ed9391-55ca-4e49-aeef-e3c7289f199e</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,19ed9391-55ca-4e49-aeef-e3c7289f199e.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      When working with a Blueprint to deliver a product, we very often start with unfolding
      a solution/project structure (template) that reflects some architectural guidance.
      When building a Blueprint, we have a few options for unfolding templates within our
      Blueprint (that we can set through configuration as displayed below). The option ‘None’
      obviously doesn’t unfold a template at all, ‘Auto-generated’ unfolds a predefined
      project template (C# class library) and ‘User-supplied’ provides us with the possibility
      to define our own solution/project templates. (The guidance that comes with the current
      release of Blueprints does a pretty good job describing these three options)
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/configuration.png">
            <img title="configuration" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="291" alt="configuration" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/configuration_thumb.png" width="454" border="0" />
          </a>
        </p>
        <p>
      However, sometimes we need even more control before, during or after template unfolding
      (ie create folder structures, complex dialogs, Add to source control, etc.). Luckily,
      there is another mechanism that we can use for this scenario that gives us full control!
   </p>
        <p>
      We can add a ‘Command Extension’ (right click on your Blueprint and select ‘Add Command
      Extension’ from the Blueprints menu) and write an extension that unfolds our custom
      project templates.  
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/AddExtension.png">
            <img title="AddExtension" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="209" alt="AddExtension" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/AddExtension_thumb.png" width="294" border="0" />
          </a>
        </p>
        <p>
      Adding a Command Extension to our Blueprint gives us a new project in our Blueprint
      solution. This new project already contains an example extension that we can modify
      to implement our custom unfolding logic.  Below, a simplyfied implementation
      of this modified Command Extension is given that uses the custom ‘MyTemplate.vstemplate’
      template and unfolds that to a (hard coded) location. 
   </p>
        <p>
        
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/Extension.png">
            <img title="Extension" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="224" alt="Extension" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/Extension_thumb.png" width="559" border="0" />
          </a>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
      After we fully implemented our extension, we can add this Command Extension to the
      commands collection of our Blueprint (More info on how to add commands can be found
      in the Blueprints documentation). 
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/Command.png">
            <img title="Command" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="243" alt="Command" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/Command_thumb.png" width="379" border="0" />
          </a>
        </p>
        <p>
      The real ‘trick’ here is to name the command ‘<strong>INIT</strong>’ which will force
      the Blueprints Manager to execute the command automatically for us when unfolding
      our Blueprint to a (empty) Visual Studio solution. Also, don’t forget to set the ‘Template’
      option in the Blueprint configuration dialog to ‘<strong>None</strong>’! Note that
      we also added a switch statement to our implementation of the Command Extension to
      only execute the template unfolding in case the ‘INIT’ command gets executed. 
   </p>
        <p>
      With this in place we can write complex ‘vstemplates’, that include <a href="http://msdn.microsoft.com/en-us/library/ms171411.aspx">WizardExtensions</a> to
      collect user input and rely on the Blueprints Manager to execute our ‘INIT’ command
      to unfold these templates when developers add our Blueprint to their Visual Studio
      solutions. 
   </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=19ed9391-55ca-4e49-aeef-e3c7289f199e" />
      </body>
      <title>Blueprints: Customize template unfolding</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,19ed9391-55ca-4e49-aeef-e3c7289f199e.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,19ed9391-55ca-4e49-aeef-e3c7289f199e.aspx</link>
      <pubDate>Sat, 20 Dec 2008 22:27:52 GMT</pubDate>
      <description>&lt;p&gt;
   When working with a Blueprint to deliver a product, we very often start with unfolding
   a solution/project structure (template) that reflects some architectural guidance.
   When building a Blueprint, we have a few options for unfolding templates within our
   Blueprint (that we can set through configuration as displayed below). The option ‘None’
   obviously doesn’t unfold a template at all, ‘Auto-generated’ unfolds a predefined
   project template (C# class library) and ‘User-supplied’ provides us with the possibility
   to define our own solution/project templates. (The guidance that comes with the current
   release of Blueprints does a pretty good job describing these three options)
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/configuration.png"&gt;&lt;img title="configuration" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="291" alt="configuration" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/configuration_thumb.png" width="454" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   However, sometimes we need even more control before, during or after template unfolding
   (ie create folder structures, complex dialogs, Add to source control, etc.). Luckily,
   there is another mechanism that we can use for this scenario that gives us full control!
&lt;/p&gt;
&lt;p&gt;
   We can add a ‘Command Extension’ (right click on your Blueprint and select ‘Add Command
   Extension’ from the Blueprints menu) and write an extension that unfolds our custom
   project templates.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/AddExtension.png"&gt;&lt;img title="AddExtension" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="209" alt="AddExtension" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/AddExtension_thumb.png" width="294" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   Adding a Command Extension to our Blueprint gives us a new project in our Blueprint
   solution. This new project already contains an example extension that we can modify
   to implement our custom unfolding logic.&amp;nbsp; Below, a simplyfied implementation
   of this modified Command Extension is given that uses the custom ‘MyTemplate.vstemplate’
   template and unfolds that to a (hard coded) location. 
&lt;p&gt;
   &amp;nbsp; 
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/Extension.png"&gt;&lt;img title="Extension" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="224" alt="Extension" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/Extension_thumb.png" width="559" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
   After we fully implemented our extension, we can add this Command Extension to the
   commands collection of our Blueprint (More info on how to add commands can be found
   in the Blueprints documentation). 
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/Command.png"&gt;&lt;img title="Command" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="243" alt="Command" src="http://www.edwardbakker.nl/content/binary/BlueprintsCustomizetemplateunfolding_13634/Command_thumb.png" width="379" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   The real ‘trick’ here is to name the command ‘&lt;strong&gt;INIT&lt;/strong&gt;’ which will force
   the Blueprints Manager to execute the command automatically for us when unfolding
   our Blueprint to a (empty) Visual Studio solution. Also, don’t forget to set the ‘Template’
   option in the Blueprint configuration dialog to ‘&lt;strong&gt;None&lt;/strong&gt;’! Note that
   we also added a switch statement to our implementation of the Command Extension to
   only execute the template unfolding in case the ‘INIT’ command gets executed. 
&lt;/p&gt;
&lt;p&gt;
   With this in place we can write complex ‘vstemplates’, that include &lt;a href="http://msdn.microsoft.com/en-us/library/ms171411.aspx"&gt;WizardExtensions&lt;/a&gt; to
   collect user input and rely on the Blueprints Manager to execute our ‘INIT’ command
   to unfold these templates when developers add our Blueprint to their Visual Studio
   solutions. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=19ed9391-55ca-4e49-aeef-e3c7289f199e" /&gt;</description>
      <category>Blueprints;Software Factories</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=d6910688-a36b-4c10-9709-2628aa756e18</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,d6910688-a36b-4c10-9709-2628aa756e18.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Those of you interested in software factories should check out the new <a href="http://www.codeplex.com/blueprints/Release/ProjectReleases.aspx?ReleaseId=18965">Blueprints
      Manger</a> and <a href="http://www.codeplex.com/blueprints/Release/ProjectReleases.aspx?ReleaseId=18967">Sample
      Blueprint</a> which were released on the <a href="http://www.codeplex.com/blueprints">Blueprints
      Codeplex site</a> right after PDC 2008. <a href="http://blogs.msdn.com/jackgr/">Jack
      Greenfield</a> and <a href="http://blogs.msdn.com/mglehman/">Michael Lehman</a> hosted
      the ‘Blueprint booth’ at PDC 2008 where they demoed this latest release. Blueprints
      represent the next generation Software Factories and solve many of the authoring and
      deploying issues that we have experienced with GAT/GAX based software factories. In
      addition, they add some great features (some of them demonstrated in the <a href="http://www.codeplex.com/blueprints/Release/ProjectReleases.aspx?ReleaseId=18967">Sample
      Blueprint</a>) to the factory space like : 
   </p>
        <ul>
          <li>
         Multiple interacting Blueprints 
      </li>
          <li>
         Blueprint Composition 
      </li>
          <li>
         RSS based updates 
      </li>
          <li>
         WF-Process structured workflow 
      </li>
          <li>
         WF-Commands - workflows which can automation developer tasks within Visual Studio 
      </li>
          <li>
         Custom Menu Filters - allowing menus to appear when the conditions are right 
      </li>
          <li>
         Code generation using the T4 Template system 
      </li>
          <li>
         Custom extensions - assemblies which can interact with the user and Visual Studio 
      </li>
        </ul>
        <p>
      Details on Blueprints can be found in the ‘<a href="http://msdn.microsoft.com/nl-nl/architecture/library/dd179252.aspx">Introduction
      to Microsoft Blueprints</a>’ paper (link currently broken but will be fixed soon!)
      that can be downloaded from the <a href="http://msdn.microsoft.com/nl-nl/architecture/blueprints(en-us).aspx">Blueprints
      homepage</a> on MSDN. 
   </p>
        <p>
      More information, samples, screencasts on factory authoring, planning, etc. will be
      available in the coming period so you better make sure to get back to the <a href="http://www.codeplex.com/blueprints">Blueprints
      home</a> on Codeplex reguarly! (expect some info on this blog too ;))
   </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=d6910688-a36b-4c10-9709-2628aa756e18" />
      </body>
      <title>Blueprints October CTP released</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,d6910688-a36b-4c10-9709-2628aa756e18.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,d6910688-a36b-4c10-9709-2628aa756e18.aspx</link>
      <pubDate>Mon, 03 Nov 2008 23:04:16 GMT</pubDate>
      <description>&lt;p&gt;
   Those of you interested in software factories should check out the new &lt;a href="http://www.codeplex.com/blueprints/Release/ProjectReleases.aspx?ReleaseId=18965"&gt;Blueprints
   Manger&lt;/a&gt; and &lt;a href="http://www.codeplex.com/blueprints/Release/ProjectReleases.aspx?ReleaseId=18967"&gt;Sample
   Blueprint&lt;/a&gt; which were released on the &lt;a href="http://www.codeplex.com/blueprints"&gt;Blueprints
   Codeplex site&lt;/a&gt; right after PDC 2008. &lt;a href="http://blogs.msdn.com/jackgr/"&gt;Jack
   Greenfield&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/mglehman/"&gt;Michael Lehman&lt;/a&gt; hosted
   the ‘Blueprint booth’ at PDC 2008 where they demoed this latest release. Blueprints
   represent the next generation Software Factories and solve many of the authoring and
   deploying issues that we have experienced with GAT/GAX based software factories. In
   addition, they add some great features (some of them demonstrated in the &lt;a href="http://www.codeplex.com/blueprints/Release/ProjectReleases.aspx?ReleaseId=18967"&gt;Sample
   Blueprint&lt;/a&gt;) to the factory space like : 
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Multiple interacting Blueprints 
   &lt;li&gt;
      Blueprint Composition 
   &lt;li&gt;
      RSS based updates 
   &lt;li&gt;
      WF-Process structured workflow 
   &lt;li&gt;
      WF-Commands - workflows which can automation developer tasks within Visual Studio 
   &lt;li&gt;
      Custom Menu Filters - allowing menus to appear when the conditions are right 
   &lt;li&gt;
      Code generation using the T4 Template system 
   &lt;li&gt;
      Custom extensions - assemblies which can interact with the user and Visual Studio 
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Details on Blueprints can be found in the ‘&lt;a href="http://msdn.microsoft.com/nl-nl/architecture/library/dd179252.aspx"&gt;Introduction
   to Microsoft Blueprints&lt;/a&gt;’ paper (link currently broken but will be fixed soon!)
   that can be downloaded from the &lt;a href="http://msdn.microsoft.com/nl-nl/architecture/blueprints(en-us).aspx"&gt;Blueprints
   homepage&lt;/a&gt; on MSDN. 
&lt;/p&gt;
&lt;p&gt;
   More information, samples, screencasts on factory authoring, planning, etc. will be
   available in the coming period so you better make sure to get back to the &lt;a href="http://www.codeplex.com/blueprints"&gt;Blueprints
   home&lt;/a&gt; on Codeplex reguarly! (expect some info on this blog too ;))
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=d6910688-a36b-4c10-9709-2628aa756e18" /&gt;</description>
      <category>Software Factories;Blueprints</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=96588960-5dd7-44e9-ae10-adb51cb33793</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,96588960-5dd7-44e9-ae10-adb51cb33793.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font face="ver" size="2">Last week at PDC 2008, </font>
          <a href="http://msdn.microsoft.com/en-us/oslo/default.aspx">
            <font face="ver" size="2">OSLO</font>
          </a>
          <font face="ver" size="2"> was
      announced as the new platform for model driven development. </font>
          <a href="http://msdn.microsoft.com/en-us/oslo/default.aspx">
            <font face="ver" size="2">OSLO</font>
          </a>
          <font face="ver" size="2"> is
      composed of a language called ‘M’, a tool called ‘Quadrant’ and a repository. After
      the announcement of </font>
          <a href="http://msdn.microsoft.com/en-us/oslo/default.aspx">
            <font face="ver" size="2">OSLO</font>
          </a>
          <font face="ver" size="2"> I
      spoke to several people asking me my opinion about the difference and/or overlap between </font>
          <a href="http://msdn.microsoft.com/en-us/oslo/default.aspx">
            <font face="ver" size="2">OSLO</font>
          </a>
          <font face="ver" size="2"> and
      the Microsoft </font>
          <a href="http://msdn.microsoft.com/en-us/library/bb126235.aspx">
            <font face="ver" size="2">DSL
      Tools</font>
          </a>
          <font face="ver" size="2">, which is the current toolset for building
      visual DSL’s. Obviously, at that moment wasn’t very clear for a lot of people including
      me. After some more discussing and thinking I have things more clear: </font>
        </p>
        <p>
          <font face="ver" size="2">In the session of </font>
          <a href="http://douglaspurdy.com/">
            <font face="ver" size="2">Douglas
      Purdy</font>
          </a>
          <font face="ver" size="2"> and </font>
          <a href="http://www.vijaye.com/">
            <font face="ver" size="2">Vijaye
      Raji</font>
          </a>
          <font face="ver" size="2">, called ‘</font>
          <a href="http://channel9.msdn.com/pdc2008/TL23/">
            <font face="ver" size="2">A
      lap about OSLO</font>
          </a>
          <font face="ver" size="2">’, Douglas mentioned three types
      of modeling (models). First, we have ‘drawings’ which are primarily used to communicate
      with others. Perfect tools for creating drawings are whiteboard or tools like Visio.
      Second, we have ‘Model Assisted’ models which are used to understand or manipulate
      code (or other artifacts). Last, we have ‘model driven’ where models are directly
      executed by a runtime and drive runtime behavior of applications. </font>
        </p>
        <p>
          <font face="ver" size="2">Obviously, </font>
          <a href="http://msdn.microsoft.com/en-us/oslo/default.aspx">
            <font face="ver" size="2">OSLO</font>
          </a>
          <font face="ver" size="2"> is
      all about ‘Model Driven’ and driving runtime behavior. When looking at the new Team
      Architect (UML) diagrams in </font>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=922b4655-93d0-4476-bda4-94cf5f8d4814&amp;DisplayLang=en">
            <font face="ver" size="2">VS
      2010 CTP</font>
          </a>
          <font face="ver" size="2"> we can see that </font>
          <a href="http://msdn.microsoft.com/en-us/library/bb126235.aspx">
            <font face="ver" size="2">DSL
      Tools</font>
          </a>
          <font face="ver" size="2"> fit perfectly in the ‘Model Assisted’ world.
      All new diagrams in Team Architect are build on the </font>
          <a href="http://msdn.microsoft.com/en-us/library/bb126235.aspx">
            <font face="ver" size="2">DSL
      Tools</font>
          </a>
          <font face="ver" size="2"> and especially in combination with (future)
      technology, often referred to as ‘designer bus’, </font>
          <a href="http://msdn.microsoft.com/en-us/library/bb126235.aspx">
            <font face="ver" size="2">DSL
      Tools</font>
          </a>
          <font face="ver" size="2"> are very powerful in scenarios where artifact
      generation is involved. </font>
        </p>
        <p>
          <font face="ver" size="2">So, currently each platform supports a different approach.
      Possibly there are some overlaps and only Microsoft can tell how both platforms evolve,
      coexists and/or eventually (partially) integrate? </font>
        </p>
        <p>
          <font face="ver" size="2">In the meantime, I will start experimenting with </font>
          <a href="http://msdn.microsoft.com/en-us/oslo/default.aspx">
            <font face="ver" size="2">OSLO</font>
          </a>
          <font face="ver" size="2"> and
      definitely continue to work with the </font>
          <a href="http://msdn.microsoft.com/en-us/library/bb126235.aspx">
            <font face="ver" size="2">DSL
      Tools</font>
          </a>
          <font face="ver" size="2"> to get the best of both worlds!</font>
        </p>
        <p>
        </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=96588960-5dd7-44e9-ae10-adb51cb33793" />
      </body>
      <title>Another modeling platform</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,96588960-5dd7-44e9-ae10-adb51cb33793.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,96588960-5dd7-44e9-ae10-adb51cb33793.aspx</link>
      <pubDate>Sat, 01 Nov 2008 21:45:47 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font face=ver size=2&gt;Last week at PDC 2008, &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/oslo/default.aspx"&gt;&lt;font face=ver size=2&gt;OSLO&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt; was
   announced as the new platform for model driven development. &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/oslo/default.aspx"&gt;&lt;font face=ver size=2&gt;OSLO&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt; is
   composed of a language called ‘M’, a tool called ‘Quadrant’ and a repository. After
   the announcement of &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/oslo/default.aspx"&gt;&lt;font face=ver size=2&gt;OSLO&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt; I
   spoke to several people asking me my opinion about the difference and/or overlap between &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/oslo/default.aspx"&gt;&lt;font face=ver size=2&gt;OSLO&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt; and
   the Microsoft &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb126235.aspx"&gt;&lt;font face=ver size=2&gt;DSL
   Tools&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt;, which is the current toolset for building
   visual DSL’s. Obviously, at that moment wasn’t very clear for a lot of people including
   me. After some more discussing and thinking I have things more clear: &lt;/font&gt; 
&lt;p&gt;
   &lt;font face=ver size=2&gt;In the session of &lt;/font&gt;&lt;a href="http://douglaspurdy.com/"&gt;&lt;font face=ver size=2&gt;Douglas
   Purdy&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt; and &lt;/font&gt;&lt;a href="http://www.vijaye.com/"&gt;&lt;font face=ver size=2&gt;Vijaye
   Raji&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt;, called ‘&lt;/font&gt;&lt;a href="http://channel9.msdn.com/pdc2008/TL23/"&gt;&lt;font face=ver size=2&gt;A
   lap about OSLO&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt;’, Douglas mentioned three types of
   modeling (models). First, we have ‘drawings’ which are primarily used to communicate
   with others. Perfect tools for creating drawings are whiteboard or tools like Visio.
   Second, we have ‘Model Assisted’ models which are used to understand or manipulate
   code (or other artifacts). Last, we have ‘model driven’ where models are directly
   executed by a runtime and drive runtime behavior of applications. &lt;/font&gt; 
&lt;p&gt;
   &lt;font face=ver size=2&gt;Obviously, &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/oslo/default.aspx"&gt;&lt;font face=ver size=2&gt;OSLO&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt; is
   all about ‘Model Driven’ and driving runtime behavior. When looking at the new Team
   Architect (UML) diagrams in &lt;/font&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=922b4655-93d0-4476-bda4-94cf5f8d4814&amp;amp;DisplayLang=en"&gt;&lt;font face=ver size=2&gt;VS
   2010 CTP&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt; we can see that &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb126235.aspx"&gt;&lt;font face=ver size=2&gt;DSL
   Tools&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt; fit perfectly in the ‘Model Assisted’ world.
   All new diagrams in Team Architect are build on the &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb126235.aspx"&gt;&lt;font face=ver size=2&gt;DSL
   Tools&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt; and especially in combination with (future)
   technology, often referred to as ‘designer bus’, &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb126235.aspx"&gt;&lt;font face=ver size=2&gt;DSL
   Tools&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt; are very powerful in scenarios where artifact
   generation is involved. &lt;/font&gt; 
&lt;p&gt;
   &lt;font face=ver size=2&gt;So, currently each platform supports a different approach. Possibly
   there are some overlaps and only Microsoft can tell how both platforms evolve, coexists
   and/or eventually (partially) integrate? &lt;/font&gt; 
&lt;p&gt;
   &lt;font face=ver size=2&gt;In the meantime, I will start experimenting with &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/oslo/default.aspx"&gt;&lt;font face=ver size=2&gt;OSLO&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt; and
   definitely continue to work with the &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb126235.aspx"&gt;&lt;font face=ver size=2&gt;DSL
   Tools&lt;/font&gt;&lt;/a&gt;&lt;font face=ver size=2&gt; to get the best of both worlds!&lt;/font&gt; 
&lt;p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=96588960-5dd7-44e9-ae10-adb51cb33793" /&gt;</description>
      <category>DSL Tools;OSLO;Software Factories</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=d2a2c627-e7f0-43f3-b870-cf02afcec3ef</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,d2a2c627-e7f0-43f3-b870-cf02afcec3ef.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.codeplex.com/wssfcontrib">
            <font face="ver" size="2">Service Factory
      Contrib Project</font>
          </a>
          <font face="ver" size="2"> is live! Yesterday, </font>
          <a href="http://blogs.msdn.com/donsmith/">
            <font face="ver" size="2">Don
      Smith</font>
          </a>
          <font face="ver" size="2"> published the site that will (hopefully)
      soon host a lot of community extensions for Service Factory. </font>
          <a href="http://weblogs.asp.net/hernandl/">
            <font face="ver" size="2">Hernan
      de Lahitte</font>
          </a>
          <font face="ver" size="2"> already contributed the long waited
      for "Import from WSDL" feature and I donated a version of Service Factory that includes
      VB.NET code generation from your models. </font>
        </p>
        <p>
          <font face="ver" size="2">I will upload some other extensions in the coming days but
      for now, if you have anything to share, please read all </font>
          <a href="http://www.codeplex.com/wssfcontrib/Wiki/View.aspx?title=About&amp;referringTitle=Home">
            <font face="ver" size="2">about
      p&amp;p contrib projects</font>
          </a>
          <font face="ver" size="2">, follow the </font>
          <a href="http://www.codeplex.com/wssfcontrib/Wiki/View.aspx?title=SignUp&amp;referringTitle=Home">
            <font face="ver" size="2">sign
      up process</font>
          </a>
          <font face="ver" size="2"> and we will make sure you can publish
      your contribution soon. </font>
        </p>
        <p>
          <font face="ver" size="2"> </font>
        </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=d2a2c627-e7f0-43f3-b870-cf02afcec3ef" />
      </body>
      <title>Service Factory Contrib Project</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,d2a2c627-e7f0-43f3-b870-cf02afcec3ef.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,d2a2c627-e7f0-43f3-b870-cf02afcec3ef.aspx</link>
      <pubDate>Thu, 24 Jul 2008 20:41:45 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;a href="http://www.codeplex.com/wssfcontrib"&gt;&lt;font face="ver" size="2"&gt;Service Factory
   Contrib Project&lt;/font&gt;&lt;/a&gt;&lt;font face="ver" size="2"&gt; is live! Yesterday, &lt;/font&gt;&lt;a href="http://blogs.msdn.com/donsmith/"&gt;&lt;font face="ver" size="2"&gt;Don
   Smith&lt;/font&gt;&lt;/a&gt;&lt;font face="ver" size="2"&gt; published the site that will (hopefully)
   soon host a lot of community extensions for Service Factory. &lt;/font&gt;&lt;a href="http://weblogs.asp.net/hernandl/"&gt;&lt;font face="ver" size="2"&gt;Hernan
   de Lahitte&lt;/font&gt;&lt;/a&gt;&lt;font face="ver" size="2"&gt; already contributed the long waited
   for "Import from WSDL" feature and I donated a version of Service Factory that includes
   VB.NET code generation from your models. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="ver" size="2"&gt;I will upload some other extensions in the coming days but
   for now, if you have anything to share, please read all &lt;/font&gt;&lt;a href="http://www.codeplex.com/wssfcontrib/Wiki/View.aspx?title=About&amp;amp;referringTitle=Home"&gt;&lt;font face="ver" size="2"&gt;about
   p&amp;amp;p contrib projects&lt;/font&gt;&lt;/a&gt;&lt;font face="ver" size="2"&gt;, follow the &lt;/font&gt;&lt;a href="http://www.codeplex.com/wssfcontrib/Wiki/View.aspx?title=SignUp&amp;amp;referringTitle=Home"&gt;&lt;font face="ver" size="2"&gt;sign
   up process&lt;/font&gt;&lt;/a&gt;&lt;font face="ver" size="2"&gt; and we will make sure you can publish
   your contribution soon. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="ver" size="2"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=d2a2c627-e7f0-43f3-b870-cf02afcec3ef" /&gt;</description>
      <category>Service Factory;Software Factories</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=e8c884dd-0bca-41db-bf11-255c34c27511</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,e8c884dd-0bca-41db-bf11-255c34c27511.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font face="v" size="2">For those of you who have been wondering what is happening
      with Software Factories lately, have a look (and subscribe) at the new </font>
          <a href="http://blogs.msdn.com/softwarefactories/">
            <font face="v" size="2">team
      blog for Software Factories</font>
          </a>
          <font face="v" size="2">. In </font>
          <a href="http://blogs.msdn.com/softwarefactories/archive/2008/05/26/software-factories-2-0.aspx">
            <font face="v" size="2">this
      post</font>
          </a>
          <font face="v" size="2">, </font>
          <a href="http://blogs.msdn.com/jackgr/">
            <font face="v" size="2">Jack
      Greenfield</font>
          </a>
          <font face="v" size="2"> outlines the plans the team has to move
      the Software Factory Initiative forward. Also </font>
          <a href="http://blogs.msdn.com/jezzsa/default.aspx">
            <font face="v" size="2">Jezz</font>
          </a>
          <font face="v" size="2"> announced </font>
          <a href="http://blogs.msdn.com/jezzsa/archive/2008/05/30/we-re-back.aspx">
            <font face="v" size="2">to
      be back</font>
          </a>
          <font face="v" size="2"> and promised to post a bit more (I really
      should do the same...).</font>
        </p>
        <p>
          <font face="v" size="2">So, great news for everybody interested in adopting Software
      Factories! (in the 'near' future)</font>
        </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=e8c884dd-0bca-41db-bf11-255c34c27511" />
      </body>
      <title>Software Factories 2.0</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,e8c884dd-0bca-41db-bf11-255c34c27511.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,e8c884dd-0bca-41db-bf11-255c34c27511.aspx</link>
      <pubDate>Sat, 31 May 2008 21:34:23 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font face="v" size="2"&gt;For those of you who have been wondering what is happening
   with Software Factories lately, have a look (and subscribe) at the new &lt;/font&gt;&lt;a href="http://blogs.msdn.com/softwarefactories/"&gt;&lt;font face="v" size="2"&gt;team
   blog for Software Factories&lt;/font&gt;&lt;/a&gt;&lt;font face="v" size="2"&gt;. In &lt;/font&gt;&lt;a href="http://blogs.msdn.com/softwarefactories/archive/2008/05/26/software-factories-2-0.aspx"&gt;&lt;font face="v" size="2"&gt;this
   post&lt;/font&gt;&lt;/a&gt;&lt;font face="v" size="2"&gt;, &lt;/font&gt;&lt;a href="http://blogs.msdn.com/jackgr/"&gt;&lt;font face="v" size="2"&gt;Jack
   Greenfield&lt;/font&gt;&lt;/a&gt;&lt;font face="v" size="2"&gt; outlines the plans the team has to move
   the Software Factory Initiative forward. Also &lt;/font&gt;&lt;a href="http://blogs.msdn.com/jezzsa/default.aspx"&gt;&lt;font face="v" size="2"&gt;Jezz&lt;/font&gt;&lt;/a&gt;&lt;font face="v" size="2"&gt; announced &lt;/font&gt;&lt;a href="http://blogs.msdn.com/jezzsa/archive/2008/05/30/we-re-back.aspx"&gt;&lt;font face="v" size="2"&gt;to
   be back&lt;/font&gt;&lt;/a&gt;&lt;font face="v" size="2"&gt; and promised to post a bit more (I really
   should do the same...).&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="v" size="2"&gt;So, great news for everybody interested in adopting Software
   Factories! (in the 'near' future)&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=e8c884dd-0bca-41db-bf11-255c34c27511" /&gt;</description>
      <category>Software Factories</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=cf90fd21-50bb-4ae7-92cf-084f398d5529</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,cf90fd21-50bb-4ae7-92cf-084f398d5529.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      I just received an email of somebody who got stuck trying to follow the steps I described
      in <a href="http://www.edwardbakker.nl/PermaLink,guid,bf9c3dc3-501e-4f1a-b178-de01f10ea070.aspx">this
      previous post</a>. In this post I explained how to write a "VSServiceManager" (ExampleLanguageDesignerServiceManager)
      and register it in the Software Factory Schema file. However, when trying this example
      in the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=65d0e3bd-9df3-421a-804f-8f01bd90f0b4&amp;displaylang=en&amp;tm">Rosario
      April CTP</a> you will notice that the "Software Factory Runtime" dlls are no longer
      there (no further comments on that...). The good news is that Backplane is still available
      and we can also register our VSServiceManager with Backplane by adding the following
      snippet to the "Backplane.config" file (PrivateAssemblies folder). 
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP5_DEF6/backplane.jpg">
            <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="213" alt="backplane" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP5_DEF6/backplane_thumb.jpg" width="823" border="0" />
          </a>
        </p>
        <p>
      I got a few other backplane related questions so I decided to clean up some of my
      experimental code and make that available for download (together with a few posts
      to provide some more details). Expect something in the coming days?!
   </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=cf90fd21-50bb-4ae7-92cf-084f398d5529" />
      </body>
      <title>Software Factories in Rosario CTP (5)</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,cf90fd21-50bb-4ae7-92cf-084f398d5529.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,cf90fd21-50bb-4ae7-92cf-084f398d5529.aspx</link>
      <pubDate>Mon, 05 May 2008 14:06:14 GMT</pubDate>
      <description>&lt;p&gt;
   I just received an email of somebody who got stuck trying to follow the steps I described
   in &lt;a href="http://www.edwardbakker.nl/PermaLink,guid,bf9c3dc3-501e-4f1a-b178-de01f10ea070.aspx"&gt;this
   previous post&lt;/a&gt;. In this post I explained how to write a "VSServiceManager" (ExampleLanguageDesignerServiceManager)
   and register it in the Software Factory Schema file. However, when trying this example
   in the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=65d0e3bd-9df3-421a-804f-8f01bd90f0b4&amp;amp;displaylang=en&amp;amp;tm"&gt;Rosario
   April CTP&lt;/a&gt; you will notice that the "Software Factory Runtime" dlls are no longer
   there (no further comments on that...). The good news is that Backplane is still available
   and we can also register our VSServiceManager with Backplane by adding the following
   snippet to the "Backplane.config" file (PrivateAssemblies folder). 
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP5_DEF6/backplane.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=213 alt=backplane src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP5_DEF6/backplane_thumb.jpg" width=823 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   I got a few other backplane related questions so I decided to clean up some of my
   experimental code and make that available for download (together with a few posts
   to provide some more details). Expect something in the coming days?!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=cf90fd21-50bb-4ae7-92cf-084f398d5529" /&gt;</description>
      <category>DesignerBus;Software Factories</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=bf9c3dc3-501e-4f1a-b178-de01f10ea070</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,bf9c3dc3-501e-4f1a-b178-de01f10ea070.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font face="Verdana" size="2">In a </font>
          <a href="http://www.edwardbakker.nl/PermaLink,guid,13941c1e-4dfe-4d33-8e14-618580b65d37.aspx">
            <font face="Verdana" size="2">previous
      post</font>
          </a>
          <font face="Verdana" size="2"> I quickly mentioned the conceptual "Designer
      Bus" which is currently represented by "Backplane" in the Microsoft.VisualStudio.ToolIntegration.Backplane.dll"
      assembly. I stated we can use Backplane to "maintain" all kind of references between
      objects, model elements, designers, tool windows, etc. In this post we will dive a
      little deeper to see how we can use Backplane to get a reference to a  model
      element in a Domain Specific Language. </font>
        </p>
        <p>
          <font face="Verdana" size="2">Anyone familiar with Domain Specific Languages (DSl
      Tools) probably also heard of the </font>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=BFBA74AF-4F28-44CC-8DE5-0C3C55D21863&amp;displaylang=en">
            <font face="Verdana" size="2">Designer
      Integration Powertoy</font>
          </a>
          <font face="Verdana" size="2"> (DIS). DIS can be used
      to create (and resolve) references between model elements withing or accross languages.
      Unfortunately the solution that DIS is offering is pretty limited. Hopefully Backplane
      will do a better job! </font>
        </p>
        <p>
          <font face="Verdana" size="2">Here is high level overview of the steps I took to "investigate"
      this. </font>
        </p>
        <p>
          <font face="Verdana" size="2">First I used the Microsoft DSL Tools to created a simple
      Domain Specific Language called "ExampleLanguage" which is based on the "Minimal Language"
      template. As you can see in the screenshot below this is really simple DSL but enough
      for this test.</font>  
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/ExampleLanguage.jpg">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="308" alt="ExampleLanguage" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/ExampleLanguage_thumb.jpg" width="817" border="0" />
          </a>  
   </p>
        <p>
       <font face="Verdana" size="2">Second, I created a class called "ExampleLanguageDesignerServiceManager"
      that inherits from "VSServiceManager" (Microsoft.VisualStudio.ToolIntegration.Backplane.VSHost.dll).
      Below you can see what this class looks like.</font>  
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/ServiceManager.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="ServiceManager" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/ServiceManager_thumb.png" width="815" border="0" />
          </a>
        </p>
        <p>
          <strong>
            <font face="Verdana" size="2">(note: "ReferencedDataContracts" and "ServiceContract"
      have nothing to do with the concepts we know from for example WCF)</font>
          </strong>
        </p>
        <p>
          <font face="Verdana" size="2">The only important thing to remember from this class
      (for now) is the "CreateService" method that returns a "ExampleLanguageDesignerService"
      that is displayed below. This class inherits from VSService (Microsoft.VisualStudio.ToolIntegration.Backplane.VSHost.dll)
      and basically wraps my "ExampleLanguage" DSL. For example, you can see it has a (private)
      property for the "Diagram", "DocData" and "ExampleModel" which is the root of my DSL.
      (It does have a lot more butI skipped that in this screenshot.)</font>  
   </p>
        <p>
       <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/DesignerService.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="491" alt="DesignerService" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/DesignerService_thumb.png" width="939" border="0" /></a></p>
        <p>
       <font face="Verdana" size="2">An interesting method in the "ExampleLanguageDesignerService"
      class is the "GetExampleModelElements" method which returns a ReadOnlyCollection of
      "ReferencedExampleElement". As you can see in the screenshot of the DSL defintion
      above, "ReferencedExampleElement" isn't part of the "ExampleLanguage" DSL so, where
      does this come from? </font></p>
        <p>
          <font face="Verdana" size="2">Backplane introduces the "ReferencedObject" class (Microsoft.VisualStudio.ToolIntegration.Backplane.dll)
      that represents an object with the capability of "being referrenced". One of the properties
      of "ReferencedObject" is "Reference" that holds the "location" where Backplane can
      find the object. What I did is, I created a "ReferencedExampleElement" class (screenshot
      below) that inherits from "ReferencedObject" and "wraps" the "ExampleElement" class
      from the DSL. The "GetExampleModelElements" method in the "ExampleLanguageDesignerService"
      loops through all elements in the DSL, wraps them in a "ReferencedExampleElement",
      adds them to a collection and returns the collection. </font> 
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/ReferencedExampleElement.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="402" alt="ReferencedExampleElement" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/ReferencedExampleElement_thumb.png" width="780" border="0" />
          </a>
        </p>
        <p>
       <strong><font face="Verdana" size="2">(Note: anyone interested in the source
      code that is needed to actually implement the above mentioned classes, have a look
      at "Microsoft.VisualStudio.TeamArchitect.LogicaClassDesigner.ToolAdapter.dll". This
      assembly contains similar classes that will help you understand the details.)</font></strong></p>
        <p>
          <font face="Verdana" size="2">The next thing I did is I made sure the above mentioned
      classes get loaded by Visual Studio. To do this I included the above mentioned "ExampleLanguageDesignerManager"
      in one of my test factories called  "MyFirstRosarioFactory". The screenshot below
      shows the Software Factory Schema for this factory.</font>
        </p>
        <p>
       
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/Schema.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="405" alt="Schema" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/Schema_thumb.png" width="842" border="0" />
          </a>
        </p>
        <p>
       <font face="Verdana" size="2">As we can see I defined the "ExampleLanguage"
      viewpoint and registered the "ExampleLanguageDesignerManager" which ensures at some
      point it gets loaded by the "Software Factory Runtime". In the following code example
      (that I implemented in a command in my factory) we can see I am using Backplane to
      get a reference to the "ExampleLanguageDesignerServiceManager". After that we can
      use the "ExampleLanguageDesignerServiceManager" to create an instance of the "ExampleLanguageDesignerService".
      Then we can use the "ExampleLanguageDesignerService" to get all elements (ReferencedExampleElement)
      from a specific dsl model (without using DIS!)</font></p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/Code2.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="146" alt="Code2" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/Code2_thumb.png" width="1171" border="0" />
          </a>
        </p>
        <p>
          <strong>
          </strong> <font size="2"><font face="Verdana"><strong>(note: some code
      is missing in the above screenshot. for example, we have to define a "scope" to define
      the solution, project, item, etc. where we are interacting with)</strong> </font></font></p>
        <p>
          <font face="Verdana" size="2">I already mentioned my "ReferencedExampleElement" class
      inherits from the "ReferencedObject" class implemented in Backplane. This "ReferencedObject"
      object has a property called "Reference". When running the above code in debug mode
      I can see that the "Reference" property of "MyElement" (code snippet above) has a
      value of </font>
        </p>
        <blockquote>
          <p>
            <strong>
              <em>
                <font face="Verdana" size="2">"backplane://C:\\Dev\\MyFirstFactory\\MyFirstRosarioFactory1.pdef/MyCompany.ExampleLanguageToolAdapter.ExampleLanguageDesignerServiceManager/9d375fb7-bccd-4d03-a6ec-20340517d360\\MyModel.mydsl/6568ccec-604f-40c3-b143-9962a0901807""</font>
              </em>
            </strong>
          </p>
          <p>
            <strong>
              <em>
                <font face="Verdana" size="2">
                </font>
              </em>
            </strong> 
   </p>
        </blockquote>
        <p>
          <font face="Verdana" size="2">The cool thing of Backplane is that once we know the
      "Reference" of an object we can ask Backplane to resolve it for us with code that
      looks like:</font>
        </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/Code3.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="42" alt="Code3" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/Code3_thumb.png" width="768" border="0" />
          </a>
        </p>
        <p>
          <font face="Verdana" size="2"> </font>
        </p>
        <p>
          <font face="Verdana" size="2">To be continued...</font>
        </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=bf9c3dc3-501e-4f1a-b178-de01f10ea070" />
      </body>
      <title>Software Factories in Rosario CTP (4)</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,bf9c3dc3-501e-4f1a-b178-de01f10ea070.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,bf9c3dc3-501e-4f1a-b178-de01f10ea070.aspx</link>
      <pubDate>Sat, 29 Mar 2008 22:41:18 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;In a &lt;/font&gt;&lt;a href="http://www.edwardbakker.nl/PermaLink,guid,13941c1e-4dfe-4d33-8e14-618580b65d37.aspx"&gt;&lt;font face="Verdana" size="2"&gt;previous
   post&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; I quickly mentioned the conceptual "Designer
   Bus" which is currently represented by "Backplane" in the Microsoft.VisualStudio.ToolIntegration.Backplane.dll"
   assembly. I stated we can use Backplane to "maintain" all kind of references between
   objects, model elements, designers, tool windows, etc. In this post we will dive a
   little deeper to see how we can use Backplane to get a reference to a&amp;nbsp; model
   element in a Domain Specific Language. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;Anyone familiar with Domain Specific Languages (DSl
   Tools) probably also heard of the &lt;/font&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=BFBA74AF-4F28-44CC-8DE5-0C3C55D21863&amp;amp;displaylang=en"&gt;&lt;font face="Verdana" size="2"&gt;Designer
   Integration Powertoy&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; (DIS). DIS can be used
   to create (and resolve) references between model elements withing or accross languages.
   Unfortunately the solution that DIS is offering is pretty limited. Hopefully Backplane
   will do a better job! &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;Here is high level overview of the steps I took to "investigate"
   this. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;First I used the Microsoft DSL Tools to created a simple
   Domain Specific Language called "ExampleLanguage" which is based on the "Minimal Language"
   template. As you can see in the screenshot below this is really simple DSL but enough
   for this test.&lt;/font&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/ExampleLanguage.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="308" alt="ExampleLanguage" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/ExampleLanguage_thumb.jpg" width="817" border="0"&gt;&lt;/a&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;&lt;font face="Verdana" size="2"&gt;Second, I created a class called "ExampleLanguageDesignerServiceManager"
   that inherits from "VSServiceManager" (Microsoft.VisualStudio.ToolIntegration.Backplane.VSHost.dll).
   Below you can see what this class looks like.&lt;/font&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/ServiceManager.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="ServiceManager" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/ServiceManager_thumb.png" width="815" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;font face="Verdana" size="2"&gt;(note: "ReferencedDataContracts" and "ServiceContract"
   have nothing to do with the concepts we know from for example WCF)&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;The only important thing to remember from this class
   (for now) is the "CreateService" method that returns a "ExampleLanguageDesignerService"
   that is displayed below. This class inherits from VSService (Microsoft.VisualStudio.ToolIntegration.Backplane.VSHost.dll)
   and basically wraps my "ExampleLanguage" DSL. For example, you can see it has a (private)
   property for the "Diagram", "DocData" and "ExampleModel" which is the root of my DSL.
   (It does have a lot more butI skipped that in this screenshot.)&lt;/font&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;&lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/DesignerService.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="491" alt="DesignerService" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/DesignerService_thumb.png" width="939" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;&lt;font face="Verdana" size="2"&gt;An interesting method in the "ExampleLanguageDesignerService"
   class is the "GetExampleModelElements" method which returns a ReadOnlyCollection of
   "ReferencedExampleElement". As you can see in the screenshot of the DSL defintion
   above, "ReferencedExampleElement" isn't part of the "ExampleLanguage" DSL so, where
   does this come from? &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;Backplane introduces the "ReferencedObject" class (Microsoft.VisualStudio.ToolIntegration.Backplane.dll)
   that represents an object with the capability of "being referrenced". One of the properties
   of "ReferencedObject" is "Reference" that holds the "location" where Backplane can
   find the object. What I did is, I created a "ReferencedExampleElement" class (screenshot
   below) that inherits from "ReferencedObject" and "wraps" the "ExampleElement" class
   from the DSL. The "GetExampleModelElements" method in the "ExampleLanguageDesignerService"
   loops through all elements in the DSL, wraps them in a "ReferencedExampleElement",
   adds them to a collection and returns the collection. &lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/ReferencedExampleElement.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="402" alt="ReferencedExampleElement" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/ReferencedExampleElement_thumb.png" width="780" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;(Note: anyone interested in the source
   code that is needed to actually implement the above mentioned classes, have a look
   at "Microsoft.VisualStudio.TeamArchitect.LogicaClassDesigner.ToolAdapter.dll". This
   assembly contains similar classes that will help you understand the details.)&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;The next thing I did is I made sure the above mentioned
   classes get loaded by Visual Studio. To do this I included the above mentioned "ExampleLanguageDesignerManager"
   in one of my test factories called&amp;nbsp; "MyFirstRosarioFactory". The screenshot below
   shows the Software Factory Schema for this factory.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/Schema.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="405" alt="Schema" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/Schema_thumb.png" width="842" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;&lt;font face="Verdana" size="2"&gt;As we can see I defined the "ExampleLanguage"
   viewpoint and registered the "ExampleLanguageDesignerManager" which ensures at some
   point it gets loaded by the "Software Factory Runtime". In the following code example
   (that I implemented in a command in my factory) we can see I am using Backplane to
   get a reference to the "ExampleLanguageDesignerServiceManager". After that we can
   use the "ExampleLanguageDesignerServiceManager" to create an instance of the "ExampleLanguageDesignerService".
   Then we can use the "ExampleLanguageDesignerService" to get all elements (ReferencedExampleElement)
   from a specific dsl model (without using DIS!)&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/Code2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="146" alt="Code2" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/Code2_thumb.png" width="1171" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;strong&gt;(note: some code
   is missing in the above screenshot. for example, we have to define a "scope" to define
   the solution, project, item, etc. where we are interacting with)&lt;/strong&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;I already mentioned my "ReferencedExampleElement" class
   inherits from the "ReferencedObject" class implemented in Backplane. This "ReferencedObject"
   object has a property called "Reference". When running the above code in debug mode
   I can see that the "Reference" property of "MyElement" (code snippet above) has a
   value of &lt;/font&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
   &lt;strong&gt;&lt;em&gt;&lt;font face="Verdana" size="2"&gt;"backplane://C:\\Dev\\MyFirstFactory\\MyFirstRosarioFactory1.pdef/MyCompany.ExampleLanguageToolAdapter.ExampleLanguageDesignerServiceManager/9d375fb7-bccd-4d03-a6ec-20340517d360\\MyModel.mydsl/6568ccec-604f-40c3-b143-9962a0901807""&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;&lt;em&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;The cool thing of Backplane is that once we know the
   "Reference" of an object we can ask Backplane to resolve it for us with code that
   looks like:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/Code3.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="42" alt="Code3" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP_12DF5/Code3_thumb.png" width="768" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;To be continued...&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=bf9c3dc3-501e-4f1a-b178-de01f10ea070" /&gt;</description>
      <category>Software Factories</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=13941c1e-4dfe-4d33-8e14-618580b65d37</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,13941c1e-4dfe-4d33-8e14-618580b65d37.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font face="Verdana" size="2">In a </font>
          <a href="http://www.edwardbakker.nl/PermaLink,guid,9da56680-9ab0-414d-bee4-c1ad1d8aa46a.aspx">
            <font face="Verdana" size="2">previous
      post</font>
          </a>
          <font face="Verdana" size="2"> we mentioned the existence of a "Software
      Factory Schema" file for an installed factory in our Rosario CTP. We now know, at
      some point, a "Factory" instance is created from this file that holds all the information
      that is stored in this schema file. Let's have another look at the software factory
      schema file of Service Factory to see if we can learn something more from this. </font>
          <font face="Verdana" size="2"> </font>
        </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/Schema.jpg">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="461" alt="Schema" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/Schema_thumb.jpg" width="1069" border="0" />
          </a> <font face="Verdana" size="2"> </font></p>
        <p>
          <font face="Verdana" size="2">One of the things to notice in this schema file is a
      viewpoint that is called "ServiceRootViewPoint". This viewpoint is the so called "root
      viewpoint" for this software factory. We can also see that there is another viewpoint
      within this root viewpoint that is called "ServiceContractDesignerViewpoint". As we
      can see, the root viewpoint holds a "Command" (ServiceRootCreationCommand) that contains
      a "CommandType" and a "CommandImplementationType. In this case both are implemented
      in the "Microsoft.Practices.ServiceFactory.Commands.dll" that we can find in the "InstallDir"
      (C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies) of this
      factory. </font>
        </p>
        <p>
          <font face="Verdana" size="2">So, where do we need this CommandType and CommandImplementationType
      for? In a previous post, we have seen that when we executed the "CreateProduct" in
      the Application Explorer </font>
          <font face="Verdana" size="2"> </font>
        </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/ApplicationExplorer.png">
            <font face="Verdana" size="2">
              <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/ApplicationExplorer.png">
                <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="147" alt="ApplicationExplorer" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/ApplicationExplorer_thumb.png" width="411" border="0" />
              </a>
            </font> 
      </a>
        </p>
        <p>
          <font face="Verdana" size="2">it popped up a dialog where we could select the software
      factory where wanted to create a product from.</font> 
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/factory.png">
            <font face="Verdana" size="2">
              <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/factory.png">
                <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="233" alt="factory" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/factory_thumb.png" width="413" border="0" />
              </a>
            </font> 
      </a>
        </p>
        <p>
          <font face="Verdana" size="2">When we select a software factory in this window and
      hit OK, the ApplicationExplorer (and some helpers) retrieves the root viewpoint of
      the software factory and finds the Command that is associated with this. At that point
      the Command,implemented as a "FactoryCommand" is transformed into a more general "Command"
      that is implemented in "<strong>Microsoft.VisualStudio.ToolIntegration.Backplane.dll</strong>".</font>
        </p>
        <p>
          <font face="Verdana" size="2">This is actually *very* interesting because this assembly
      implements a concept that is sometimes referred to as the "DesignerBus" (it is called
      Backplane at this moment) which hopefully makes it possible to, for example, implement
      references between models, references between models and designers, toolwindows, get
      a reference to a Service in VS.NET,etc.  It can actually be used to glue everything
      together ;) Anyone familiar with the DSL Tools knows that at this moment we only have <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=BFBA74AF-4F28-44CC-8DE5-0C3C55D21863&amp;displaylang=en">DIS</a> to
      create references between models and only in a very limited way. Maybe Backplane can
      help here! (More on this very exiting stuff in another post). </font>
        </p>
        <p>
          <font face="Verdana" size="2">Let's continue with our Command... After the FactoryCommand
      is "converted" into a general command it gets executed. Below we can see a code snippet
      from the "Execute" method of the "ServiceRootCreateCommandImplementation" from the
      root viewpoint of Service Factory. The code might look funny to you but this is just
      because it is produced by reflector and not by me ;) You can see that "Backplane"
      is used here to get a reference to the "RecipeManager" and "DTE". Perfect!</font>
          <font face="Verdana" size="2"> </font>
        </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/code.jpg">
            <font face="Verdana" size="2">
              <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/code.jpg">
                <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="162" alt="code" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/code_thumb.jpg" width="626" border="0" />
              </a>
            </font> 
      </a>
        </p>
        <p>
          <font face="Verdana" size="2">What we can also see is that basically all that happens
      here is, get a reference to the a Guidance Package and unfold a template (model.vstempate)
      to set the initial structure of our Service Factory solution. Please note that "model.vstemplate"
      is just a normal  .vstemplate that is located in the source tree of Service Factory
      (C:\Program Files\Microsoft Service Factory V3). This means, in Rosario CTP we can
      create command, hook it up to the root viewpoint of our software factory and Application
      Explorer makes sure it gets executed to set, for example, the initial structure for
      the product we are building in our factory. From there on, all "normal" (old) Service
      Factory V3 recipes should work as expected! (Decide for yourself if that is good or
      bad news)</font>
        </p>
        <p>
          <font face="Verdana" size="2">Below you can see what Application Explorer looks like
      after we executed the "Create Product" and selected the "Web Service Software Factory"
      in the "New Product" dialog. Also note the "ServiceContractDesignerViewPoint" folder
      that we have seen in the software factory schema above. </font> 
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/AppExpl.jpg">
            <font face="Verdana" size="2">
              <a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/AppExpl.jpg">
                <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="264" alt="AppExpl" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/AppExpl_thumb.jpg" width="310" border="0" />
              </a>
            </font> 
      </a>
        </p>
        <p>
          <font face="Verdana" size="2">Solution Explorer looks like this. <font face="Verdana" size="2">Note
      the .pdef files! (More on that later)</font></font>
        </p>
        <p>
       <font face="Verdana" size="2"><a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/SolutionExplorer.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="327" alt="SolutionExplorer" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/SolutionExplorer_thumb.jpg" width="445" border="0" /></a></font><font face="Verdana" size="2"> </font></p>
        <p>
          <font face="Verdana" size="2">
          </font> 
   </p>
        <p>
          <font face="Verdana" size="2">To be continued...</font>
        </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=13941c1e-4dfe-4d33-8e14-618580b65d37" />
      </body>
      <title>Software Factories in Rosario CTP (3)</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,13941c1e-4dfe-4d33-8e14-618580b65d37.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,13941c1e-4dfe-4d33-8e14-618580b65d37.aspx</link>
      <pubDate>Mon, 03 Mar 2008 15:38:52 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;In a &lt;/font&gt;&lt;a href="http://www.edwardbakker.nl/PermaLink,guid,9da56680-9ab0-414d-bee4-c1ad1d8aa46a.aspx"&gt;&lt;font face="Verdana" size="2"&gt;previous
   post&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; we mentioned the existence of a "Software
   Factory Schema" file for an installed factory in our Rosario CTP. We now know, at
   some point, a "Factory" instance is created from this file that holds all the information
   that is stored in this schema file. Let's have another look at the software factory
   schema file of Service Factory to see if we can learn something more from this. &lt;/font&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/Schema.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="461" alt="Schema" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/Schema_thumb.jpg" width="1069" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;One of the things to notice in this schema file is a
   viewpoint that is called "ServiceRootViewPoint". This viewpoint is the so called "root
   viewpoint" for this software factory. We can also see that there is another viewpoint
   within this root viewpoint that is called "ServiceContractDesignerViewpoint". As we
   can see, the root viewpoint holds a "Command" (ServiceRootCreationCommand) that contains
   a "CommandType" and a "CommandImplementationType. In this case both are implemented
   in the "Microsoft.Practices.ServiceFactory.Commands.dll" that we can find in the "InstallDir"
   (C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies) of this
   factory. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;So, where do we need this CommandType and CommandImplementationType
   for? In a previous post, we have seen that when we executed the "CreateProduct" in
   the Application Explorer &lt;/font&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/ApplicationExplorer.png"&gt;&lt;font face="Verdana" size="2"&gt;&lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/ApplicationExplorer.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="147" alt="ApplicationExplorer" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/ApplicationExplorer_thumb.png" width="411" border="0"&gt;&lt;/a&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;it popped up a dialog where we could select the software
   factory where wanted to create a product from.&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/factory.png"&gt;&lt;font face="Verdana" size="2"&gt;&lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/factory.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="233" alt="factory" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/factory_thumb.png" width="413" border="0"&gt;&lt;/a&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;When we select a software factory in this window and
   hit OK, the ApplicationExplorer (and some helpers) retrieves the root viewpoint of
   the software factory and finds the Command that is associated with this. At that point
   the Command,implemented as a "FactoryCommand" is transformed into a more general "Command"
   that is implemented in "&lt;strong&gt;Microsoft.VisualStudio.ToolIntegration.Backplane.dll&lt;/strong&gt;".&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;This is actually *very* interesting because this assembly
   implements a concept that is sometimes referred to as the "DesignerBus" (it is called
   Backplane at this moment) which hopefully makes it possible to, for example, implement
   references between models, references between models and designers, toolwindows, get
   a reference to a Service in VS.NET,etc.&amp;nbsp; It can actually be used to glue everything
   together ;) Anyone familiar with the DSL Tools knows that at this moment we only have &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=BFBA74AF-4F28-44CC-8DE5-0C3C55D21863&amp;amp;displaylang=en"&gt;DIS&lt;/a&gt; to
   create references between models and only in a very limited way. Maybe Backplane can
   help here! (More on this very exiting stuff in another post). &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;Let's continue with our Command... After the FactoryCommand
   is "converted" into a general command it gets executed. Below we can see a code snippet
   from the "Execute" method of the "ServiceRootCreateCommandImplementation" from the
   root viewpoint of Service Factory. The code might look funny to you but this is just
   because it is produced by reflector and not by me ;) You can see that "Backplane"
   is used here to get a reference to the "RecipeManager" and "DTE". Perfect!&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/code.jpg"&gt;&lt;font face="Verdana" size="2"&gt;&lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/code.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="162" alt="code" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/code_thumb.jpg" width="626" border="0"&gt;&lt;/a&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;What we can also see is that basically all that happens
   here is, get a reference to the a Guidance Package and unfold a template (model.vstempate)
   to set the initial structure of our Service Factory solution. Please note that "model.vstemplate"
   is just a normal&amp;nbsp; .vstemplate that is located in the source tree of Service Factory
   (C:\Program Files\Microsoft Service Factory V3). This means, in Rosario CTP we can
   create command, hook it up to the root viewpoint of our software factory and Application
   Explorer makes sure it gets executed to set, for example, the initial structure for
   the product we are building in our factory. From there on, all "normal" (old) Service
   Factory V3 recipes should work as expected! (Decide for yourself if that is good or
   bad news)&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;Below you can see what Application Explorer looks like
   after we executed the "Create Product" and selected the "Web Service Software Factory"
   in the "New Product" dialog. Also note the "ServiceContractDesignerViewPoint" folder
   that we have seen in the software factory schema above. &lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/AppExpl.jpg"&gt;&lt;font face="Verdana" size="2"&gt;&lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/AppExpl.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="264" alt="AppExpl" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/AppExpl_thumb.jpg" width="310" border="0"&gt;&lt;/a&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;Solution Explorer looks like this. &lt;font face="Verdana" size="2"&gt;Note
   the .pdef files! (More on that later)&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;&lt;font face="Verdana" size="2"&gt;&lt;a href="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/SolutionExplorer.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="327" alt="SolutionExplorer" src="http://www.edwardbakker.nl/content/binary/SoftwareFactoriesinRosarioCTP3_BF3C/SolutionExplorer_thumb.jpg" width="445" border="0"&gt;&lt;/a&gt;&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Verdana" size="2"&gt;To be continued...&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=13941c1e-4dfe-4d33-8e14-618580b65d37" /&gt;</description>
      <category>Software Factories</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=9da56680-9ab0-414d-bee4-c1ad1d8aa46a</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,9da56680-9ab0-414d-bee4-c1ad1d8aa46a.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font face="v">
            <font face="Verdana">In a <a href="http://www.edwardbakker.nl/PermaLink,guid,0643d5b6-9510-4f8e-9c08-4f2528b9931f.aspx">previous
      post</a> we have seen the Application Explorer acting as a starting point for our
      software factory. To continue our journey, let's have a closer look at this Application
      Explorer. For example, where does it get the list of installed software factories
      from?</font>
          </font> 
   </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario2_C6CA/factory.png">
            <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="280" alt="factory" src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario2_C6CA/factory_thumb.png" width="498" border="0" />
          </a>  
   </p>
        <p>
          <font face="v">
            <font face="Verdana">A quick look at GAC on our Rosario VPC reveals
      a few new assemblies that (based on their name?!) might have something to do with
      software factories. these are:</font>
          </font>
        </p>
        <ul>
          <li>
            <font face="Verdana">Microsoft.VisualStudio.SoftwareFactories.Runtime.dll</font>
          </li>
          <li>
            <font face="Verdana">Microsoft.VisualStudio.SoftwareFactories.Runtime.VSHost.dll</font>
          </li>
          <li>
            <font face="Verdana">Microsoft.VisualStudio.SoftwareFactories.ApplicationExplorer.dll</font> </li>
        </ul>
        <p>
          <font face="Verdana">The Application Explorer is obviously implemented in "Microsoft.VisualStudio.SoftwareFactories.ApplicationExplorer.dll".
      Currently, no (public) documentation is available so we have to use <a href="http://www.aisto.com/roeder/dotnet/">reflector</a> to
      find out this assembly holds the "ApplicationExplorerPackage" (inherited from <a href="http://msdn2.microsoft.com/en-us/library/microsoft.visualstudio.shell.package.aspx">Microsoft.VisualStudio.Shell.Package</a>)
      which is using the "FactoryManager" (more on that later). Besides the "ApplicationExplorerPackage"
      this assembly also implements the ApplicationExplorerToolwindow and the ApplicationExplorerControl
      which are representing the UI of the Application Explorer in Visual Studio. </font>
        </p>
        <p>
          <font face="Verdana">Digging a little further, we can find out the "FactoryManager"
      (implemented in Microsoft.VisualStudio.SoftwareFactories.Runtime.dll) is using the
      "FactoryDescriptorsLoader" to search the Registry for installed software factories
      on the machine. </font>
        </p>
        <blockquote>
          <p>
            <font face="Verdana">
              <em>
                <strong>please note more classes are involved in this "discovery
      process" but I am only focussing on the high level to make this post not more confusing
      than it probably is already. I am sure you know how to use reflector yourself if you
      are interested in more details ;)</strong>
              </em>
            </font>
          </p>
        </blockquote>
        <p>
          <font face="Verdana">As we can see in the screenshot below the Registry (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\SoftwareFactories)
      in the Rosario VPC holds information about two installed software factories. By looking
      at the Service Factory node we can see the Registry contains the Name, Description,
      InstallDir, Version and SchemaFileName of the software factory. </font>
        </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario2_C6CA/registry.jpg">
            <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="217" alt="registry" src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario2_C6CA/registry_thumb.jpg" width="833" border="0" />
          </a>  
   </p>
        <p>
          <font face="Verdana">SchemaFileName?! hmm....is this in anyway related to the "Software
      Factory Schema that is discussed in the "<a href="http://www.amazon.com/dp/0471202843?tag=devrev-20&amp;camp=15041&amp;creative=373501&amp;link_code=as3">Software
      Factories</a>" book? Below a screenshot of the Schema File for Service Factory that
      we can find in the "InstallDir" of Service Factory (C:\Program Files\Microsoft Visual
      Studio 9.0\Common7\IDE\PrivateAssemblies). Pretty i</font>
          <font face="Verdana">
            <font face="Verdana">nteresting
      to finally find concepts like "viewpoints" and "workproducts" related to software
      factory implementations. </font>
          </font> 
   </p>
        <p>
          <font face="Verdana">
            <a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario2_C6CA/Schemafile.jpg">
              <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="452" alt="Schemafile" src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario2_C6CA/Schemafile_thumb.jpg" width="696" border="0" />
            </a> </font> 
   </p>
        <p>
          <font face="Verdana">Without going into too much detail, how does this all work?</font>
        </p>
        <p>
          <font face="Verdana">It all starts in the "VSPackage" (inherited from <a href="http://msdn2.microsoft.com/en-us/library/microsoft.visualstudio.shell.package.aspx">Microsoft.VisualStudio.Shell.Package</a>)
      that can be found in "Microsoft.VisualStudio.SoftwareFactories.Runtime.VSHost.dll".
      At some point a "FactoryManager" (Microsoft.VisualStudio.SoftwareFactories.Runtime)
      is instantiated. This "FactoryManager" is using a "FactoryDescriptorLoader" to read
      the Registry and to create (and cache) a collection of "FactoryDescriptor" classes.
      The information contained in the software factory Schema File eventually ends up as
      a "Factory" instance that holds the "FactorySchema" which is the root for the FactoryViewPoint,
      Command, WorkProducts, etc. </font>
          <font face="Verdana">The Application Explorer on
      its turn is using the "FactoryManager" to list the installed factories, the viewpoints
      it contains and enables us to (for example) execute the "Create Product" action that
      we discussed earlier. </font>
        </p>
        <p>
          <font face="Verdana">Again, just the high level overview! There are a lot more interesting
      classes and concepts involved in this but it hopefully gives some basic understanding.
      In a next post we will try to understand the purpose of the "Commands",  "Viewpoints"
      and "Workproducts" that we have seen in the software factory Schema File. </font>
        </p>
        <p>
          <font face="Verdana">To be continued...</font>
        </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=9da56680-9ab0-414d-bee4-c1ad1d8aa46a" />
      </body>
      <title>Software Factories in Rosario CTP (2)</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,9da56680-9ab0-414d-bee4-c1ad1d8aa46a.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,9da56680-9ab0-414d-bee4-c1ad1d8aa46a.aspx</link>
      <pubDate>Tue, 12 Feb 2008 11:48:22 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font face=v&gt;&lt;font face=Verdana&gt;In a &lt;a href="http://www.edwardbakker.nl/PermaLink,guid,0643d5b6-9510-4f8e-9c08-4f2528b9931f.aspx"&gt;previous
   post&lt;/a&gt; we have seen the Application Explorer acting as a starting point for our
   software factory. To continue our journey, let's have a closer look at this Application
   Explorer. For example, where does it get the list of installed software factories
   from?&lt;/font&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario2_C6CA/factory.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=280 alt=factory src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario2_C6CA/factory_thumb.png" width=498 border=0&gt;&lt;/a&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=v&gt;&lt;font face=Verdana&gt;A quick look at GAC on our Rosario VPC reveals a few
   new assemblies that (based on their name?!) might have something to do with software
   factories. these are:&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;font face=Verdana&gt;Microsoft.VisualStudio.SoftwareFactories.Runtime.dll&lt;/font&gt; 
   &lt;li&gt;
      &lt;font face=Verdana&gt;Microsoft.VisualStudio.SoftwareFactories.Runtime.VSHost.dll&lt;/font&gt; 
   &lt;li&gt;
      &lt;font face=Verdana&gt;Microsoft.VisualStudio.SoftwareFactories.ApplicationExplorer.dll&lt;/font&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;The Application Explorer is obviously implemented in "Microsoft.VisualStudio.SoftwareFactories.ApplicationExplorer.dll".
   Currently, no (public) documentation is available so we have to use &lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;reflector&lt;/a&gt; to
   find out this assembly holds the "ApplicationExplorerPackage" (inherited from &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.visualstudio.shell.package.aspx"&gt;Microsoft.VisualStudio.Shell.Package&lt;/a&gt;)
   which is using the "FactoryManager" (more on that later). Besides the "ApplicationExplorerPackage"
   this assembly also implements the ApplicationExplorerToolwindow and the ApplicationExplorerControl
   which are representing the UI of the Application Explorer in Visual Studio. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;Digging a little further, we can find out the "FactoryManager"
   (implemented in Microsoft.VisualStudio.SoftwareFactories.Runtime.dll) is using the
   "FactoryDescriptorsLoader" to search the Registry for installed software factories
   on the machine. &lt;/font&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
   &lt;font face=Verdana&gt;&lt;em&gt;&lt;strong&gt;please note more classes are involved in this "discovery
   process" but I am only focussing on the high level to make this post not more confusing
   than it probably is already. I am sure you know how to use reflector yourself if you
   are interested in more details ;)&lt;/strong&gt;&lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
   &lt;font face=Verdana&gt;As we can see in the screenshot below the Registry (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\SoftwareFactories)
   in the Rosario VPC holds information about two installed software factories. By looking
   at the Service Factory node we can see the Registry contains the Name, Description,
   InstallDir, Version and SchemaFileName of the software factory. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario2_C6CA/registry.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=217 alt=registry src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario2_C6CA/registry_thumb.jpg" width=833 border=0&gt;&lt;/a&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;SchemaFileName?! hmm....is this in anyway related to the "Software
   Factory Schema that is discussed in the "&lt;a href="http://www.amazon.com/dp/0471202843?tag=devrev-20&amp;amp;camp=15041&amp;amp;creative=373501&amp;amp;link_code=as3"&gt;Software
   Factories&lt;/a&gt;" book? Below a screenshot of the Schema File for Service Factory that
   we can find in the "InstallDir" of Service Factory (C:\Program Files\Microsoft Visual
   Studio 9.0\Common7\IDE\PrivateAssemblies). Pretty i&lt;/font&gt;&lt;font face=Verdana&gt;&lt;font face=Verdana&gt;nteresting
   to finally find concepts like "viewpoints" and "workproducts" related to software
   factory implementations. &lt;/font&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;&lt;a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario2_C6CA/Schemafile.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=452 alt=Schemafile src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario2_C6CA/Schemafile_thumb.jpg" width=696 border=0&gt;&lt;/a&gt;&amp;nbsp;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;Without going into too much detail, how does this all work?&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;It all starts in the "VSPackage" (inherited from &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.visualstudio.shell.package.aspx"&gt;Microsoft.VisualStudio.Shell.Package&lt;/a&gt;)
   that can be found in "Microsoft.VisualStudio.SoftwareFactories.Runtime.VSHost.dll".
   At some point a "FactoryManager" (Microsoft.VisualStudio.SoftwareFactories.Runtime)
   is instantiated. This "FactoryManager" is using a "FactoryDescriptorLoader" to read
   the Registry and to create (and cache) a collection of "FactoryDescriptor" classes.
   The information contained in the software factory Schema File eventually ends up as
   a "Factory" instance that holds the "FactorySchema" which is the root for the FactoryViewPoint,
   Command, WorkProducts, etc. &lt;/font&gt;&lt;font face=Verdana&gt;The Application Explorer on
   its turn is using the "FactoryManager" to list the installed factories, the viewpoints
   it contains and enables us to (for example) execute the "Create Product" action that
   we discussed earlier. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;Again, just the high level overview! There are a lot more interesting
   classes and concepts involved in this but it hopefully gives some basic understanding.
   In a next post we will try to understand the purpose of the "Commands",&amp;nbsp; "Viewpoints"
   and "Workproducts" that we have seen in the software factory Schema File. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;To be continued...&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=9da56680-9ab0-414d-bee4-c1ad1d8aa46a" /&gt;</description>
      <category>Software Factories</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=0643d5b6-9510-4f8e-9c08-4f2528b9931f</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,0643d5b6-9510-4f8e-9c08-4f2528b9931f.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font face="Verdana">A few months ago "Rosario November 2007 CTP" became available
      for <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=65D0E3BD-9DF3-421A-804F-8F01BD90F0B4&amp;displaylang=en">download</a>.
      Based on the available <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=50C4B0B3-AE27-45FA-8D13-400066E0FCF5&amp;displaylang=en">documentation</a>,
      walkthroughs and “mini stories” we can safely conclude that this release wasn’t really
      build to please the software factory guys out there! However, what it *does* contain
      is a (limited!) version of Service Factory that works on a very early (?) version
      of the Software Factory Runtime. This might be interesting. Let’s have a look if this
      version of Service Factory shed some light about what we might expect from Rosario
      in the software factory space. </font>
        </p>
        <blockquote>
          <p>
            <font face="Verdana">
              <em>
                <strong>(Of course, this CTP is relatively old already and
      hopefully a new one will arrive in the coming ? but maybe we can learn something from
      this CTP already...)</strong>
              </em>
            </font>
          </p>
        </blockquote>
        <p>
          <font face="Verdana">Ok, how does Service Factory looks like in Rosario CTP? To find
      out we can start a new Service Factory project by using the Application Design template
      that can be found under the “Distributed Systems” node in the “new project” dialog.</font>
        </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/NewProject.png">
            <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="475" alt="NewProject" src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/NewProject_thumb.png" width="664" border="0" />
          </a> 
   </p>
        <p>
          <font face="Verdana">After the template unfolded, the first thing to notice in our
      new solution is the new “Application Explorer”. From this new “Application Explorer”
      tool window we can create a “Product” that is based on the installed software factories
      on the machine. As we can see in the screenshots below this machine has two factories
      installed and one of them is “Service Factory”. </font>
        </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/ApplicationExplorer.png">
            <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="150" alt="ApplicationExplorer" src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/ApplicationExplorer_thumb.png" width="420" border="0" />
          </a> 
   </p>
        <p>
       <a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/factory.png"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="270" alt="factory" src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/factory_thumb.png" width="478" border="0" /></a></p>
        <p>
          <font face="Verdana">By selecting "Web Service Software Factory" and pressing "OK"
      in the "New Product" dialog we end up in a situation that is similar to the one we
      are familiar with when using the current </font>
          <font face="Verdana">
            <a href="http://www.codeplex.com/servicefactory">Service
      Factory</a>
          </font>
          <font face="Verdana">. We can create a "New Model" and use the factory
      "as usual" from there.</font>
        </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/NewModel.png">
            <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="308" alt="NewModel" src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/NewModel_thumb.png" width="398" border="0" />
          </a> 
   </p>
        <p>
          <font face="Verdana">Digging a little further in this CTP tells us (Add or Remove
      Programs) GAX is installed and GAT isn't! Further we can see that besides the package
      that looks like the "normal" Service Factory a package called "Web Service Factory
      Application Designer Integration" is installed.</font>
        </p>
        <p>
          <a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/Controlpanel.png">
            <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="418" alt="Controlpanel" src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/Controlpanel_thumb.png" width="574" border="0" />
          </a>
        </p>
        <p>
          <font face="Verdana">A quick look at the installation location of Service Factory
      (C:\Program Files\Microsoft Service Factory V3) tells us that this version of Service
      Factory indeed looks like an ordinary software factory that is build on top of GAX.
      The installation folder still contains recipes, vstemplates, T4 templates, etc. </font>
        </p>
        <p>
          <font face="Verdana">What does this mean? Can we use our current software factories
      (or at least parts of them) in Rosario? If so, do we benefit from anything new? </font>
          <font face="Verdana">How
      does Service Factory integrate in the Application Explorer? Where do we need this
      "Web Service Software Factory Application Designer Integration" package for? Is the
      "Software Factory Runtime" in this CTP of Rosario only implemented by GAX?</font>
        </p>
        <p>
          <font face="Verdana">To be continued...</font>
        </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=0643d5b6-9510-4f8e-9c08-4f2528b9931f" />
      </body>
      <title>Software Factories in Rosario CTP (1)</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,0643d5b6-9510-4f8e-9c08-4f2528b9931f.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,0643d5b6-9510-4f8e-9c08-4f2528b9931f.aspx</link>
      <pubDate>Sun, 10 Feb 2008 20:47:04 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font face=Verdana&gt;A few months ago "Rosario November 2007 CTP" became available for &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=65D0E3BD-9DF3-421A-804F-8F01BD90F0B4&amp;amp;displaylang=en"&gt;download&lt;/a&gt;.
   Based on the available &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=50C4B0B3-AE27-45FA-8D13-400066E0FCF5&amp;amp;displaylang=en"&gt;documentation&lt;/a&gt;,
   walkthroughs and “mini stories” we can safely conclude that this release wasn’t really
   build to please the software factory guys out there! However, what it *does* contain
   is a (limited!) version of Service Factory that works on a very early (?) version
   of the Software Factory Runtime. This might be interesting. Let’s have a look if this
   version of Service Factory shed some light about what we might expect from Rosario
   in the software factory space. &lt;/font&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
   &lt;font face=Verdana&gt;&lt;em&gt;&lt;strong&gt;(Of course, this CTP is relatively old already and
   hopefully a new one will arrive in the coming ? but maybe we can learn something from
   this CTP already...)&lt;/strong&gt;&lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
   &lt;font face=Verdana&gt;Ok, how does Service Factory looks like in Rosario CTP? To find
   out we can start a new Service Factory project by using the Application Design template
   that can be found under the “Distributed Systems” node in the “new project” dialog.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/NewProject.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=475 alt=NewProject src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/NewProject_thumb.png" width=664 border=0&gt;&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;After the template unfolded, the first thing to notice in our new
   solution is the new “Application Explorer”. From this new “Application Explorer” tool
   window we can create a “Product” that is based on the installed software factories
   on the machine. As we can see in the screenshots below this machine has two factories
   installed and one of them is “Service Factory”. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/ApplicationExplorer.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=150 alt=ApplicationExplorer src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/ApplicationExplorer_thumb.png" width=420 border=0&gt;&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;&lt;a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/factory.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=270 alt=factory src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/factory_thumb.png" width=478 border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;By selecting "Web Service Software Factory" and pressing "OK" in
   the "New Product" dialog we end up in a situation that is similar to the one we are
   familiar with when using the current &lt;/font&gt;&lt;font face=Verdana&gt;&lt;a href="http://www.codeplex.com/servicefactory"&gt;Service
   Factory&lt;/a&gt;&lt;/font&gt;&lt;font face=Verdana&gt;. We can create a "New Model" and use the factory
   "as usual" from there.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/NewModel.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=308 alt=NewModel src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/NewModel_thumb.png" width=398 border=0&gt;&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;Digging a little further in this CTP tells us (Add or Remove Programs)
   GAX is installed and GAT isn't! Further we can see that besides the package that looks
   like the "normal" Service Factory a package called "Web Service Factory Application
   Designer Integration" is installed.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/Controlpanel.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=418 alt=Controlpanel src="http://www.edwardbakker.nl/content/binary/BuildingSoftwareFactoriesforRosario1_BDE4/Controlpanel_thumb.png" width=574 border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;A quick look at the installation location of Service Factory (C:\Program
   Files\Microsoft Service Factory V3) tells us that this version of Service Factory
   indeed looks like an ordinary software factory that is build on top of GAX. The installation
   folder still contains recipes, vstemplates, T4 templates, etc. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;What does this mean? Can we use our current software factories
   (or at least parts of them) in Rosario? If so, do we benefit from anything new? &lt;/font&gt;&lt;font face=Verdana&gt;How
   does Service Factory integrate in the Application Explorer? Where do we need this
   "Web Service Software Factory Application Designer Integration" package for? Is the
   "Software Factory Runtime" in this CTP of Rosario only implemented by GAX?&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face=Verdana&gt;To be continued...&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=0643d5b6-9510-4f8e-9c08-4f2528b9931f" /&gt;</description>
      <category>Software Factories</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=2d445b31-f7b8-4d13-a006-96e53b3f594b</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,2d445b31-f7b8-4d13-a006-96e53b3f594b.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p class="MsoNormal" style="MARGIN: 0cm 0cm 10pt">
          <font face="Calibri" color="#000000" size="3">It is there, a new </font>
          <a href="http://sf.devrevolution.com/">
            <font face="Calibri" color="#800080" size="3">Software
      Factory Community Portal</font>
          </a>
          <font face="Calibri" color="#000000" size="3">!</font>
        </p>
        <p class="MsoNormal" style="MARGIN: 0cm 0cm 10pt">
          <span style="mso-spacerun: yes">
            <font face="Calibri" color="#000000" size="3"> </font>
          </span>
          <a href="http://blog.arrowrock.com/sourceart/default.aspx">
            <font face="Calibri" color="#800080" size="3">Martin
      Danner</font>
          </a>
          <font face="Calibri" color="#000000" size="3">, </font>
          <a href="http://blogs.msdn.com/jezzsa/">
            <font face="Calibri" color="#800080" size="3">Jezz
      Santos</font>
          </a>
          <font size="3">
            <font color="#000000">
              <font face="Calibri"> and myself
      have been talking about starting up a community around software factories for some
      time and now we finally did it. <span style="mso-spacerun: yes"> </span></font>
            </font>
          </font>
        </p>
        <p class="MsoNormal" style="MARGIN: 0cm 0cm 10pt">
          <font face="Calibri" color="#000000" size="3">This community is all about software
      factories, domain specific languages, Visual Studio Extensibility and other related
      topics. The portal includes a forum, blog aggregation, news and additional resources
      like links, articles, books, etc. We haven’t finished adding all resources yet but
      registered users are allowed to add new resources, provide ratings and add comments. </font>
        </p>
        <p>
          <span style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">
            <font color="#000000" size="3">So,
      please join us there, start discussing and participate in building a </font>
            <a href="http://sf.devrevolution.com/">
              <font color="#800080" size="3">community
      around software factories</font>
            </a>
            <font color="#000000" size="3">!</font>
          </span>
        </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=2d445b31-f7b8-4d13-a006-96e53b3f594b" />
      </body>
      <title>Software Factory Community Portal</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,2d445b31-f7b8-4d13-a006-96e53b3f594b.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,2d445b31-f7b8-4d13-a006-96e53b3f594b.aspx</link>
      <pubDate>Tue, 18 Dec 2007 08:19:16 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
   &lt;font face=Calibri color=#000000 size=3&gt;It is there, a new &lt;/font&gt;&lt;a href="http://sf.devrevolution.com/"&gt;&lt;font face=Calibri color=#800080 size=3&gt;Software
   Factory Community Portal&lt;/font&gt;&lt;/a&gt;&lt;font face=Calibri color=#000000 size=3&gt;!&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
   &lt;span style="mso-spacerun: yes"&gt;&lt;font face=Calibri color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;a href="http://blog.arrowrock.com/sourceart/default.aspx"&gt;&lt;font face=Calibri color=#800080 size=3&gt;Martin
   Danner&lt;/font&gt;&lt;/a&gt;&lt;font face=Calibri color=#000000 size=3&gt;, &lt;/font&gt;&lt;a href="http://blogs.msdn.com/jezzsa/"&gt;&lt;font face=Calibri color=#800080 size=3&gt;Jezz
   Santos&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt; and myself have
   been talking about starting up a community around software factories for some time
   and now we finally did it. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
   &lt;font face=Calibri color=#000000 size=3&gt;This community is all about software factories,
   domain specific languages, Visual Studio Extensibility and other related topics. The
   portal includes a forum, blog aggregation, news and additional resources like links,
   articles, books, etc. We haven’t finished adding all resources yet but registered
   users are allowed to add new resources, provide ratings and add comments. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;span style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;font color=#000000 size=3&gt;So,
   please join us there, start discussing and participate in building a &lt;/font&gt;&lt;a href="http://sf.devrevolution.com/"&gt;&lt;font color=#800080 size=3&gt;community
   around software factories&lt;/font&gt;&lt;/a&gt;&lt;font color=#000000 size=3&gt;!&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=2d445b31-f7b8-4d13-a006-96e53b3f594b" /&gt;</description>
      <category>Software Factories</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=b1033231-786e-43b9-8354-461994cd4fcf</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,b1033231-786e-43b9-8354-461994cd4fcf.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      We already announced the availablility of <a href="http://msdn2.microsoft.com/en-us/library/bb880038.aspx">part
      1</a> in our "Packaging &amp; Building Software Factories" series <a href="http://www.edwardbakker.nl/PermaLink,guid,7938dce1-b62c-49d7-a855-250d3ceeb5aa.aspx">here</a>.
      Today, part 2 called <strong><a href="http://msdn2.microsoft.com/en-us/library/bb945118.aspx">Automated
      Builds with Team Foundation Server</a></strong> is also published. Enjoy!
   </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=b1033231-786e-43b9-8354-461994cd4fcf" />
      </body>
      <title>Paper published: Packaging and Building Software Factories - part 2</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,b1033231-786e-43b9-8354-461994cd4fcf.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,b1033231-786e-43b9-8354-461994cd4fcf.aspx</link>
      <pubDate>Thu, 01 Nov 2007 16:24:07 GMT</pubDate>
      <description>&lt;p&gt;
   We already announced the availablility of &lt;a href="http://msdn2.microsoft.com/en-us/library/bb880038.aspx"&gt;part
   1&lt;/a&gt; in our "Packaging &amp;amp; Building Software Factories" series &lt;a href="http://www.edwardbakker.nl/PermaLink,guid,7938dce1-b62c-49d7-a855-250d3ceeb5aa.aspx"&gt;here&lt;/a&gt;.
   Today, part 2 called &lt;strong&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb945118.aspx"&gt;Automated
   Builds with Team Foundation Server&lt;/a&gt;&lt;/strong&gt; is also published. Enjoy!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=b1033231-786e-43b9-8354-461994cd4fcf" /&gt;</description>
      <category>Software Factories</category>
    </item>
    <item>
      <trackback:ping>http://www.edwardbakker.nl/Trackback.aspx?guid=7938dce1-b62c-49d7-a855-250d3ceeb5aa</trackback:ping>
      <pingback:server>http://www.edwardbakker.nl/pingback.aspx</pingback:server>
      <pingback:target>http://www.edwardbakker.nl/PermaLink,guid,7938dce1-b62c-49d7-a855-250d3ceeb5aa.aspx</pingback:target>
      <dc:creator>Edward Bakker (Edward Bakker)</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Finally, part 1 of  our (short) series about "Packaging and Building Software
      Factories" is published on MSDN. The goal of these articles is to help you with packaging
      your software factories and implementing a team build with Team Foundation Server.
      As you will see this isn't always as straight forward as you might expect! These are
      the parts in this series: 
   </p>
        <ul>
          <li>
            <a href="http://msdn2.microsoft.com/en-us/library/bb880038.aspx">Part 1 - Packaging
         with Visual Studio 2005</a>
          </li>
          <li>
            <a href="http://msdn2.microsoft.com/en-us/library/bb945118.aspx">Part 2 - Automated
         Builds with Team Foundation Server</a> </li>
        </ul>
        <p>
      I co-authored the series with <a href="http://blogs.msdn.com/jezzsa">Jezz</a> and
      my colleague <a href="http://bloggingabout.net/blogs/rene/">Rene</a>. Thanks guys!
      Also, many thanks to our reviewers: <a href="http://blogs.msdn.com/garethj">Gareth</a>, <a href="http://www.clariusconsulting.net/blogs/pga">Pablo</a>, <a href="http://blogs.msdn.com/attilah/default.aspx">Attilah</a>, <a href="http://blogs.msdn.com/dscruggs/">David </a>and
      Mark Nichols ! 
   </p>
        <p>
      We also included reference implementations for you to download and created a <a href="http://www.codeplex.com/sfteambuild">CodePlex
      project</a> (for part 2 in this series) that we will use to publish some additional
      MSBUILD tasks and 'utilities'. 
   </p>
        <p>
      Stay tuned for part 2 and let us know what you think!
   </p>
        <img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=7938dce1-b62c-49d7-a855-250d3ceeb5aa" />
      </body>
      <title>Paper published: Packaging and Building Software Factories</title>
      <guid>http://www.edwardbakker.nl/PermaLink,guid,7938dce1-b62c-49d7-a855-250d3ceeb5aa.aspx</guid>
      <link>http://www.edwardbakker.nl/PermaLink,guid,7938dce1-b62c-49d7-a855-250d3ceeb5aa.aspx</link>
      <pubDate>Mon, 29 Oct 2007 20:06:52 GMT</pubDate>
      <description>&lt;p&gt;
   Finally, part 1 of&amp;nbsp; our (short) series about "Packaging and Building Software
   Factories" is published on MSDN. The goal of these articles is to help you with packaging
   your software factories and implementing a team build with Team Foundation Server.
   As you will see this isn't always as straight forward as you might expect! These are
   the parts in this series: 
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://msdn2.microsoft.com/en-us/library/bb880038.aspx"&gt;Part 1 - Packaging
      with Visual Studio 2005&lt;/a&gt; 
   &lt;li&gt;
      &lt;a href="http://msdn2.microsoft.com/en-us/library/bb945118.aspx"&gt;Part 2 - Automated
      Builds with Team Foundation Server&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   I co-authored the series with &lt;a href="http://blogs.msdn.com/jezzsa"&gt;Jezz&lt;/a&gt; and
   my colleague &lt;a href="http://bloggingabout.net/blogs/rene/"&gt;Rene&lt;/a&gt;. Thanks guys!
   Also, many thanks to our reviewers: &lt;a href="http://blogs.msdn.com/garethj"&gt;Gareth&lt;/a&gt;, &lt;a href="http://www.clariusconsulting.net/blogs/pga"&gt;Pablo&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/attilah/default.aspx"&gt;Attilah&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/dscruggs/"&gt;David &lt;/a&gt;and
   Mark Nichols ! 
&lt;/p&gt;
&lt;p&gt;
   We also included reference implementations for you to download and created a &lt;a href="http://www.codeplex.com/sfteambuild"&gt;CodePlex
   project&lt;/a&gt; (for part 2 in this series) that we will use to publish some additional
   MSBUILD tasks and 'utilities'. 
&lt;/p&gt;
&lt;p&gt;
   Stay tuned for part 2 and let us know what you think!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.edwardbakker.nl/aggbug.ashx?id=7938dce1-b62c-49d7-a855-250d3ceeb5aa" /&gt;</description>
      <category>Software Factories</category>
    </item>
  </channel>
</rss>