<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Business Analysed</title>
	<atom:link href="http://www.hamishking.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hamishking.com</link>
	<description>Practical business analysis tips and tools from the field</description>
	<lastBuildDate>Wed, 15 May 2013 21:52:12 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Top 5 handy hints for creating &#8216;Structured&#8217; Use Cases in Enterprise Architect</title>
		<link>http://www.hamishking.com/2013/05/16/top-5-handy-hints-for-creating-structured-use-cases-in-enterprise-architect/</link>
		<comments>http://www.hamishking.com/2013/05/16/top-5-handy-hints-for-creating-structured-use-cases-in-enterprise-architect/#comments</comments>
		<pubDate>Wed, 15 May 2013 21:41:08 +0000</pubDate>
		<dc:creator>Hamish</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Enterprise Architect]]></category>

		<guid isPermaLink="false">http://www.hamishking.com/?p=946</guid>
		<description><![CDATA[I was inspired to write this post by Ian Mitchell from eaDocX’s use case discussion at today’s European EA User Group in London. It got me thinking about traps I&#8217;ve fallen into and tips that aren&#8217;t immediately obvious when starting out with the structured<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2013/05/16/top-5-handy-hints-for-creating-structured-use-cases-in-enterprise-architect/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>I was inspired to write this post by Ian Mitchell from <a title="eaDocX" href="http://www.eadocx.com/" target="_blank">eaDocX</a>’s use case discussion at today’s European EA User Group in London. It got me thinking about traps I&#8217;ve fallen into and tips that aren&#8217;t immediately obvious when starting out with the structured scenario editor.</p>
<h2>1. Writing unstructured text first and generating structure</h2>
<p>This one I think is the biggest time saver and deserves it’s spot at the top of this list. While the rigid structure of the<strong> </strong>structured editor has many benefits, free-flowing writing and focusing on content is not one of them – and in my opinion it should be the focus of effort of the first draft of content.</p>
<p>My advice? When writing up the skeleton of your use case stick to the standard ‘Description’ tab to get all your content on paper. Don&#8217;t worry about numbering lines, just get it down! Key here is your writing can be fluid and you can capture the detail of your use case flow without having to worry about structure.</p>
<div class="wp-caption alignnone" style="width: 564px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image36.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb36.png?resize=550%2C334" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">creating unstructured use case detail first</p></div>
<p>Once you&#8217;ve got your basic content on paper its a simple two clicks to create a structured scenario. Right click –&gt; Create Structure From Notes –&gt; New Line Delimited.</p>
<div class="wp-caption alignnone" style="width: 463px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image37.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb37.png?resize=453%2C238" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">and transform it into structured scenario steps</p></div>
<p>Transforms into..</p>
<div class="wp-caption alignnone" style="width: 460px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image38.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb38.png?resize=450%2C299" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">generated structured from free-form use case</p></div>
<p>Having gone down the path of creating scenarios solely in the structured scenario editor initially – personally I find the process to stilted for my workflow. Having to stop at the each step, add new step, move cursor, get distracted by the context references and whether EA has incorrectly assigned a Actor icon to a system step.. Maybe it’s just my workflow but I prefer to get the basic content down first – then play with the structure.</p>
<h2>2. Context references &#8211; the magical linkage between elements</h2>
<p>Context references is where I first saw the benefit of using the structured scenario view. It allowed me to add references to my model, enforce a standard vocabulary and promote re-usability  &#8211; all really good things.</p>
<p>So how does it work?</p>
<p>In our example before we had no references, just plain text. So lets reword the ‘user’ into something more realistic, select it and right click it to see what we can do with it.</p>
<div class="wp-caption alignnone" style="width: 445px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image39.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb39.png?resize=435%2C110" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">defining new elements from use case text</p></div>
<p>So I&#8217;ve renamed <em>user </em>to <em>Librarian</em> and now I can create a new element for this new actor I&#8217;ve defined.</p>
<div class="wp-caption alignnone" style="width: 422px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image40.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb40.png?resize=412%2C315" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">select the appropriate element type &#8211; in this case its an Actor</p></div>
<p>Select the Use Case Toolset to find the ‘Actor’ element and notice the name has already been pre-populated for you. The actor element has been added to the project browser as well so it can be re-used – bonus!</p>
<p>Now that we have established this reference it will be used every time the word ‘Librarian’ is entered into the use case text – both in the main scenario or any alternate/exception flows.</p>
<p>This works for existing model elements as well, simply select the text as before but instead of creating a new element, select ‘Insert context reference’</p>
<div class="wp-caption alignnone" style="width: 450px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image41.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb41.png?resize=440%2C280" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">or for existing elements, simply insert a context reference and find the element in the project browser</p></div>
<h3>3. Working with the scenario editor as a window</h3>
<p>When you want to quickly flick between scenario content it is pain to have to open a use case via the properties, switch the scenarios tab, and view the structure, only to find it was the wrong use case element and have to open 3 more use cases and repeat the process before you find the step you were looking for.</p>
<p>It can handy to display the scenarios editor as a separate window rather than an inline element.</p>
<p>To do this, from the ‘Element’ file menu, select ‘Scenarios and Rules’</p>
<div class="wp-caption alignnone" style="width: 488px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image42.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb42.png?resize=478%2C251" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">working with the scenario and rules window</p></div>
<p>This will popup the scenario and rule window as a separate dialogue which you can have open while you flick between multiple use case elements, either from the canvas or the project browser.</p>
<div class="wp-caption alignnone" style="width: 754px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image43.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb43.png?resize=550%2C274" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">make it a popup window to allow navigation from the diagram canvas</p></div>
<h2>4. Define a glossary to give further context</h2>
<p>If you have ever added items to EA’s severely under-utilised glossary, you will have noticed these terms appear underlined and referenced many places within EA.</p>
<p>To add terms to the glossary, hit Alt + 2 or select ‘Project’ –&gt; ‘Glossary’ from the file menu and start adding terms. <em>(Note: you may need to add a glossary type first before you can save a anything – hit the .. and enter a glossary name!)</em></p>
<div class="wp-caption alignnone" style="width: 538px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image44.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb44.png?resize=528%2C225" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">adding glossary terms for a richer model</p></div>
<p>I’ve gone and added a few terms to my sample glossary and now lets take a look at our scenario from before.</p>
<div class="wp-caption alignnone" style="width: 588px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image45.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb45.png?resize=550%2C322" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">all terms within glossary referenced throughout the model</p></div>
<p>I should point out here that this is not limited to just the structured scenario but any field where the term is used – EA will underline the item to show a reference to a glossary item has been made.</p>
<p>So whenever the cursor is rolled over the underlined term – a definition is displayed!</p>
<div class="wp-caption alignnone" style="width: 536px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image46.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb46.png?resize=526%2C328" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">quick referenced on cursor hover</p></div>
<h2>5. Changing those scenario type names</h2>
<p>Now the standard set of scenario types might be best practise and perfectly fine for your modelling needs – but I have found some engagements where the need to use further granularity for types. Previously this was fine before structured scenarios came along as you could name your scenario and type however you pleased but with structured comes rules.</p>
<p>To edit these types, Select ‘Settings’ –&gt; ‘General Types’ from the file menu</p>
<div class="wp-caption alignnone" style="width: 448px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image47.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb47.png?resize=438%2C185" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">adding scenario types to your model</p></div>
<p>and you are presented with the following screen.</p>
<div class="wp-caption alignnone" style="width: 340px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image48.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb48.png?resize=330%2C308" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">default model types</p></div>
<p>This presents the default set of types which can be added to. Let’s add one called fatal exception – perhaps not a great example but it illustrates my point.</p>
<div class="wp-caption alignnone" style="width: 254px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image49.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb49.png?resize=244%2C221" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">adding a custom type</p></div>
<p>Now return to our scenario view and see what this does.</p>
<div class="wp-caption alignnone" style="width: 528px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image50.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb50.png?resize=518%2C317" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">new type available in the scenario list</p></div>
<p>Not much other than add a new type to dropdown. EA thinks in the main 3 types still but you can trick it into accepting your new exception type.</p>
<p>Drill into your alternate exception by double clicking it in the ‘entry points’ dialogue.</p>
<p>Try changing the type of this from it’s existing ‘Alternate’ to our new ‘Fatal Exception’.</p>
<div class="wp-caption alignnone" style="width: 536px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image51.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb51.png?resize=526%2C187" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">switching over an existing exception scenario to use new type</p></div>
<p>Saves ok – great news!</p>
<p>So while EA will only allow you two ‘create’ the two standard sub types, you can simply swap these out for your own custom types as afterwards – semi-circumventing the process.</p>
<p>This may go somewhere towards getting around the ‘<em>no alternate, alternates</em>’ problem discussed before.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2013/05/16/top-5-handy-hints-for-creating-structured-use-cases-in-enterprise-architect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A better way of importing and maintaining requirements within EA &#8211; introducing eaDocX</title>
		<link>http://www.hamishking.com/2013/05/09/a-better-way-of-importing-and-maintaining-requirements-within-ea-introducing-eadocx/</link>
		<comments>http://www.hamishking.com/2013/05/09/a-better-way-of-importing-and-maintaining-requirements-within-ea-introducing-eadocx/#comments</comments>
		<pubDate>Wed, 08 May 2013 16:34:06 +0000</pubDate>
		<dc:creator>Hamish</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Enterprise Architect]]></category>

		<guid isPermaLink="false">http://www.hamishking.com/?p=904</guid>
		<description><![CDATA[In a previous post we looked at using the de-facto standard for importing data into EA – the CSV import. Now while this method works, it is a pain and comes with the limitations of using a CSV based format<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2013/05/09/a-better-way-of-importing-and-maintaining-requirements-within-ea-introducing-eadocx/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>In a <a href="http://www.hamishking.com/2013/04/12/import-requirements-with-csv-import/" target="_blank">previous post</a> we looked at using the de-facto standard for importing data into EA – the CSV import. Now while this method works, it is a pain and comes with the limitations of using a CSV based format – one wrong comma can throw off your entire data set!</p>
<p>I&#8217;ve been meaning to write about the wonders of <a href="http://www.eadocx.com/introducing-eadocx" target="_blank">eaDocX</a> for a while now but it seems this is my first opportunity to sing its praises. eaDocX does away with the horrendously outdated RTF functionality that EA uses and replaces it with the new standard XML  based .docx format</p>
<p>In additional to the huge host of benefits from using .docx (I&#8217;ll write about them soon I promise!), the corporate edition comes with much-needed Excel integration. We can use the power of Excel to import/export data from EA without having to be constrained by CSV.</p>
<p>Lets take a look!</p>
<p>So when you have eaDocX installed, it appears as an extension.</p>
<p>We can select a package and open in Excel – hooray!</p>
<div class="wp-caption alignnone" style="width: 472px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image20.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb20.png?resize=462%2C227" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">Open packages directly in Excel with eaDocX!</p></div>
<p>This hands the reigns over to eaDocX to take the package XML and recreate it in a .xlsx document. What does this look like? It looks an instance of Excel with all elements in your package listed</p>
<div class="wp-caption alignnone" style="width: 578px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image21.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb21.png?resize=550%2C461" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">Packaged viewed within Excel</p></div>
<p>Notice the ‘Element’ listing on the left. This defines the type of element to be included, which in our example is the default ‘Package’ and ‘Requirement’ which suits our example of importing requirements quite nicely!</p>
<p>Click on the ‘Columns’ tab to select the attributes to display for each element.</p>
<div class="wp-caption alignnone" style="width: 281px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image22.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb22.png?resize=271%2C546" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">select columns to display for the selected elements</p></div>
<p>I’ve selected a few extra columns to display for this example, namely adding the alias, description and status.</p>
<p>Once you’ve selected the extra columns, hit the big EA –&gt; button to export these new columns into Excel.</p>
<div class="wp-caption alignnone" style="width: 614px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image23.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb23.png?resize=550%2C315" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">adding requirement-related columns</p></div>
<p>To make changes to this and re-import is easy! Simply make the changes directly into the Excel and hit the middle button ‘EA =’ to perform a comparison on your changed data and the EA package.</p>
<div class="wp-caption alignnone" style="width: 619px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image24.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb24.png?resize=550%2C330" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">making changes and performing a comparison with the EA package</p></div>
<p>&nbsp;</p>
<p>I’ve gone and changed the status of some requirements to ‘Active’ and the comparison has highlighted the change cells.</p>
<p>To import these back into EA, you guessed it, the 3rd and final button, EA &lt;-</p>
<p>If I know look at my requirements in the ‘Package Browser’ I can see all of my requirements have had their statuses updated to ‘Active’ – magic!</p>
<div class="wp-caption alignnone" style="width: 348px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image25.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb25.png?resize=338%2C585" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">seeing the changes applied back into EA</p></div>
<h3></h3>
<h3>A practical application of importing and re-importing</h3>
<p>If you’ve read some of my other articles, this is the part where I say, well that&#8217;s interesting, but <em>how is it useful?</em> Well wait no more friend, I shall reveal.</p>
<p>In most organisations (unless your already deep in EA world or love your Rational Suite) the requirements are written up in either Word or Excel and have various levels of ‘document management’ applied to it to keep it maintained.</p>
<p>My first step in most projects is to remove the risk and import a reasonable baseline document into EA to begin building a solid model. This works well the first time, but requirements being requirements, they tend to change over time and you may not have the luxury of enforcing maintenance through EA. If that’s the case, you need a repeatable process to keep the EA requirements in sync with any externally managed ‘artifact’ (typically the ubiquitous Word document).</p>
<p>Providing you have a stable requirement number (I hope for at <em>least </em>that much!) you can always keep things maintained.</p>
<h3>A Worked Example  – Team Foundation Server (TFS) synchronisation</h3>
<p>I use this example for TFS but in can be applied to any external system using a reference number.</p>
<p>We have a lot of requirements stored in TFS and updates managed through its version history, so at any given point in time the TFS item will have the latest status and description of the requirement.</p>
<p>We can export the list of TFS requirements into Excel easily (handy MS product integration), but the old copy-and-paste method works just as well if an export function exist for your external system. We end up with a output something like this</p>
<div class="wp-caption alignnone" style="width: 549px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image26.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb26.png?resize=539%2C458" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">an example out of TFS requirements in Excel</p></div>
<p>The title here is generally longer than this but we have a structure which is Client &#8211; Req# – Short Name so I can quickly strip out the rest to get just the Req number as above.</p>
<p>Now that I have something like that, I can use the power of VLOOKUP in Excel to retrieve the value of the TFS item from my eaDocX Excel version. Confused? Let me explain in pictures.</p>
<p>I write a VLOOKUP function to lookup the value of the requirement ID (REQ-001) and find the associated column for the TFS ID.</p>
<p>=VLOOKUP(B17,&#8217;Raw text&#8217;!$C$2:$G$217,1,FALSE)</p>
<p>If your unfamiliar with VLOOKUPS, essentially its using the value of B17 (<em>the requirement ID), </em>looking into the worksheet ‘Raw text’ between cells C2 and G217 for a match and returning the value in the 1st column which is a validation check to ensure the right record is return. The FALSE at the end ensures an exact match is made (not a partial)</p>
<p>So what happens when we do this for our data set?</p>
<div class="wp-caption alignnone" style="width: 565px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image27.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb27.png?resize=550%2C341" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">VLOOKUP returning the relevant TFS tasks for each requirement</p></div>
<p>I know have a list of requirements with their corresponding TFS item # – magic!</p>
<p>Now VLOOKUPs can be tricky, so I add an extra validation step to the one I mentioned above – performing a simple check between the requirement ID return in the VLOOKUP and the original requirement to ensure they are the same. if not, we must be returning the wrong value.</p>
<p>What does this look like?</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image28.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb28.png?resize=550%2C36" border="0" data-recalc-dims="1" /></a></p>
<p>=CELL=CELL</p>
<p>That&#8217;s it! it will return TRUE if they match or FALSE if not. Rinse and repeat for all cells.</p>
<div class="wp-caption alignnone" style="width: 584px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image29.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb29.png?resize=550%2C300" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">adding a bit of basic validation</p></div>
<p><strong>Protip: </strong>I often use a conditional formatting rule to mark FALSE records in red to make life a bit easier.</p>
<p>When I&#8217;m happy everything is in order lets import back into EA.</p>
<p>But wait, where would I store such a value? Well this is precisely what tagged values are and should be used for.</p>
<p>So head to any requirement and view its tagged values.</p>
<div class="wp-caption alignnone" style="width: 412px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image30.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb30.png?resize=402%2C128" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">tagged values</p></div>
<p>None? That&#8217;s okay, we need to add a new one.</p>
<div class="wp-caption alignnone" style="width: 426px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image31.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb31.png?resize=416%2C299" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">adding a new tagged value for the TFS #</p></div>
<p>Don&#8217;t enter a value but give it a useful name.</p>
<p>Now when we return to our eaDocX Excel view, we should be able to see our tagged value in the list of available columns.</p>
<div class="wp-caption alignnone" style="width: 220px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image32.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb32.png?resize=210%2C450" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">selecting the tagged value to be part of the export to excel</p></div>
<p>Look there he is!</p>
<p>Export a new version to Excel.</p>
<div class="wp-caption alignnone" style="width: 610px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image33.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb33.png?resize=550%2C372" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">all blanks because nothing has been added yet</p></div>
<p>A column full of blanks? Excellent. Now we can add our data from the VLOOKUP before and sync it back to EA</p>
<p>Run the Compare function.</p>
<div class="wp-caption alignnone" style="width: 579px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image34.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb34.png?resize=550%2C332" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">performing the compare</p></div>
<p>A whole column of blue changes – that&#8217;s what we want.</p>
<p>Hit the import function to sync these back into EA.</p>
<p>Back in the Package Browser we can see these changes have been applied</p>
<div class="wp-caption alignnone" style="width: 522px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image35.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb35.png?resize=512%2C408" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">seeing the TFS #s in the package browser</p></div>
<p>This can be repeated for other properties such as status, development effort, assignee etc but be careful how much you use because it is additional overhead to maintain.</p>
<p>My motivation for keeping both TFS and EA in sync is to give the power and flexibility of using EA to model, analyse and output static documents for clients while retaining the familiar interface of TFS for the development team.</p>
<p><strong>Note: </strong>It must also be repeated that when importing at scale the validation of data becomes important as it can be quite easy to accidentally overwrite things – so don’t neglect the validation checks and be sure before you commit changes!</p>
<h3></h3>
<h3>A closing note</h3>
<p>Hopefully that&#8217;s a clear enough explanation of how to use the functionality provided by Excel integration from Ian and the eaDocX team and I’ll be back to write-up more on the even more useful documentation generation and document management capabilities it offers – but until then this will have to suffice!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2013/05/09/a-better-way-of-importing-and-maintaining-requirements-within-ea-introducing-eadocx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding a UI (prototype) to Model Simulations in EA</title>
		<link>http://www.hamishking.com/2013/05/03/adding-a-ui-prototype-to-model-simulations-in-ea/</link>
		<comments>http://www.hamishking.com/2013/05/03/adding-a-ui-prototype-to-model-simulations-in-ea/#comments</comments>
		<pubDate>Thu, 02 May 2013 15:23:03 +0000</pubDate>
		<dc:creator>Hamish</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Enterprise Architect]]></category>
		<category><![CDATA[Prototyping]]></category>

		<guid isPermaLink="false">http://www.hamishking.com/?p=868</guid>
		<description><![CDATA[Following on from my previous post on creating and simulating state machines in Enterprise Architect (EA), I will walk through the process of adding a UI to prototype and further interactivity to your model. If you recall the previous article,<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2013/05/03/adding-a-ui-prototype-to-model-simulations-in-ea/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>Following on from my <a href="http://www.hamishking.com/2013/04/19/creating-and-simulating-also-validating-a-state-machine-using-enterprise-architect/">previous post</a> on creating and simulating state machines in Enterprise Architect (EA), I will walk through the process of adding a UI to prototype and further interactivity to your model.</p>
<p>If you recall the previous article, I walked through the process of setting up ‘Triggers’ to run scenarios through your state machine and set simulation variables at state or sub-state level to better represent your application. All of this information was available using the EA ‘variables’ or recording to the Console. We can go a step further and prototype a quick UI to represent our application and/or provide a ‘dashboard’ view of states and variables.</p>
<p>&nbsp;</p>
<h3>Setting up the state machine</h3>
<div class="wp-caption aligncenter" style="width: 632px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb.png?resize=550%2C352" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">the state machine from the previous post</p></div>
<p>Using the state machine I used last time, we need to create a place-holder ‘state machine’ element so we can reference it as a simulation start point.</p>
<p>Add a ‘User  Interface’ diagram to the appropriate place in the package browser.</p>
<p>&nbsp;</p>
<div class="wp-caption aligncenter" style="width: 650px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image1.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb1.png?resize=550%2C263" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">add a user interface to the diagram</p></div>
<p>&nbsp;</p>
<p>This will be our place-holder to put the state machine and User Interface elements.</p>
<p>On the diagram create a new <strong>state machine </strong>element.</p>
<div class="wp-caption aligncenter" style="width: 667px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image2.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb2.png?resize=550%2C249" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">create a new state machine element</p></div>
<p>Then right-click the newly created element and select your existing state machine diagram we created in the <a href="http://www.hamishking.com/2013/04/19/creating-and-simulating-also-validating-a-state-machine-using-enterprise-architect/">previous example</a>.</p>
<div class="wp-caption aligncenter" style="width: 645px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image3.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb3.png?resize=550%2C171" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">select a composite state diagram</p></div>
<p>Locate the state machine diagram in the package browser.</p>
<div class="wp-caption aligncenter" style="width: 360px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image4.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb4.png?resize=350%2C428" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">Locate the state machine in the package browser</p></div>
<p>Now we can create a new User Interface diagram and add that as a frame on to the current diagram (keeps it neater and modular).</p>
<div class="wp-caption aligncenter" style="width: 661px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image5.png"><img class=" " style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb5.png?resize=550%2C270" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">add another UI element on drag into onto the master canvas</p></div>
<p>And drag that on to the Model Default (or whatever you named the original) diagram canvas.</p>
<p>To complete the process of linking a UI to a simulation, we want to open the Execution Analyser and create a script. If you don’t have the window open, select ‘Analyzer’ &#8211; ‘Execution Analyzer’ to bring it back up</p>
<div class="wp-caption aligncenter" style="width: 412px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image6.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb6.png?resize=402%2C137" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">Show the Execution Analyzer</p></div>
<p>&nbsp;</p>
<p>From the Execution Analyzer window, select to add a new script</p>
<div class="wp-caption aligncenter" style="width: 253px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image7.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb7.png?resize=243%2C146" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">Add a new simulation script to the Execution Analyzer</p></div>
<p>And they key step for us is the last tab, ‘Simulation’ and defining the ‘Entry Point’ and <em>Input </em>behaviour.</p>
<p>Select the ‘..’ icon to locate your state machine element for the Entry Point.</p>
<div class="wp-caption aligncenter" style="width: 512px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image8.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb8.png?resize=502%2C232" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">Define a state machine to be the simulation entry point</p></div>
<p>That sets the entry diagram we want to use for the simulation.</p>
<p>To connect the User Interface to the simulation, we need to define a behaviour (in JavaScript notation) to display the correct UI element.</p>
<p>The format of this command is as follows:</p>
<p>dialog.<em>CreateOrder</em>.Show = True;</p>
<p>where ‘<em>CreateOrder’ </em>is the name of User Interface we created earlier (‘CreateOrder’ in my example above).</p>
<p>As you may have guessed from the above JavaScript, the model simulation script will start the simulation on the ‘Validate Example’ state machine and as it’s first point of business, it will display the ‘CreateOrder’ User Interface we created.</p>
<p><strong>Note: </strong>Another method of displaying the UI is to assign the same command (above) to the first transition of the state diagram (e.g. Initial –&gt; Created in my example). Whichever method works for you!</p>
<h3></h3>
<h3>Creating the UI and assigning actions to things!</h3>
<p>So now we have a model simulation that will give us an actual rendered screen we should probably put something on it!</p>
<p>Open up the <em>CreateOrder </em>User Interface  we created earlier and lets start adding elements.</p>
<p>Using the Toolbox you can add standard UI elements or use the Win32 elements to add things onto your prototype. Here is a horridly rushed example of some text and a button <strong>(note the list of Win32 UI control types in the toolbox)</strong></p>
<div class="wp-caption aligncenter" style="width: 601px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image9.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb9.png?resize=550%2C393" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">building a basic user interface</p></div>
<p>So now I’ve added a UI to the model and hooked it up using a simulation script, what happens if I run it? Well let see.</p>
<p>Going to back to the ‘Execution Analyzer’, right click the script and select ‘Start Simulation’</p>
<div class="wp-caption aligncenter" style="width: 375px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image10.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb10.png?resize=365%2C287" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">start the model simulation from the execution analyzer</p></div>
<p>What do we get?</p>
<div class="wp-caption aligncenter" style="width: 356px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image11.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb11.png?resize=346%2C290" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">example rendered UI element during a simulation</p></div>
<p>A ‘nicely’ rendered (I use the term nicely loosely of course!) dialog box that we mocked up but the button doesn’t do anything – lets fix that!</p>
<p>&nbsp;</p>
<h3>Adding Signal behaviours to Button and making our UI interactive</h3>
<p>Head back to our CreateModel user interface and view the properties of the ‘No More Items’ button. On the ‘tagged values’ tab we want to add a new tagged value.</p>
<div class="wp-caption aligncenter" style="width: 467px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image12.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb12.png?resize=457%2C138" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">creating an OnClick action for the button</p></div>
<p>The naming of this tagged value is very specific and must always be named ‘OnClick’ with the following value ‘BroadcastSignal(“ “)</p>
<div class="wp-caption aligncenter" style="width: 367px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image13.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb13.png?resize=357%2C180" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">defining the trigger to use for the button</p></div>
<p>When the simulation is interpreted, EA will parse the above tagged value as a JavaScript function and attempt to fire the trigger “Signal Name”. So what we were doing before manually using the ‘Simulation events’ and ‘Waiting Triggers’ window in EA, we can no build into our interactive prototype to reasonable something more alike our application!</p>
<p>It is important to note that the trigger type must be ‘Signal’ for this to work. To check this, return to our state machine and find an appropriate transition. In my example we are using a button called ‘No more items’ which corresponds to following transition on my state machine.</p>
<div class="wp-caption aligncenter" style="width: 577px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/clip_image001.png"><img style="display: inline; border: 0px;" title="clip_image001" alt="clip_image001" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/clip_image001_thumb.png?resize=550%2C120" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">locating the appropriate trigger</p></div>
<p>Bringing up the properties of this transition will allow me to view the Triggers associated with it.</p>
<div class="wp-caption aligncenter" style="width: 464px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image14.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb14.png?resize=454%2C190" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">checking the trigger type of the transition</p></div>
<p>Notice the type is ‘Signal’. Had this been one of the other trigger types our simulation would not register the event.</p>
<p>So when we run the simulation again, we can actually use the button on the UI to progress the simulation.</p>
<div class="wp-caption aligncenter" style="width: 424px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image15.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb15.png?resize=414%2C376" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">simulation before clicking the rendered button</p></div>
<p>&nbsp;</p>
<p>Selecting the button progresses us further into the state machine as if we had used the ‘waiting triggers’ window in the bottom right of my example.</p>
<div class="wp-caption aligncenter" style="width: 548px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image16.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb16.png?resize=538%2C353" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">simulation progressed after selecting the rendered button</p></div>
<p>So you&#8217;ve now added some interesting tricks to your model but at this point you still might be thinking – “that&#8217;s all very well, but that isn&#8217;t all that <strong>useful to me”</strong>. Well the initial driver for me to head down this path wasn&#8217;t to create a prototype application based on my state machine but was in fact to provide a better view of the variables and states I was assigning throughout my model.</p>
<h3>Introducing the Model Simulation Dashboard!</h3>
<p>So go along with my very basic prototype I built an even simpler dashboard view which sits along side the prototype and displays the variable states (as recorded in the EA ‘Locals’ window) and any additional info I want to record in my simulation.</p>
<p>To this all I do is create a second UI diagram, and call this at the first transition (from Initial –&gt; Created in my example)</p>
<div class="wp-caption aligncenter" style="width: 521px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image17.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb17.png?resize=511%2C160" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">linking a second UI for a &#8216;dashboard&#8217; type view</p></div>
<p>dialog.Screen1.Show=true;<br />
dialog.CreateOrder.Show=true;</p>
<p>In the above example, <em>Screen1</em> (horribly named I know!) is my dashboard view and <em>CreateOrder </em>is the first UI screen from our example above.</p>
<p>What does that look like?</p>
<div class="wp-caption aligncenter" style="width: 585px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image18.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb18.png?resize=550%2C182" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">example of dashboard view alongside the running prototype</p></div>
<p>I have my dashboard running alongside my UI screens to give an alternative view of things I need to track at any given time.</p>
<p><strong>Protip: You can change the stereotype of a Screen element to be a Win32Dialog and get additional properties, such as setting the window to be in the centre – very useful when using multiple Screens.</strong></p>
<div class="wp-caption aligncenter" style="width: 458px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image19.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/05/image_thumb19.png?resize=448%2C176" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">Protip: adding a centre position property to the screen element</p></div>
<h3>All done!</h3>
<p>Well thats the basics covered of adding a prototype UI to your model simulations and if there is further interest I can share some tips on making a more dynamic prototype in EA, hiding elements until required – but I shall save that for another day.</p>
<p>Hope that was useful to someone!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2013/05/03/adding-a-ui-prototype-to-model-simulations-in-ea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating and Simulating (also validating) a state machine using Enterprise Architect</title>
		<link>http://www.hamishking.com/2013/04/19/creating-and-simulating-also-validating-a-state-machine-using-enterprise-architect/</link>
		<comments>http://www.hamishking.com/2013/04/19/creating-and-simulating-also-validating-a-state-machine-using-enterprise-architect/#comments</comments>
		<pubDate>Thu, 18 Apr 2013 21:24:33 +0000</pubDate>
		<dc:creator>Hamish</dc:creator>
				<category><![CDATA[Enterprise Architect]]></category>

		<guid isPermaLink="false">http://www.hamishking.com/?p=795</guid>
		<description><![CDATA[Recently I have been reverse engineering a state transition (officially a state machine but I prefer the term state transition model) to understand the complex life-cycle of our application’s central object. I had seen a demo on model simulation but<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2013/04/19/creating-and-simulating-also-validating-a-state-machine-using-enterprise-architect/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>Recently I have been reverse engineering a state transition (<em>officially a state machine but I prefer the term state transition model</em>) to understand the complex life-cycle of our application’s central object.</p>
<p>I had seen a demo on model simulation but the focus was more on a generated model from source rather than a hand fashioned UML model. This post is a walk through on the process and hopefully some takeaways from what I’ve learned.</p>
<p>&nbsp;</p>
<h3>Understanding complex systems</h3>
<p>I came into a project that is well down the road to completion but sorely lacking in any concrete documentation which was becoming a pain point for everyone – and particularly for me – the new analyst tasked with helping out.</p>
<p>One of my first tasks was to document some ‘light’ form of a state model to get an idea of all of the possible scenarios and break down some of the complexity. I’ve iterated through several versions (or styles) of the state model trying to provide a simpler view of states and state transitions but the model was just very complicated and the diagrams were too busy. Understanding it myself was hard enough and trying to validate each of the scenarios was proving far too time-consuming.</p>
<p>&nbsp;</p>
<h3>States and multiple sub-states – too many paths!</h3>
<p>My main problem was due to having states and multiple sub-states being dependent on single transitions. For example, we had something like this</p>
<p>OBJECT (super state life-cycle)</p>
<blockquote><p><span style="background-color: #ffffff;">&#8211; sub item1 (sub state life-cycle)</span></p>
<p><span style="background-color: #ffffff;">&#8211; sub item2 (sub state life-cycle)</span></p>
<p><span style="background-color: #ffffff;">&#8211; shipping item (sub state life-cycle)</span></p>
<p><span style="background-color: #ffffff;">&#8211; other items (sub state life-cycle)</span></p></blockquote>
<p>So for every transition, we could have movements of one or all of the <strong>sub-states</strong>, and depending on what states they were in, we could also have <strong>super-state </strong>changes.</p>
<div class="wp-caption aligncenter" style="width: 638px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image15.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb15.png?resize=550%2C272" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">example of super-state / sub-state model I quickly threw together to serve as an example</p></div>
<p>&nbsp;</p>
<p>A threw together a quick example of what things (sort of!) looked like in our world – its a horribly rushed example but gets across the point.</p>
<p>&nbsp;</p>
<h3>Model simulation and simulation variables!</h3>
<p>So I got to the point where I’d modelled enough states and sub-states that it was very difficult to validate the accuracy – so I decided to use a bit of smarts and try out model simulation.</p>
<p>I setup my workspace to get the simulation controls ready. It looks somewhat like this.</p>
<div id="attachment_818" class="wp-caption aligncenter" style="width: 726px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/simulationworkspace.png"><img class=" " style="display: inline; border: 0px;" title="simulation workspace" alt="simulation workspace" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/simulationworkspace_thumb.png?resize=550%2C146" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">the simulation workspace configured to show variables, triggers and simulation console</p></div>
<p>With this setup we can kick off model simulations to run through transitions, select the required ‘trigger’ to choose paths and even save triggers to define pre-defined scenarios to run through. <strong>Note: I’ll post a separate article on how to do each step in more detail.</strong></p>
<p>All of this is nothing new? Well that&#8217;s get into some simulation variables to track what&#8217;s going on at each point.</p>
<p>First of all, I’ve run through a created scenario manually (interpreted in EA language) by manually selecting the triggers as they come up. You can then save these as a trigger set and select to signal the triggers automatically – now we can fly through our models after defining our criteria.</p>
<div class="wp-caption aligncenter" style="width: 819px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image17.png"><img style="display: block; border-width: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb17.png?resize=550%2C454" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">model simulation in progress</p></div>
<p>The above shows a simulation in action as it goes through the path I defined manually and you can see the trigger sequence waiting to be fired to progress the simulation further.</p>
<div class="wp-caption aligncenter" style="width: 702px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image18.png"><img style="display: block; border-width: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb18.png?resize=550%2C201" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">showing the simulation console and &#8216;waiting triggers&#8217; panel</p></div>
<p>What I end up at the end is a list of states / decisions / elements that I have passed through in the console log and a list of triggers that were fired.</p>
<p>For me this wasn’t all that useful – just a flat list of states and sub-states at a single level wasn&#8217;t;t really enough – plus there was more detail I wanted to capture that would make these even more useful.</p>
<h3>Enter simulation variables</h3>
<p>I stumbled on simulation variables when trawling through some EA help file about getting my simulations to work and instantly through of a use (more on that soon).</p>
<p>Given I am reverse engineering a model and not trying to do and model-driven development, I feel I can use simulation in this way but I certainly appreciate this is a hack job and not their intended purpose (sorry everyone!).</p>
<p>I added an operation to each state called ‘updateVars’ and added a behaviour to each to assign simple variable.</p>
<div class="wp-caption aligncenter" style="width: 616px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image19.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb19.png?resize=550%2C165" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">adding JavaScript simulation variables to add another layer of interactivity</p></div>
<p>EA uses JavaScript notation when performing UML model simulations, so we can just assign variables as we need them. Now you see why I had the variable window open before right?</p>
<p><strong>Protip:</strong> To avoid cluttering up your diagram with all your updateVars on each state element – hide the operations from the diagram in the diagram properties. Un-tick the ‘Operations’ box under Show Compartments<strong>.</strong></p>
<div class="wp-caption aligncenter" style="width: 595px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image20.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb20.png?resize=550%2C340" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">Protip &#8211; hide your operations from your state machine diagram to avoid clutter</p></div>
<p>&nbsp;</p>
<p>So now that I have added simulation variables to my model, I can see what the states and sub-states are at any given point in the model – either by pausing or setting simulation break points (another great feature!).</p>
<div class="wp-caption aligncenter" style="width: 735px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image21.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb21.png?resize=550%2C382" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">example of paused simulation showing variables and waiting triggers</p></div>
<h3>Writing to simulation console</h3>
<p>Although simulation variables were interesting they didn&#8217;t really offer me much over what I had before – just a different way of viewing the same state/substate information. What I really wanted was to be able to use this concept to show other important things that are going on at certain steps.</p>
<p>Another cool feature Sparx have included here is being about to output to the simulation console so you can supplement the standard list of element names with your own text.</p>
<p>So at certain steps, I have UI actions or account deductions, that I wanted to bring into my model and highlight to my stakeholders where and when these were actually occurring. Strictly nothing to do with a state machine but I&#8217;m not here to win UML medals – just provide my stakeholders something they can understand!</p>
<p>So on one of the updateVars actions I can add another line like this:</p>
<div class="wp-caption aligncenter" style="width: 529px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image22.png"><img style="display: block; border-width: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb22.png?resize=519%2C150" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">adding extra information to the console log</p></div>
<p>The magic words here are Trace() which allow you to output a string to the console log. What does it look like in the simulation console? I&#8217;m glad you asked – it looks something like this.</p>
<div class="wp-caption aligncenter" style="width: 568px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image23.png"><img style="display: block; border-width: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb23.png?resize=550%2C270" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">seeing the Trace() output onto the simulation console</p></div>
<p>I ended up adding custom Trace() events for each state so I could better represent state /sub state movements and also record important events along the model.</p>
<p>Hopefully you followed along with me on this and I’ve had some interest regarding doing a screencast on the topic so please let me know in the comments if you’re interested and I’ll get one together.</p>
<p>This was an overview article to demonstrate the main features and I will come back and go through some of the steps I rushed through in more detail in the next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2013/04/19/creating-and-simulating-also-validating-a-state-machine-using-enterprise-architect/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Track changes in generated documents with EA + SharePoint (or without!)</title>
		<link>http://www.hamishking.com/2013/04/17/track-changes-with-generated-documents-with-ea-sharepoint-or-without/</link>
		<comments>http://www.hamishking.com/2013/04/17/track-changes-with-generated-documents-with-ea-sharepoint-or-without/#comments</comments>
		<pubDate>Tue, 16 Apr 2013 15:39:15 +0000</pubDate>
		<dc:creator>Hamish</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Enterprise Architect]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[document management]]></category>
		<category><![CDATA[EA]]></category>
		<category><![CDATA[EA Document management]]></category>
		<category><![CDATA[EA RTF generation]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://www.hamishking.com/?p=783</guid>
		<description><![CDATA[I wanted to share a tip that I&#8217;ve been using for a while that seems to be a reason some people give for not liking Enterprise Architect (EA) – not being able to track document changes. EA works by generating RTF documents<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2013/04/17/track-changes-with-generated-documents-with-ea-sharepoint-or-without/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>I wanted to share a tip that I&#8217;ve been using for a while that seems to be a reason some people give for not liking Enterprise Architect (EA) – not being able to track document changes.</p>
<p>EA works by generating RTF documents of its content which many users prefer of the more interactive HTML renderings of that same content – either due to habit or function. While EA has countless benefits for analysis (just read this blog for many examples!) it doesn&#8217;t provide document versioning / differencing out of the box.</p>
<p>This is no problem at all since MS Word has all the differencing functionality we need to provide that same level of ‘track changes’ that we have all come to depend on (or hate!).</p>
<p>Lets define a scenario to frame our example:</p>
<h2>The example scenario</h2>
<p>Ok – so you generated a use case document from EA (<em>Enquiry Use Case v0.1 rtf</em>) and sent it around for an internal review the previous week and have been updating the EA model with the required changes. All of the feedback has been incorporated into the model and you proceed to generate a new version, this time calling it <em>Enquiry Use Case v0.2.rtf</em>.</p>
<p>So we now have two documents. The v0.2 document contains our updates but doesn&#8217;t contain any mark-up to distinguish what has changed which will annoy our reviewing stakeholders.</p>
<p>So what do we do? We turn to the powerful ‘compare’ functionality built into Microsoft Word of course!</p>
<p>In either word document, select the ‘Review’ tab on the ribbon, select to ‘Compare’ button and the ‘Compare’ button again.</p>
<div class="wp-caption aligncenter" style="width: 569px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image9.png"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb9.png?resize=550%2C224" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">Select the Word Compare function</p></div>
<p>Now we are presented with the comparison options that Word will use when parsing each document.</p>
<p>&nbsp;</p>
<div class="wp-caption aligncenter" style="width: 507px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image10.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb10.png?resize=497%2C393" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">Word compare options</p></div>
<p>&nbsp;</p>
<p>Original document – locate the v0.1 document</p>
<p>Revised document – locate the v0.2 document</p>
<p>Select the ‘More &gt;&gt;’ button to see further options</p>
<p>Ensure ‘Tables’ is ticked if your RTF template is set up to format using tables</p>
<p>Ensure ‘Show Changes in:’ option is set to <em>New document</em></p>
<p>Ready? Hit ‘OK’ to generate a new document with the marked changes</p>
<div class="wp-caption aligncenter" style="width: 297px"><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image11.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb11.png?resize=287%2C234" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">example of generated comparison document</p></div>
<p>We now have a tracked changes displayed for two separately generated documents.</p>
<p>Whats the SharePoint connection? well..</p>
<h2>SharePoint for document management</h2>
<p>Maintaining document versions is a pain, especially when following a method of manually producing document change sets as above, so using SharePoint makes this a little easier.</p>
<p>Office’s built in SharePoint integration means we can overwrite our previous version with our newly generated model and let SharePoint handle the pain of version tracking.</p>
<p><strong>CAVEAT: </strong>This only works when the document library settings for SharePoint are configured to force versioning (<em>Document Library Settings -&gt; Versioning Settings </em>)</p>
<div id="attachment_787" class="wp-caption aligncenter" style="width: 310px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/doc-library-versioning-settings.png"><img class="size-medium wp-image-787  " title="document library versioning settings" alt="document library versioning settings" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/doc-library-versioning-settings.png?resize=300%2C252" data-recalc-dims="1" /></a><p class="wp-caption-text">document library versioning settings</p></div>
<p>Make sure ‘<em>Create major and minor (draft) versions’ </em>is checked and</p>
<p>‘<em>Require documents to be checked out before they can be edited? </em>is set to ‘Yes’.</p>
<p>If you don’t have permissions to set the above, contact your SharePoint administrator and they can enable this specifically for the SharePoint document library that you are using.</p>
<p>With versioning configured, rather than saving locally and making sure we rename versions appropriately, we can simply save over the top of the existing version.</p>
<div class="wp-caption aligncenter" style="width: 320px"><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image13.png"><img style="display: block; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb13.png?resize=310%2C346" border="0" data-recalc-dims="1" /></a><p class="wp-caption-text">Save directly to SharePoint from Word</p></div>
<p>Select or type a ‘SharePoint’ in the dialogue and locate the existing document. It will prompt if you want to overwrite the existing document – confirm this and we are done.</p>
<p>We have overwritten the current <strong>version </strong>only and we can easily roll back to any previous as required – no messing around with file naming conventions, multiple documents sources and all the pains that exist without document management.</p>
<p>When we have multiple versions, Word gives us an added feature that we can use for our document comparing advantage.</p>
<p>&nbsp;</p>
<p>All previous versions are accessible directly from Word (or any Office app).</p>
<p>We also get an added bonus feature under the ‘Compare’ function we demonstrated earlier.</p>
<p>&nbsp;</p>
<div id="attachment_785" class="wp-caption aligncenter" style="width: 242px"><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/compare-specific-version.png"><img class="size-medium wp-image-785 " title="compare specific version" alt="compare specific version" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/compare-specific-version.png?resize=232%2C300" data-recalc-dims="1" /></a><p class="wp-caption-text">compare specific version options when working from SharePoint document</p></div>
<p>Here we get the <em>Major </em>and <em>Last Version </em>options again but we also get the <em>Specific Version</em> option which allows to select ANY version – useful when you&#8217;ve updated several minor versions.</p>
<p>Now you should have one less reason not to use EA and few handy SharePoint document management tips to boot!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2013/04/17/track-changes-with-generated-documents-with-ea-sharepoint-or-without/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Import requirements into Enterprise Architect with CSV Import</title>
		<link>http://www.hamishking.com/2013/04/12/import-requirements-with-csv-import/</link>
		<comments>http://www.hamishking.com/2013/04/12/import-requirements-with-csv-import/#comments</comments>
		<pubDate>Fri, 12 Apr 2013 09:37:31 +0000</pubDate>
		<dc:creator>Hamish</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Enterprise Architect]]></category>

		<guid isPermaLink="false">http://www.hamishking.com/?p=749</guid>
		<description><![CDATA[I want to share a quick guide to importing existing requirements into Enterprise Architect in order to start building traceability and management structure over your requirements. In a lot of organisations, requirements definition takes the unsophisticated form of either a<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2013/04/12/import-requirements-with-csv-import/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>I want to share a quick guide to importing existing requirements into Enterprise Architect in order to start building traceability and management structure over your requirements.</p>
<p>In a lot of organisations, requirements definition takes the unsophisticated form of either a word or excel document. This is typically due to existing templates, familiarity and availability of Microsoft Office or lack of experience in alternative options.</p>
<p>In either case, you can take these flat formats and import them into EA with a relatively easy and repeatable process &#8211; as I will show you below.</p>
<p>At the least, I would expect a requirements document to have the following items per requirement statement:</p>
<ul>
<li>Requirement number</li>
<li>Requirement definition</li>
<li>Priority</li>
<li>
<p style="display: inline !important;">Owner</p>
</li>
</ul>
<p>Can also include other details that you wish to track about a given element, such as category, project phase t-shirt size &#8211; it could be anything!</p>
<p>If the document is currently in MS Word, then copy and paste the requirements portions into Excel, and tidy up formatting as necessary until you have just the relevant requirement columns.</p>
<h2>Set up EA CSV Import Definition</h2>
<p>First, Create a top level container package to hold our requirements.</p>
<p>Select the top level item (normally &#8216;Model&#8217; unless you&#8217;ve renamed it) and click the &#8216;New Package&#8217; icon. Give it an appropriate name &#8211; &#8216;Requirements&#8217; works for me.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image1.png"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb1.png?resize=313%2C200" border="0" data-recalc-dims="1" /></a></p>
<p>Then, right click on the newly created package and select &#8216;Import/Export&#8217; -&gt; &#8216;CSV Import/Export&#8217;.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image2.png"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb2.png?resize=542%2C219" border="0" data-recalc-dims="1" /></a></p>
<p>This will be display the CSV Import/Export window where you can select a file to import and a template to use. Seeing as we having created a template yet, we will need to do that first.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image3.png"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb3.png?resize=444%2C429" border="0" data-recalc-dims="1" /></a></p>
<p>So where it says &#8216;Specification&#8217; and there is a button to the right &#8216;Edit/New&#8217; &#8211; click that.</p>
<p>Now we are on the specification page we can provide the details for our template and define the fields we want to create for our requirements.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image4.png"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="image" alt="image" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb4.png?resize=490%2C567" border="0" data-recalc-dims="1" /></a></p>
<ul>
<li>Fill out the Specification name and notes fields as appropriate.</li>
<li>Ignore the default filename.</li>
<li>Set the default direction to import</li>
<li>Under default types enter: &#8216;requirement&#8217;. This states that every element we want to import will be a <em>requirement</em> element.</li>
<li>Make sure the &#8216;Preserve hierarchy&#8217; is unchecked (only for first import &#8211; it&#8217;s important later on when running an updated CSV back into EA!)</li>
</ul>
<p>With me so far? Great!</p>
<p>Now for the available fields. This lists the standard elements and allows you to select the EA properties you wish assign from your import file.</p>
<p>Typically my &#8216;selected fields&#8217; look this (in order):</p>
<ul>
<li>Name</li>
<li>Alias</li>
<li>Type</li>
<li>
<p style="display: inline !important;">Notes</p>
</li>
</ul>
<p>optionally include other items such as</p>
<ul>
<li>Phase</li>
<li>Priority</li>
</ul>
<p>The order of which these are sorted is imported because this will exactly match the columns in your import spreadsheet.</p>
<p>So if you&#8217;re following along with my example, I had the following columns in my import file:</p>
<ul>
<li>Requirement number</li>
<li>Requirement definition</li>
<li>Priority</li>
<li>Owner</li>
</ul>
<p>So what we are doing here is a mapping from import file -&gt; EA property.</p>
<p>So let&#8217;s return to our specification fields and run through each:</p>
<p><strong>Name </strong>- for this I normally truncate the definition at a certain length and use that as the name, but you can write an appropriate name if you feel the need &#8211; not plausible for long lists of requirements (100+).</p>
<p><em>Tip</em> &#8211; Use the following excel formula to truncate to 60 characters and copy and paste down the column: =LEFT(B2,60) replacing B2 with the requirement definition.</p>
<p>It is also important to then copy and paste the <em>VALUES</em> only over top so we don&#8217;t end up importing the formula into EA!</p>
<p><strong>Alias </strong>- I use the requirement number for this, so switch this around so requirement #s are displayed in the 2nd column.</p>
<p><strong>Type</strong> &#8211; this is the column EA will use to determine the type of element to create, so in our case they will all be requirement. copy and paste this down the column to every requirement row has the word &#8216;requirement&#8217;.</p>
<p><strong>Notes </strong>- This is the key column which will contain the body of your requirements. You have some formatting issues if you had rich text from a word document, but its worth the time to clean this up at some point, although arguably easier to do this within EA.</p>
<p>The other columns for here are optional and you can pick and choose appropriate EA properties to map your other data too &#8211; do this at your discretion based on project needs.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image5.png"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb5.png?resize=482%2C548" border="0" data-recalc-dims="1" /></a></p>
<p>If you can&#8217;t find an appropriate EA property, then create a tagged value and assign it to the specification</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image6.png"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="image" alt="image" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb6.png?resize=461%2C288" border="0" data-recalc-dims="1" /></a></p>
<p>Save the specification and we are ready to import!</p>
<h2>Importing the file with our specification</h2>
<p>Before we can import the file into EA, we need to take our freshly re-worked excel file and save as a .CSV</p>
<p>Select File -&gt; &#8216;Save As&#8217; and select the CSV format.</p>
<p>Now back on the &#8216;Import/Export&#8217; window, select the newly created specification, check the direction is &#8216;Import&#8217;.</p>
<p>Under the file, locate the import file you saved in the above step.</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image7.png"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb7.png?resize=503%2C482" border="0" data-recalc-dims="1" /></a></p>
<p>When you&#8217;re ready to go &#8211; hit &#8216;Run&#8217;. (Make sure you have closed the CSV file from the earlier step otherwise EA will throw an error saying it can&#8217;t open the file)</p>
<p>Success! We should now have a list of imported elements under the package you selected earlier</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image8.png"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb8.png?resize=518%2C492" border="0" data-recalc-dims="1" /></a></p>
<p>Stay posted for my follow up article on how to update and managed changes to requirements while retaining structure!</p>
<p>Hope that was helpful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2013/04/12/import-requirements-with-csv-import/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project structure in Enterprise Architect</title>
		<link>http://www.hamishking.com/2013/04/10/project-structure-in-ea/</link>
		<comments>http://www.hamishking.com/2013/04/10/project-structure-in-ea/#comments</comments>
		<pubDate>Wed, 10 Apr 2013 12:26:17 +0000</pubDate>
		<dc:creator>Hamish King</dc:creator>
				<category><![CDATA[Enterprise Architect]]></category>
		<category><![CDATA[EA]]></category>
		<category><![CDATA[EA Intro]]></category>
		<category><![CDATA[Project Structure]]></category>

		<guid isPermaLink="false">https://hamishking.wordpress.com/?p=553</guid>
		<description><![CDATA[Getting the project structure right in EA is an important step to understanding how EA works and  makes the process of generating documentation a lot easier. Lets take a look at the standard project structure when we create a new<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2013/04/10/project-structure-in-ea/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>Getting the project structure right in EA is an important step to understanding how EA works and  makes the process of generating documentation a lot easier.</p>
<p>Lets take a look at the standard project structure when we create a new EA project</p>
<p>Select &#8216;File&#8217; -&gt; &#8216;New Project&#8217; and enter a file name and location for your project</p>
<p>Then select the type of model you wish to create for the purposes of this demo I&#8217;ve gone with &#8216;Requirements&#8217; and &#8216;Use Case&#8217;</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0013.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="clip_image001[3]" alt="clip_image001[3]" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0013_thumb.png?resize=501%2C417" border="0" data-recalc-dims="1" /></a></p>
<p>You should now have a blank project from which to build your model.</p>
<p>On your right (if you haven&#8217;t moved things around) you should be able see the (empty) project browser window.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0023.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-width: 0px;" title="clip_image002[3]" alt="clip_image002[3]" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0023_thumb.png?resize=244%2C211" border="0" data-recalc-dims="1" /></a></p>
<p>You are presented with a blank model, with the first (root) element of the project named &#8216;Model&#8217;. If it helps, you can rename this element to something more appropriate, such as the name of the project, or stream of work.</p>
<p>At this point, think of the project browser as a form of folder structure where the &#8216;Model&#8217; element is the C: drive and you will begin to create &#8216;packages&#8217; under it to organise your work.</p>
<p><strong>Tip:</strong> If you can&#8217;t see the project browser, hit &#8216;Alt + 0&#8242; or &#8216;View&#8217; -&gt; Project &#8216;Browser&#8217; from the file menu.</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0033.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="clip_image003[3]" alt="clip_image003[3]" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0033_thumb.png?resize=408%2C150" border="0" data-recalc-dims="1" /></a></p>
<p>So now we want to build out some structure to the form the skeleton of our model. This will help guide users both viewing and adding to the model, and help when we move on to working with the document templates later on.</p>
<p>If you recall we selected this project  to be a &#8216;requirements and a use case model,&#8217; so we now want to create a container package for each of these. So go ahead and make two packages, &#8216;Requirements Model&#8217; and &#8216;Use Case Model&#8217; under the &#8216;Model&#8217; element.</p>
<p>To do this, make sure the &#8216;Model&#8217; element is selected and click the small &#8216;folder&#8217; icon on the project browser toolbar.</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0043.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-width: 0px;" title="clip_image004[3]" alt="clip_image004[3]" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0043_thumb.png?resize=244%2C118" border="0" data-recalc-dims="1" /></a></p>
<p>This will pop up a window to create a new view and ask to select a type. This really only affects the type of icons used for the package, but go ahead and select &#8216;Use Case&#8217;.</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0053.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="clip_image005[3]" alt="clip_image005[3]" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0053_thumb.png?resize=437%2C429" border="0" data-recalc-dims="1" /></a></p>
<p>When you have added both packages, you should see something like the below image.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0063.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="clip_image006[3]" alt="clip_image006[3]" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0063_thumb.png?resize=305%2C123" border="0" data-recalc-dims="1" /></a></p>
<p><strong>Note:</strong> The two package icons are different as I selected the &#8216;simple&#8217; view icon for the requirements model package</p>
<p>There is another option here to create a package from a wizard &#8211; this may help your understanding of how to structure your models as it creates a number of elements by default.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0073.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="clip_image007[3]" alt="clip_image007[3]" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0073_thumb.png?resize=304%2C342" border="0" data-recalc-dims="1" /></a></p>
<p>To create a model from a wizard, right click the root element &#8216;Model&#8217;, and select the appropriately named &#8216;Add a New Model using Wizard&#8217; option.</p>
<p>We are presented with the same window as earlier when we created a new project.</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0083.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="clip_image008[3]" alt="clip_image008[3]" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2011/04/clip_image0083_thumb.png?resize=524%2C463" border="0" data-recalc-dims="1" /></a></p>
<p>If you select &#8216;Use Case&#8217; here and hit &#8216;OK&#8217;, it will go ahead and create another package named &#8216;Use Case Model&#8217;, this time with some pre-created elements thrown in to boot. Let&#8217;s go ahead and look at what its created.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/clip_image001.png"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" title="clip_image001" alt="clip_image001" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/clip_image001_thumb.png?resize=217%2C240" border="0" data-recalc-dims="1" /></a></p>
<p>Here you can see the elements generated by the wizard &#8211; a sample use case diagram, a package each for actors and use cases and same sample elements.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/clip_image0021.png"><img style="display: inline; border: 0px;" title="clip_image002" alt="clip_image002" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/clip_image002_thumb1.png?resize=550%2C395" border="0" data-recalc-dims="1" /></a></p>
<p>&nbsp;</p>
<p>The generated use case diagram gives some explanatory text on what each element does and how it relates to other UML elements.</p>
<p>We can either start with this model and edit the generated elements or just start from scratch. For clarity, lets start from scratch by deleting the generated diagram and retaining the generated elements (Packages, Actors and Use Cases)</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/clip_image00141.png"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="clip_image001[4]" alt="clip_image001[4]" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/clip_image0014_thumb1.png?resize=220%2C471" border="0" data-recalc-dims="1" /></a></p>
<p>Right click the &#8216;Use Case Model&#8217; diagram and select &#8216;Delete Use Case Model&#8217;</p>
<p>Now ensuring we have the &#8216;Use Case Model&#8217; package currently selected, select the &#8216;New Diagram&#8217; button within the project browser</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/clip_image004.png"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" title="clip_image004" alt="clip_image004" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2013/04/clip_image004_thumb.png?resize=233%2C244" border="0" data-recalc-dims="1" /></a></p>
<p>EA will then bring up the new diagram dialog where you can select a type of diagram to create and prompt for a diagram name.</p>
<p>In the example below I have named it &#8216;Search for books&#8217;</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/clip_image005.png"><img style="display: inline; border-width: 0px;" title="clip_image005" alt="clip_image005" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2013/04/clip_image005_thumb.png?resize=550%2C377" border="0" data-recalc-dims="1" /></a></p>
<p>So what does this have to do with project structure? Documentation in EA centres around having a well organised model therefore allowing the flexibility to generate documentation at the required level – either at the micro or macro level.</p>
<p>By containing our various elements within packages, appropriately structured and named, we can quickly generate highly specified, focused documentation or higher-level, broader documentation without the hassle of manually adding or removing content after generation.</p>
<p>Let’s build up our sample model a little more to represent what you would <strong>actually use</strong>.</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image.png"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="image" alt="image" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2013/04/image_thumb.png?resize=220%2C502" border="0" data-recalc-dims="1" /></a></p>
<p>Here I have added 5 ‘root’ packages that contain distinctly different models:</p>
<ul>
<li>Requirements – to hold the all important requirements model</li>
<li>Use Cases – to hold the use case/user story expansions to met the requirements laid out in the requirements package</li>
<li>Domain Model – a conceptual data modelling area to map out the data model. Can and should be supplemented with a a logical (physical data model as system is developed)</li>
<li>State Transition Model – a later-stage model but important when rest of the model matures and complexities arise. Particularly useful when reverse engineering a system</li>
</ul>
<p>The reasons for why this is important may not be immediately clear but should make more sense when it comes time to generate documentation from our model. More on that in my next article! In the mean time, happy building!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2013/04/10/project-structure-in-ea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2013 &#8211; a new year wishlist/checklist</title>
		<link>http://www.hamishking.com/2013/01/02/2013-a-new-year-wishlistchecklist/</link>
		<comments>http://www.hamishking.com/2013/01/02/2013-a-new-year-wishlistchecklist/#comments</comments>
		<pubDate>Wed, 02 Jan 2013 10:13:41 +0000</pubDate>
		<dc:creator>Hamish</dc:creator>
				<category><![CDATA[Business Analysis]]></category>

		<guid isPermaLink="false">http://www.hamishking.com/?p=697</guid>
		<description><![CDATA[As with a lot of people, I&#8217;ve decided to define my goals for this year in blog form and publish it as a general reminder of my failings next time round. &#160; 2012 was the year of me &#8211; largely<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2013/01/02/2013-a-new-year-wishlistchecklist/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>As with a lot of people, I&#8217;ve decided to define my goals for this year in blog form and publish it as a general reminder of my failings next time round.</p>
<p>&nbsp;</p>
<p>2012 was the year of me &#8211; largely spent travelling extensively in South America and then moving from Australia to London.</p>
<p>2013 the focus goes back  to work and bringing the blog back to life.</p>
<p>So at a high level, the goals:</p>
<ul>
<li><span style="line-height: 14px;">dust off the blog &#8211; change focus of blog to more general me and my work rather than the current &#8216;business analysed&#8217; theme.</span></li>
<li>the 750 words challenge &#8211; writing daily, even if not published</li>
<li>publish the using EA series of articles</li>
<li>publish thoughts on agile analysis</li>
<li>publish thoughts on project ideas</li>
<li>play more with ruby and js frameworks</li>
<li>more focused/less-distracted work patterns</li>
<li>travel more.. (continental Europe)</li>
</ul>
<p>More on these later and am improved skin.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2013/01/02/2013-a-new-year-wishlistchecklist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ariba on Demand Single-Sign On &#8211; A more detailed explanation and walkthrough</title>
		<link>http://www.hamishking.com/2012/03/21/ariba-on-demand-single-sign-on-a-more-detailed-explanation-and-walkthrough/</link>
		<comments>http://www.hamishking.com/2012/03/21/ariba-on-demand-single-sign-on-a-more-detailed-explanation-and-walkthrough/#comments</comments>
		<pubDate>Wed, 21 Mar 2012 04:42:44 +0000</pubDate>
		<dc:creator>Hamish</dc:creator>
				<category><![CDATA[Ariba on Demand]]></category>
		<category><![CDATA[Ariba]]></category>
		<category><![CDATA[Ariba Remote Authentication]]></category>
		<category><![CDATA[Ariba SSO]]></category>
		<category><![CDATA[Single Sign On]]></category>

		<guid isPermaLink="false">http://www.hamishking.com/?p=685</guid>
		<description><![CDATA[I have been working on a large-scale integration project for Ariba on Demand at a client site, and while working in varying capacities and roles, have had quite a lot (read – ‘everything’) to do with implementing the single sign-on<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2012/03/21/ariba-on-demand-single-sign-on-a-more-detailed-explanation-and-walkthrough/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>I have been working on a large-scale integration project for Ariba on Demand at a client site, and while working in varying capacities and roles, have had quite a lot (read – ‘everything’) to do with implementing the single sign-on (SSO) relay provided as-is and unsupported by Ariba. I&#8217;m not going into the spiel as to what Ariba on Demand is and how/why its used etc, if your here for Ariba on Demand SSO help, these are high chance you know (I’d hope so!). For the sake of article completeness, but also to contradict the above statement, Ariba on Demand is a cloud-based procurement platform allowing enterprises to run their entire purchasing/invoicing/sourcing/contract mgmt etc workflow in a single application environment.</p>
<p>This article is intended to be supplementary to the provided Ariba documentation on the provided relay code (specifically the IIS-ASP relay) and based on my own experience of trawling through the code and hacking it into place.</p>
<h3>The Ariba diagram</h3>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2012/03/clip_image002.gif"><img style="display: inline; border-width: 0px;" title="ariba remote-authentication flow" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2012/03/clip_image002_thumb.gif?resize=550%2C313" alt="ariba remote-authentication flow" border="0" data-recalc-dims="1" /></a></p>
<p>The above diagram is supplied by Ariba in the Remote Authentication Kit – Design Overview.doc</p>
<p>It explains the basic flow between the various components to authenticate a user in Ariba. The purpose of this post is not to re-iterate what is shown in the diagram but to dive further down into the workings of the relay for debugging and personal-sanity related reasons.</p>
<p>&nbsp;</p>
<h3></h3>
<h3>My Diagram – explains the various query string parameters of each hop</h3>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2012/03/ssohopdiagram.jpg"><img style="display: inline; border: 0px;" title="sso-hop-diagram" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2012/03/ssohopdiagram_thumb.jpg?resize=550%2C317" alt="sso-hop-diagram" border="0" data-recalc-dims="1" /></a></p>
<p>I believe there are two parts of the relay that aren’t well documented or explained. The first being how to encryption / decryption of challenge key works and secondly the details of the values being passed back and forward from the relay to Ariba. This might be stating the obvious for those who have worked with SSO and encryption methods before, but it wasn’t for me and I’m guessing it may be useful for someone else down the line also.</p>
<p>&nbsp;</p>
<h3>Setting up the relay and how the encryption works</h3>
<p>The provided relay is a single page that retrieves the current user, encrypts a key sent from Ariba and sends them both (username and encrypted key) back to Ariba for authentication.</p>
<p>So lets back up a bit here – challenge key? Encryption what?</p>
<h5>The keys – Public and Private Keys</h5>
<p>I&#8217;m not going to get into the detail of <a href="http://en.wikipedia.org/wiki/Public-key_cryptography" target="_blank">public/private key architecture</a>, but the provided solution provides a ‘keys\’ folder which contains two sample keys, public.pem and private.pem, along with a genkeys.bat batch file which will create fresh keys into these files (a compulsory step if not done already).</p>
<p>The private key is the one we hold dearly, and the relay page has a configuration line which directs to the location of that private.pem keyfile. It looks like this:</p>
<p>PrivKey = ConfigPath &amp; &#8220;D:\pathto\keyfile\private.pem&#8221;</p>
<p>In my case, my integration server’s permissions were locked down too tightly and the application did not have access to read this file, and hence the solution did not work. In my experience, this is the single biggest cause of failure of the relay – not having appropriate permission to access the private key file or a mis-configured path in the above line and someone moves the key during deployment.</p>
<p>So what does the relay page <strong>do</strong> with the keys?</p>
<h5>The query string and it’s parameters</h5>
<p>Well to protect the integrity of the transaction and stop hijacked sessions, when the user first enters the Ariba URL they are taken to the Ariba portal, and if SSO is configured for that realm, the user is again bounced back to the SSO relay address configured (see above diagram – Hop #2). During this second hop, a unique challenge key is generated and returned to relay as a <a href="http://en.wikipedia.org/wiki/Query_string" target="_blank">query string</a> parameter.</p>
<p>This is shown as <em>&amp;key=</em> in my diagram above.</p>
<p>The relay then retrieves the currently authenticated user (depending on your IIS configuration, but using integrated authentication is the best method) and stores that in another query string parameter &amp;user=</p>
<p>This is the value that Ariba will use to match against a user record and provide access into the application.</p>
<p>The private key is used to encrypt a combination of the user and the challenge key given by Ariba, into a single encrypted value and return that to Ariba. No snooping users can decrypt the contents of that string because they are not in possession of the matching public key. This public key is configured in Ariba in order to decrypt the return values and authenticate the request and its integrity.</p>
<p>The user is then bounced back (3rd and final hop) with these details, &amp;user= and &amp;sig=, containing the current user and encrypted digital signature respectively. Ariba takes verifies the value of &amp;sig= by decrypting it with the value given in the public string.</p>
<h4>The encryption process in more detail – an optional dive into what is happening</h4>
<p>As hinted in the title, this section is entirely optional and is intended to dive into the process of encrypting / decrypting the username and challenge key – specifically the how and the why and ways of trouble shooting when things don&#8217;t go so smoothly.</p>
<p>As explained above, the relay page encrypts the combined values of the Ariba-generated challenge key and the username of the logged in user. It does this encryption using the industry standard encryption toolkit, OpenSSL, using the pre-compiled Windows 32 distribution which includes openssl.exe (<a href="http://gnuwin32.sourceforge.net/packages/openssl.htm" target="_blank">available here</a>).</p>
<p>A line in the relay page defines the bath to openssl.exe, in a similar manner to the private.pem key file explained above:</p>
<p>OpenSSL= &#8220;D:\bin\openssl &#8221;</p>
<p>So looking further down into the relay page code, the OpenSSL variable is called twice:</p>
<p>set oExec = WshShell.Exec(OpenSSL &amp; &#8220;dgst -sha1 –sign “D:\keyfile\private.pem”)<br />
oExec.StdIn.Write key &amp; username<br />
oExec.StdIn.Close<br />
signature = oExec.StdOut.ReadAll()</p>
<p>Here the openssl.exe binary is called with the parameters<em> “dgst –sha1”</em> encode with a sha1 algorithm and <em>“-sign” </em>using the private key value of “D:\keyfile\private.pem”). It then sends the values of key (ariba generated challenge key) and username (value of currently authenticated user) and returns the encrypted version to the value of  <em>“signature&#8217;”</em></p>
<p>The next block then encrypts the value of signature with another call to OpenSSL (so another call of openssl.exe) with the parameters of &#8221; enc -base64&#8243;) to encode it into base64. This value is then stored into the variable “sigEncode”.</p>
<p>Finally this value, sigEncode returned to Ariba as a query string (value of &amp;sig=” “), where Ariba uses the SSO configuration value stored for the realm’s public key.</p>
<h4>Testing the process – the provided test pages</h4>
<p>Fortunately Ariba have provided to test simulation pages in the \LoginTest\ folder to simulate both sides of the Ariba handshake. Providing the configuration values for authURI, OpenSSL and PubKey are correct in both login.asp and login_verify.asp, these pages can be utilised to simulate Ariba connections without having the configure SSO options within Ariba. This proves a useful mechanism that the relay page is functioning as intended before touching production settings.</p>
<p>&nbsp;</p>
<p>Hopefully some of the above content was useful, if nothing else it provides a useful reference of my own learnings if I ever need to deploy the relay page again!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2012/03/21/ariba-on-demand-single-sign-on-a-more-detailed-explanation-and-walkthrough/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building Ideas in Rails &#8211; thoughts from a &#8216;non-developer&#8217;</title>
		<link>http://www.hamishking.com/2012/03/05/building-ideas-in-rails-thoughts-from-a-non-developer/</link>
		<comments>http://www.hamishking.com/2012/03/05/building-ideas-in-rails-thoughts-from-a-non-developer/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 04:41:45 +0000</pubDate>
		<dc:creator>Hamish</dc:creator>
				<category><![CDATA[Business Analysis]]></category>

		<guid isPermaLink="false">http://www.hamishking.com/?p=672</guid>
		<description><![CDATA[I have been hacking around for a few weeks with some web app frameworks in order to prototype a few application ideas. Now I&#8217;m not a developer by trade, I consider myself to be a ‘technical’ BA (see my earlier<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2012/03/05/building-ideas-in-rails-thoughts-from-a-non-developer/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>I have been hacking around for a few weeks with some web app frameworks in order to prototype a few application ideas. Now I&#8217;m not a developer by trade, I consider myself to be a ‘technical’ BA (<a href="http://www.hamishking.com/?p=667" target="_blank">see my earlier post on business analysts</a>) and I’m always interested in learning new technologies.</p>
<p>With this in mind, I started playing around with Django (I’d been toying with Python and natural language processing so Django was a natural extension) and then gave Rails a shot after hearing people buzzing about it for a few years.</p>
<h4></h4>
<h4>“I came for rails but I stayed for Ruby”</h4>
<p>I heard this phrase many times when reading through the mountains of posts on the subject and it couldn’t be more accurate. Like I said earlier, I’m not a developer but I can read and make vague sense of most mainstream languages but I have never seen anything so intuitive and obvious as Ruby. The syntax is clear, it doesn&#8217;t contain a lot of onerous escaping semi-colons or braces, or use excessive indenting, it just reads so cleanly. Conventions like using question marks (empty?) just make so much sense and makes reading and writing Ruby so easy.</p>
<p>&nbsp;</p>
<h4></h4>
<h4>Up and running with a new Rails app in 5 minutes</h4>
<p>It really is incredibly easy to create a basic skeleton app in 5 minutes (assuming you have an environment setup already – which is max 30 minutes anyway!). Using generators and gems like awesome <a href="http://twitter.github.com/bootstrap" target="_blank">twitter-bootstrap</a> gets you not just a basic skeleton but also an incredibly functional UI framework ready to build upon (I love you twitter-bootstrap!).</p>
<p>&nbsp;</p>
<h4>Less focus on arduous scaffolding, more time to prototype!</h4>
<p>For me, the beauty of Rails is being able to quickly mock-up up an idea without spending several hours building the scaffolding before I can put in anything useful. I can draw a quick data model and a few UI sketches on paper and translate this into Rails in under 30 minutes to get my idea out of my head and into something <strong>*real*. </strong></p>
<p>I’ve tried in the past to transpose my ideas in different ways, sketching UIs on paper, building PowerPoint/Prezi presentations of key concepts, Balsamiq mock-ups and stream-of-conscious sessions into text files, but they never went anywhere because they were always abstract – there was no ‘easy’ step to transition to something real. I’d always get lost / sidetracked choosing platforms, technology stacks and eventually find myself looking at a detailed jQuery library on some low-level UI element that probably had nothing to do with my app in the first place.</p>
<p>&nbsp;</p>
<h4>Something tangible, something flexible</h4>
<p>Rails gives you powerful tools to get something out quickly and then build upon with a robust toolset (RSpec, Cucumber) to ensure you aren’t cutting corners and allows your 10 minute prototype can transition into a robust application.</p>
<p>Sure there is a learning curve, but its the easiest of the bunch (IMO) powered by a beautiful language and backed by a vibrant and vocal community.</p>
<p>&nbsp;</p>
<h4>Let the ideas flow…</h4>
<p>With that said, lets see if any of my half-baked ideas eventuate into anything other than personal playgrounds – Github be ware, I feel a large amount of commits coming from this ‘non-developer’..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2012/03/05/building-ideas-in-rails-thoughts-from-a-non-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The &#8216;Business Analyst&#8217; &#8211; ambiguous title for an IT chameleon or generic title for SMEs through to support analysts?</title>
		<link>http://www.hamishking.com/2012/02/22/the-business-analyst-ambiguous-title-for-an-it-chameleon-or-generic-title-for-an-smes-through-to-support-analysts/</link>
		<comments>http://www.hamishking.com/2012/02/22/the-business-analyst-ambiguous-title-for-an-it-chameleon-or-generic-title-for-an-smes-through-to-support-analysts/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 06:11:00 +0000</pubDate>
		<dc:creator>Hamish</dc:creator>
				<category><![CDATA[Business Analysis]]></category>

		<guid isPermaLink="false">http://www.hamishking.com/?p=667</guid>
		<description><![CDATA[Recently I have wondering a lot about the role of the ‘Business Analyst’, a role which I reluctantly use for myself, as it has such a wide variety of meanings and contexts. By definition, the title ‘business analyst’ is very<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2012/02/22/the-business-analyst-ambiguous-title-for-an-it-chameleon-or-generic-title-for-an-smes-through-to-support-analysts/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>Recently I have wondering a lot about the role of the ‘Business Analyst’, a role which I reluctantly use for myself, as it has such a wide variety of meanings and contexts.</p>
<p>By definition, the title ‘business analyst’ is very vague and naturally differs significantly depending on the context, corporate environment and personalities involved. I meet a lot of people who call themselves business analysts but really have no formal ‘analysis’ skills, would stare blankly when you asked them what a use case was and haven’t heard of the UML acronym. Now I’m not saying that every self-described BA necessarily <em>needs</em> to understand these traditional methods, but I want to drill into what I perceive to be the role of a BA and not the misnomer perpetuated by recruitment agents with a lack of understanding of the role.</p>
<p>&nbsp;</p>
<h4>The context – IT/Technology projects</h4>
<p>The context of my definitions relate to the world of the IT, or whatever industry buzzword you want to call it, where software is developed to solve business problems.</p>
<p>&nbsp;</p>
<h4>The role – the generalist ‘Business Analyst’</h4>
<p>In a simplified project model, we have several role types; developers, business analysts, testers and project management (remember I said simplistic model!). Within this limited and generalised role scope, business analysts are defining the requirements and assisting the development team with what they need to develop the application and solve the business problem.</p>
<p>Yeah, yeah. We all know what a business analyst does – they define requirements. They write a business requirements document. They either have a deep domain knowledge or liaise closely with those that do, and churn out documents which the development team diligently read and build from, right?</p>
<p>Well, while this certainly true and works in some organisations, this is not a good model. A business analyst does need to be a subject matter expert (SME) and being a SME does not automatically qualify you as being a business analyst. The larger an organisation is, the more prevalent and accepted this notion seems to be and how blurred the line between business analyst and SME becomes.</p>
<p>&nbsp;</p>
<h4>The cross-functional team and generalised specialists</h4>
<p>A good project team consists of good people, skilled resources who work well together and apply their various skills to solve the over business problem, tackling small obstacles and changing requirements throughout the project’s lifecycle. Agile teams talk strongly about having cross-functional team members and there is interesting debate on the notion of the ‘<a href="http://www.agilemodeling.com/essays/generalizingSpecialists.htm" target="_blank">generalised specialist’</a>.</p>
<blockquote><p>According to Scott (Ambler), a generalizing specialist is someone with a good grasp of how things fit together and as a result of this they tend to have greater understanding of what the team is working on.</p></blockquote>
<p>In my view, everyone on the project team should be a generalised specialist. A business analyst does not need to know how to write code and participate in performance testing, but understands the concepts, participates in team discussions and has a few specialities which are accepted and can utilised the team. It is not uncommon for a cross-functional BA to perform comprehensive data analysis and modelling or a developer assisting the test team by writing a test harness to expedite performance testing.</p>
<p>&nbsp;</p>
<h4>So what&#8217;s wrong with the SME-as-BA model?</h4>
<p>Nothing as long as it conforms to the above principals. The problem occurs with BAs who have strong subject (usually from many years in the business) but not a good grounding in analysis principals, methodologies and can not bring other skills to the project team. These SME resources are of course crucial to the project to provide insight and understanding of business operations, they may not be the best fit for the business analyst role.</p>
<p>&nbsp;</p>
<h4>Cross functional is the key</h4>
<p>So how does a BA operate without having adequate domain knowledge? By having a varied functional toolkit, a BA can use their elicitation, modelling, analysis and documentation skills to engage the relevant stakeholders and produce the right outcomes (which are typically requirements documents but may be much more than just a single BRD) <em>tailored </em>for their audience.</p>
<p>I think the last part of the above statement is crucial &#8211; ‘tailored’ for their audience. Who are you producing the document for, is it a large development team, an offshore team, a single developer? Do they understand UML, do they like UML, do they prefer requirement statements, do they ignore documentation and develop from phone calls <em>(most likely!)</em> and how would you mitigate this by providing tailored documentation?</p>
<p>There is nothing worse than the <a href="http://www.batimes.com/articles/its-time-for-template-zombies-to-die.html" target="_blank">template zombie</a> phenomenon. Find the template, keep the structure, replace the content. This not only bores to death anybody who gets past page 5, it also severely constrains the BA to a certain way of thinking. Sure your organisation may have a defined process complete with templates but these can always be built <em>upon – not blindly followed</em>.</p>
<p>&nbsp;</p>
<h4>Tailor to your audience and challenge when there is a better way!</h4>
<p>You might call it idealist, but challenging the status quo isn’t mission impossible. If you project/organisation has written BRDs with requirement statements as bullet points for 10 years that&#8217;s not a good reason for continuing to do so. Why not propose a quick use case model to structure your thoughts? PM doesn&#8217;t like use cases? That&#8217;s okay, you need them as part of your workflow so can do a use case model at least to map your thoughts, get the structure for things and take a few people on your journey, showing them how its useful, why you do it and how it all links in. Your PM still might not like it, but the development team finds it useful to get context and so you can include it. If you have found yourself being dictated what deliverables you need to produce and what they contain, you are not alone! Its not a great environment to work in but there is scope to change minds, and even if that is too politically challenging, then there is always scope to utilise your own methods and practices that might be beneficial for the team.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2012/02/22/the-business-analyst-ambiguous-title-for-an-it-chameleon-or-generic-title-for-an-smes-through-to-support-analysts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Document management &#8211;the necessary evil</title>
		<link>http://www.hamishking.com/2012/01/03/document-management-the-necessary-evil/</link>
		<comments>http://www.hamishking.com/2012/01/03/document-management-the-necessary-evil/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 23:15:55 +0000</pubDate>
		<dc:creator>Hamish King</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[doc mgmt]]></category>
		<category><![CDATA[document management]]></category>
		<category><![CDATA[locating documents]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[versioning]]></category>

		<guid isPermaLink="false">http://www.hamishking.com/?p=607</guid>
		<description><![CDATA[Document management (particularly older document management systems) are often loathed, regarded as annoying and prohibitive tools that inhibit efficiency and require too much overhead. In some organisations their use is mandated but not followed, others enforce their use across the<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2012/01/03/document-management-the-necessary-evil/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p><span style="text-align: left;">Document management (particularly older document management systems) are often loathed, regarded as annoying and prohibitive tools that inhibit efficiency and require too much overhead. In some organisations their use is mandated but not followed, others enforce their use across the board and some prefer an organic approach to let the author choose his poison.</span></p>
<p style="text-align: left;">Let’s face it, we’ve all used them (or at least heard others cursing at them) and likely been frustrated at a seemingly simple ‘save’ action taken an unnecessarily long amount of time. So why do a select few push their use so so strongly? Do the perceived benefits really outweigh the annoying overhead required in their day-to-day use? To answer the question let me first describe the ‘organic’ world of no document management.</p>
<p style="text-align: left;"><img class=" wp-image-612 alignnone" title="docu_mgmt_climb_files" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2012/01/dms_image1.gif?resize=190%2C240" alt="" data-recalc-dims="1" /></p>
<h2>Organic (or no) document management</h2>
<p>Some organisations prefer not to, or simply haven’t found reason to, enforce use of a document management system. In such an environment, the main document ‘store’ will likely be the ubiquitous ‘network share’ – that <em>extremely</em> well-organized set of nested folders and wide assortment of filenames. The person who created and/or maintains the folder structure has no problem finding what they need (every other employee struggles and constantly emails for the same document link) and the systems works well until Mark from accounting (<em>* no <strong>real </strong>names or job titles used of course!) </em>accidentally deletes the project folder and the backup from yesterday loses your days work. Sarcasm aside, the system can work in smaller environments with less than 20 or so employees but even they would benefit from a more structured approach.</p>
<h2>Versioning? (which version was that again)</h2>
<p>Another familiar scenario: Once the document you were after has been located, you scratch your head and wonder if v0.13 is the current version or whether what John was saying about still using the <strong>approved</strong> v0.11 still holds true. A quick email/call/rush-to-his-desk would clear that up, but he’s not there….</p>
<p>We know the problem – multiple versions of the same thing and we usually go with the latest, which is always a best guess and there are many reasons why the highest version isn’t necessarily the right answer (<em>pending PCR, unapproved feedback, draft mistakes in latest etc.)</em>. Explicitly knowing the <strong>right</strong> version to use without needing to ask saves time – and saves rework, but is it worth the hassle?</p>
<h2>Concerns with document management systems</h2>
<p>So why don’t people warm to the concepts of document management? Let’s take a look at a few common complaints:</p>
<ul>
<li>It takes too much time to make a simple save</li>
<li>It asks for too much extra information</li>
<li>It’s too slow</li>
<li>I can’t figure out how to save something</li>
<li>What’s a check in?</li>
</ul>
<p>Most of the above issues are related purely to usability, with some down to implementation, but the main inhibitor always seems to the systems usability. A document management solution needs to be ubiquitous and provide no more (or only slightly more) effort than hitting the Word save icon.</p>
<p>Some of these issues are inherently present in the design of the solution, particularly from the bigger industry players, but a lot of pain can be saved in the implementation by not saddling the users with too much metadata to complete and providing seamless integration into MS Office and popular document creation products.</p>
<h2>Cost vs. Benefits? Is the value proposition really worth it?</h2>
<blockquote><p>Without debating the pros/cons of particular product offerings (an entire post on it’s own), is the benefit of using a document management offering <strong>really</strong> worth the pain/annoyances of their day-to-day use?</p></blockquote>
<p>To me the answer is a resounding yes, but proportional to the overhead required by the particular implementation. For me, coming from a technical SharePoint consulting background, I am able to easily setup a painless and <strong>*almost* </strong>seamless document management experience for my projects with the required admin access and up-front planning (or help from IT team to get what I need created)*. What takes a day (max) to create upfront <strong>before</strong> a project saves not just me, but each team member, multiple days of frustrating effort attempting to locate and share documents.</p>
<p><span style="font-size: xx-small;">* I reference SharePoint as it is commonly available in organisations, but the same holds true for other platforms with configurable ECM/DMS functionality</span></p>
<p>It has benefit when working with co-located teams, multiple vendors with different networks, <a href="http://www.hamishking.com/2009/12/03/co-authoring-with-word-2010-sharepoint-2010/" target="_blank">distributed authors of single documents</a>, serving up different views of static content and provides a static baseline for activities such as traceability (a topic of discussion in upcoming posts).</p>
<p>To pain that is associated with document management in my view comes down largely to product selection and implementation decisions and I appreciate there isn’t a lot that the average user can do to influence in these cases, but that’s not to say it isn’t worth asking. There may be regulatory reasons for enforcing strict rules around document management but often in it’s a poor understanding of the user base and a medium between ease of use and information capture.</p>
<h2>Is there a better way?</h2>
<p>For now I think it depends entirely on your organisations current situation and strategic direction, but the potential for influence is strong. While cloud-based solutions will unlikely be the answer due to unanswered security questions take a look at your current options and see if there are options to streamline the process. The key to a successful document management solution lies with a single word: <strong>seamless</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2012/01/03/document-management-the-necessary-evil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updated blog and Axure content</title>
		<link>http://www.hamishking.com/2011/12/29/updated-blog-and-axure-content/</link>
		<comments>http://www.hamishking.com/2011/12/29/updated-blog-and-axure-content/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 03:03:13 +0000</pubDate>
		<dc:creator>Hamish King</dc:creator>
				<category><![CDATA[Axure RP]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[autocomplete]]></category>
		<category><![CDATA[Axure]]></category>
		<category><![CDATA[lightbox]]></category>
		<category><![CDATA[Post]]></category>
		<category><![CDATA[prototypes]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Themes]]></category>

		<guid isPermaLink="false">http://www.hamishking.com/?p=574</guid>
		<description><![CDATA[It has been quite some time since I have posted an update – has been a very busy few months out at a new client. Faced with some down time during the holiday season and two weeks to myself it<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2011/12/29/updated-blog-and-axure-content/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>It has been quite some time since I have posted an update – has been a very busy few months out at a new client. Faced with some down time during the holiday season and two weeks to myself it was time to revamp the blog, get some hosting, a domain and update the old content.</p>
<h2>New name, new content</h2>
<p>In the spirit of revamping, I’ve renamed the blog to ‘Business Analysed (‘Analyzed’ if your from North America) to reflect the true domain of the blog, rather than SharePoint focus it once had. This will result in a slight decrease in traffic due to name and domain name change, but a redirect on the old site should help alleviate some of that load and build the numbers back up.</p>
<h2>Updated Axure Content</h2>
<p>A popular request in comments and emails has been to update the AJAX autocomplete widget which I made for Axure RP (a popular wireframing/prototyping tool) a year or so back. I have finally managed to source the necessary source files and time to update the widget to latest release 6.x and incorporate some of the feature requests/kinks from the v2 release.</p>
<p>Post can be found here: <a href="http://www.hamishking.com/2010/01/29/updated-ajax-style-autocomplete-v2-rplib-available-for-download/" target="_blank">http://www.hamishking.com/2010/01/29/updated-ajax-style-autocomplete-v2-rplib-available-for-download/</a></p>
<p>Time permitting I may get to release the Axure lightbox widget also, but that post was intended to be informative rather than a packaged widget, but taking reader advice on that.</p>
<p>Post can be found here: <a href="http://www.hamishking.com/2010/01/28/replicating-ajax-style-lightbox-within-axure-prototypes/" target="_blank">http://www.hamishking.com/2010/01/28/replicating-ajax-style-lightbox-within-axure-prototypes/</a></p>
<p>More Axure content can be found here: <a href="http://www.hamishking.com/category/axure-rp/">http://www.hamishking.com/category/axure-rp/</a></p>
<h2>Themes (and their progress)</h2>
<p>Lastly, I am also updating the look of <strong><a href="http://www.hamishking.com" target="_blank">Business Analysed</a> </strong>to complete the full site revamp, but have yet to settle on a definite look and am contemplating designing from scratch. During the next few days the appearance may change between visits as I refine the display – so apologies in advance for this.</p>
<p>Otherwise, expect to see some new posts here soon and perhaps a leak about my upcoming side project.</p>
<p>Bye!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2011/12/29/updated-blog-and-axure-content/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Tip: Gmail &#8216;Undo Send&#8217; and Gmail Labs</title>
		<link>http://www.hamishking.com/2010/08/25/quick-tip-gmail-undo-send-and-gmail-labs/</link>
		<comments>http://www.hamishking.com/2010/08/25/quick-tip-gmail-undo-send-and-gmail-labs/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 06:58:11 +0000</pubDate>
		<dc:creator>Hamish King</dc:creator>
				<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Gmail Labs]]></category>
		<category><![CDATA[Gmail Undo Send]]></category>
		<category><![CDATA[Undo Send]]></category>

		<guid isPermaLink="false">http://hamishking.wordpress.com/?p=529</guid>
		<description><![CDATA[It&#8217;s been a while since I last posted anything so why not start small and quickly go over this handy feature I stumbled across the other day &#8211; Gmail Labs! I use it for the extended &#8216;Undo Send&#8217; feature but<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2010/08/25/quick-tip-gmail-undo-send-and-gmail-labs/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s been a while since I last posted anything so why not start small and quickly go over this handy feature I stumbled across the other day &#8211; Gmail Labs!</p>
<p>I use it for the extended &#8216;Undo Send&#8217; feature but also came across a few other interesting add-ins that I thought would be useful.</p>
<p>To get there, head into Gmail and go into &#8216;Settings&#8217; from the top right of your screen.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/08/1-settings.png"><img class="alignnone size-full wp-image-530" title="1 settings" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/08/1-settings.png?resize=177%2C51" alt="" data-recalc-dims="1" /></a></p>
<p>Under settings there is an aptly named &#8216;Labs&#8217; section which contains all of these little gems.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/08/2-labs.png"><img class="alignnone size-full wp-image-531" title="2 labs" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/08/2-labs.png?resize=550%2C284" alt="" data-recalc-dims="1" /></a></p>
<p>Scroll through the various labs in the list and if you&#8217;re looking for the extended Undo feature like me, it&#8217;s very near the bottom.</p>
<p>So what is this undo feature ? it simply allows you to &#8216;undo&#8217; the sending of an email. By default this value is set to 5 seconds in Gmail so you need to be quick &#8211; OR if you like to have flexibility you can extend this to &#8217;30 seconds&#8217; to afford yourself more time to realise you sent your mail to wrong person or left in that obvious spelling mistake!</p>
<p>Other labs I added on first look were:  &#8216;Google Docs previews in mail&#8217;, &#8216;Google Maps previews in mail&#8217;, &#8216;Google Search&#8217;, &#8216;Got the wrong Bob?&#8217;, &#8216;Mark as Read Button&#8217;, &#8216;Title Tweaks&#8217; and the aforementioned &#8216;Undo Send&#8217;.</p>
<p>Just a quick update to shed light on this handy tool set I stumbled across &#8211; hope you like!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2010/08/25/quick-tip-gmail-undo-send-and-gmail-labs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SP2010 Workflow Template Validation Rules and limitations of the Visio-driven workflow model</title>
		<link>http://www.hamishking.com/2010/07/19/sp2010-workflow-template-validation-rules-and-limitations-of-the-visio-driven-workflow-model/</link>
		<comments>http://www.hamishking.com/2010/07/19/sp2010-workflow-template-validation-rules-and-limitations-of-the-visio-driven-workflow-model/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 00:01:48 +0000</pubDate>
		<dc:creator>Hamish King</dc:creator>
				<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Visio 2010]]></category>
		<category><![CDATA[SharePoint 2010 workflow validation rules]]></category>
		<category><![CDATA[SharePoint Workflow Visio Template]]></category>

		<guid isPermaLink="false">http://hamishking.wordpress.com/?p=470</guid>
		<description><![CDATA[I have been looking into the new SP 2010 Workflow Template that comes with Visio 2010 Premium with the intention of building complex workflows entirely within Visio and then exporting to SP Designer for implementation. Sound easy? Well everything works fine<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2010/07/19/sp2010-workflow-template-validation-rules-and-limitations-of-the-visio-driven-workflow-model/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>I have been looking into the new SP 2010 Workflow Template that comes with Visio 2010 Premium with the intention of building complex workflows entirely within Visio and then exporting to SP Designer for implementation.</p>
<p>Sound easy? Well everything works fine if you plan to use the default shapes provided by Visio (and map to SP Designer default actions/conditions). Using these you can build workflows as complicated or simple as you like and have full synchronization to and from SP Designer.</p>
<p>The problem with this method is that you are limited to the default actions and conditions that ship with the product. Now granted this <a href="http://hamishking.wordpress.com/2010/07/01/how-the-sharepoint-2010-workflow-visio-template-shapes-translate-to-sp-designer-workflow-steps/">default set</a> is better than 2007&#8242;s offering but there will certainly be lots of cases where the default set simply does not do the required job and a custom action or condition is required.</p>
<p>Custom actions and conditions can used easily within SP Designer and work really if your building your workflow there but if your planning to import and use those custom actions in your Visio model then you might want to re-think your strategy. Visio will allow you import these custom actions and they are shown with their own shape but you are unable to reuse these custom shapes in other parts of your diagram.</p>
<p>How does it Visio block you from doing this?</p>
<p>Well if you look at the validation rule set for the SP Workflow template using the bVisual Validation Explorer from  <a href="http://bvisual.spaces.live.com/blog/cns!3350D61BC93733A9!1852.entry?wa=wsignin1.0&amp;sa=199469438">David Parker</a>- the SharePoint template has the following rules</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>ID</td>
<td>Name</td>
<td>Description</td>
</tr>
<tr>
<td>1</td>
<td>MultipleStartWorkflows</td>
<td>The diagram must only have one workflow and one start shape</td>
</tr>
<tr>
<td>2</td>
<td>NoStartShape</td>
<td>The workflow must have a start shape.</td>
</tr>
<tr>
<td>3</td>
<td>InvShapeType</td>
<td>The shape is not a SharePoint workflow shape. Only SharePoint workflow shapes can be connected in a workflow.</td>
</tr>
<tr>
<td>4</td>
<td>ConnectonToParent</td>
<td>Loop back to parent shape is not allowed.</td>
</tr>
<tr>
<td>S</td>
<td>OrphanConnector</td>
<td>The connector must be connected to two workflow shape.</td>
</tr>
<tr>
<td>6</td>
<td>TerminateHasChildren</td>
<td>The terminate shape must not have outgoing connection.</td>
</tr>
<tr>
<td>7</td>
<td>NoIfElseBranches</td>
<td>The condition shape must have at least one outgoing connection with label Yes or No.</td>
</tr>
<tr>
<td>8</td>
<td>NofElseValue</td>
<td>The condition shape does not have connectors labelled with Yes or No.</td>
</tr>
<tr>
<td>9</td>
<td>StartHasParent</td>
<td>The start shape must not have incoming connections.</td>
</tr>
<tr>
<td>10</td>
<td>SequentialParallel</td>
<td>Parallel activities that are also sequential are not allowed.</td>
</tr>
<tr>
<td>11</td>
<td>DuplicateConnections</td>
<td>Duplicate connections exist between workflow shapes.</td>
</tr>
<tr>
<td>12</td>
<td>NestingDepth</td>
<td>Workflow nesting levels must not exceed a maximum of 10</td>
</tr>
<tr>
<td>13</td>
<td>CompoundCondition</td>
<td>A compound condition cannot be manually added to a workflow diagram. The compound condition can only be generated when importing workflow from SharePoint Designer.</td>
</tr>
<tr>
<td>14</td>
<td>CustomAction</td>
<td>A custom action cannot be added to a workflow diagram. The custom action can only be generated when importing workflow from SharePoint Designer.</td>
</tr>
<tr>
<td>15</td>
<td>UnconnectedWorkflowShape</td>
<td>The workflow shape is not connected to the workflow.</td>
</tr>
<tr>
<td>16</td>
<td>NoTerminateShape</td>
<td>The workflow shape is not connected to a terminate shape</td>
</tr>
<tr>
<td>17</td>
<td>InvalidConnector</td>
<td>The connector is not a SharePoint workflow connector. Use AutoConnect or the connector tool to connect your shapes.</td>
</tr>
<tr>
<td>18</td>
<td>CustomCondition</td>
<td>A custom condition cannot be added to a workflow diagram. The custom condition can only be generated when importing workflow from SharePoint Designer.</td>
</tr>
</tbody>
</table>
<p>The rule that we encounter when trying to reuse custom actions in your Visio model is Rule #14 &#8216;Custom action cannot be added to workflow diagram..&#8217; (see table above).</p>
<p>So the rule set is preventing the reuse of custom actions/conditions for some unspecified reason. I&#8217;m sure there is a valid reason for blocking this (maybe the Visio team simply ran out of time?) but the rules are customisable, so you should just be able to edit or override the rule and be done with it, right?</p>
<p>Well no actually. As it happens there are two methods of performing diagram validation using Visio 2010 &#8211; deploying the rule sets into the Visio template or writing a Visio solution and burying the logic within the code to fire on the RuleSetValidated event (more info on the <a href="http://blogs.msdn.com/b/visio/archive/2009/09/10/creating-custom-validation-rules-for-visio-2010.aspx">Visio Team Blog</a>). Unfortunately for those of us wanting to customise the SharePoint validation rules the SP Workflow template uses the latter method and we are unable to view / modify the logic.</p>
<p>So if you are planning to develop complex and powerful workflows for SharePoint 2010 then you might want to rethink your approach and decide whether you will need to use custom actions / conditions or whether the default set will suit your purpose.</p>
<p>Having said this, it is still possible (and very useful) to use custom actions / conditions and build your workflow entirely within SP Designer then export out to Visio for workflow visualisation. This way you will have accurate workflow representation including all custom actions / conditions but you will not be able to make changes within Visio &#8211; it must be done at the SP Designer level.</p>
<p>I intend to look further into this matter to see if there is some way in which custom actions / conditions can be reused  and Visio be leveraged for complex workflow design so look out for updates in this space shortly.</p>
<p><strong>Update 1: </strong>Nothing so far from TechNet forums but I&#8217;m  awaiting a response from Microsoft to see if there is anyway around this issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2010/07/19/sp2010-workflow-template-validation-rules-and-limitations-of-the-visio-driven-workflow-model/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Filtering Lists based on shape selection using Visio Web Access</title>
		<link>http://www.hamishking.com/2010/07/16/filtering-lists-based-on-shape-selection-using-visio-web-access/</link>
		<comments>http://www.hamishking.com/2010/07/16/filtering-lists-based-on-shape-selection-using-visio-web-access/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 02:39:40 +0000</pubDate>
		<dc:creator>Hamish King</dc:creator>
				<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Visio 2010]]></category>
		<category><![CDATA[Filtered lists with Visio]]></category>
		<category><![CDATA[Visio Shape Data]]></category>
		<category><![CDATA[Visio Web Access]]></category>
		<category><![CDATA[Visio Web Access Web Part Connection]]></category>
		<category><![CDATA[Web Part Connections]]></category>

		<guid isPermaLink="false">http://hamishking.wordpress.com/?p=435</guid>
		<description><![CDATA[I&#8217;ve been looking into the options of using Visio Web Access to link Visio objects to SharePoint data. Now that its possible to capture shape data and use it to filter web parts there is a an opportunity to supplement<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2010/07/16/filtering-lists-based-on-shape-selection-using-visio-web-access/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been looking into the options of using Visio Web Access to link Visio objects to SharePoint data. Now that its possible to capture shape data and use it to filter web parts there is a an opportunity to supplement Visio diagrams with contextually relevant information.</p>
<p>In my example I want to show how it is possible to use the selected Visio shape to filter a SP list to display contextually relevant information on the fly.</p>
<p>The list I have created has supplementary information that might be useful to the diagram &#8211; please note I made it up very quickly and should not reflect any system design! You can mock-up something similar to the list shown below or anyones interested I could upload it as a list template &#8211; just ask.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/1-example-list.png"><img class="alignnone size-full wp-image-436" title="1 example list" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/1-example-list.png?resize=550%2C218" alt="" data-recalc-dims="1" /></a></p>
<p>For this example I have also created a very simple Visio diagram of &#8216;entities&#8217; which we are going to use as our filter criteria. Create a new Visio diagram and drop on a couple of shapes &#8211; it really doesn’t matter what type they are.</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/2-example-diagram.png"><img class="alignnone size-full wp-image-437" title="2 example diagram" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/2-example-diagram.png?resize=550%2C187" alt="" data-recalc-dims="1" /></a></p>
<p>The main thing here is the Shape Data &#8211; if you are familiar with adding Shape Data  simply define a new data property called &#8216;Entity&#8217;  and type the entity name into the shape information panel.  For those you don&#8217;t know what I mean by this, see the steps below.</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/3-define-data.png"><img class="alignnone size-full wp-image-438" title="3 define data" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/3-define-data.png?resize=395%2C386" alt="" data-recalc-dims="1" /></a></p>
<p>Right click the shape and select &#8216;Define Shape Data&#8217;. Remove any existing data properties and add a new one called &#8216;Entity&#8217; as per the diagram below (removing the &#8216;Order&#8217; text under Value as this is specific to the shape and is added in a later step).</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/4-define-data-properties.png"><img class="alignnone size-full wp-image-439" title="4 define data properties" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/4-define-data-properties.png?resize=460%2C466" alt="" data-recalc-dims="1" /></a></p>
<p>Now with the &#8216;Shape Information Panel&#8217; you should see the &#8216;Entity&#8217; data property with a blank value and you can enter the entity value for each shape &#8211; which in this example is the same as our shape name. If you don&#8217;t know where the Shape Information Panel has got to, enable it by selecting &#8216;Task Panes -&gt; Shape Data&#8217; from within the &#8216;View&#8217; ribbon.</p>
<p>At this stage you are possibly wondering why you can&#8217;t simply use the Shape Name &#8211; doesn&#8217;t  the Visio Web Access surface this by default?</p>
<p>Well yes it does but in my tinkering I could not find a way for the Shape Name to correctly filter the list using the Shape Name and after many attempts decided to follow the approach of using custom shape data. If you have figured out a method of using the Shape Name to filter then I&#8217;d love to know &#8211; hopefully it&#8217;s not just something within my environment!</p>
<p>Before moving on make you to add entity values for all your shapes using the shape information panel.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/5-add-data-value.png"><img class="alignnone size-full wp-image-440" title="5 add data value" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/5-add-data-value.png?resize=408%2C193" alt="" data-recalc-dims="1" /></a></p>
<p>Save the example diagram as a Visio Web Diagram (*.vdx) using the &#8216;Save As&#8217; function and upload to a document library on SharePoint.  The source data is now created so move on to creating the page and making the filter connection.</p>
<p>Create a new page either using web interface or SP Designer and add two web parts: Visio Web Access and the list you created earlier. I will run through the web interface method below.</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/6-create-web-part-page.png"><img class="alignnone size-full wp-image-441" title="6 create web part page" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/6-create-web-part-page.png?resize=550%2C166" alt="" data-recalc-dims="1" /></a></p>
<p>Select &#8216;Site Actions&#8217; -&gt; &#8216;More Options&#8217; and select &#8216;Web Part Page&#8217;</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/7-select-layout.png"><img class="alignnone size-full wp-image-442" title="7 select layout" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/7-select-layout.png?resize=550%2C370" alt="" data-recalc-dims="1" /></a></p>
<p>Select &#8216;Full Page&#8217; Filtering as your layout, enter a name for your page and click &#8216;Create&#8217;</p>
<p>You will be looking at a blank web part page with a big button to &#8216;Add a Web part&#8217;.</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/8-add-visio-web-access.png"><img class="alignnone size-full wp-image-443" title="8 add visio web access" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/8-add-visio-web-access.png?resize=550%2C140" alt="" data-recalc-dims="1" /></a></p>
<p>First add the &#8216;Visio Web Access&#8217; web part which will act as your placeholder for your Visio diagram.</p>
<p>Click the link that says &#8216;Click here to open the tool pane&#8217; and either paste in the Web Drawing URL to the saved .vdx you uploaded earlier or navigate to it like below.</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/9-point-to-web-drawing.png"><img class="alignnone size-full wp-image-444" title="9 point to web drawing" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/9-point-to-web-drawing.png?resize=550%2C237" alt="" data-recalc-dims="1" /></a></p>
<p><strong>QUICK TIP:</strong> The &#8216;Override Web Drawing&#8217;s default initial view&#8217; option in the web part settings (second configuration option) should be disabled if you are using a diagram with multiple tabs. Despite what you might infer from its name, when enabled, it always refreshes the diagram back to the first tab with each shape selection. My suggestion is to disable this option unless you specifically need the functionality or are using a diagram with only one tab.</p>
<p>The other web part option that needs to be set before we can move on is the &#8216;Expose the following shape data..&#8221; field.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/10-override-default-view.png"><img class="alignnone size-full wp-image-445" title="10 override default view" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/10-override-default-view.png?resize=249%2C443" alt="" data-recalc-dims="1" /></a></p>
<p>Because we are using custom shape data to filter (i.e. not Shape Name, Shape ID etc) we need to tell the web part to expose this data in order to use it in our connection. In this field type in &#8216;Entity&#8217; if your following my example, or the name of the data property you created in Visio. We can now use this value to send as a filter to our list web part.</p>
<p>The go back and add another web part for the list you created earlier. This is done by selecting the list from &#8216;List and Libraries&#8217; Category. It must be pointed out that the list must exist in the same site for this method to work. If your list is in another location or SP Farm then you will need to build a Data View Web Part like I have run through in <a href="http://hamishking.wordpress.com/2010/07/16/referencing-lists-from-external-site-collections-cross-site-collection-lookup-with-rest-and-the-dvwp/" target="_blank">this article</a>.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/11-add-list.png"><img class="alignnone size-full wp-image-446" title="11 add list" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/11-add-list.png?resize=550%2C235" alt="" data-recalc-dims="1" /></a></p>
<p>Now that both elements are on the page we can set up the web part connection to send the filter value from one to the other.</p>
<p>Make sure the page is in edit mode and select the web part settings drop down for the Visio Web Access web part and select &#8216;Connections&#8217;</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/12-add-connection.png"><img class="alignnone size-full wp-image-447" title="12 add connection" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/12-add-connection.png?resize=532%2C303" alt="" data-recalc-dims="1" /></a></p>
<p>The connection type we wish to make is the &#8216;Send Shape Data to&#8217; which will send the value of the selected shape to the list.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/11-type-connection.png"><img class="alignnone size-full wp-image-449" title="11 type connection" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/11-type-connection.png?resize=481%2C40" alt="" data-recalc-dims="1" /></a></p>
<p>This will bring up a new window with the two-step connection wizard.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/13-config-connection-1.png"><img class="alignnone size-full wp-image-448" title="13 config connection 1" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/13-config-connection-1.png?resize=481%2C232" alt="" data-recalc-dims="1" /></a></p>
<p>Select the &#8216;Get Filter Values From&#8217;</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/14-config-connection-2.png"><img class="alignnone size-full wp-image-450" title="14 config connection 2" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/14-config-connection-2.png?resize=467%2C240" alt="" data-recalc-dims="1" /></a></p>
<p>Then select &#8216;Entity&#8217; in both the provider and consumer field. Essentially you are defining what value is being passed from the Visio web part (in this case our entity shape data value) and the consumer field defines what column on the list is to be filtered based on this value (and again in this example it is also the entity column).</p>
<p>Now the connection is set up, when we select a shape on the diagram it passes the entity name from the shape data to list web part and filters the list accordingly.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/15-filtered-list.png"><img class="alignnone size-full wp-image-451" title="15 filtered list" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/15-filtered-list.png?resize=550%2C285" alt="" data-recalc-dims="1" /></a></p>
<p>In my example I&#8217;ve attempted to show how web part connections can be used to supplement an entity relationship style diagram with information from a SP list but this is just one of many possible applications. Now that you can capture ANY type of shape data and pass this to ANY web part &#8211; the doors really do open.</p>
<p>Currently I am looking into a documentation system that uses such references to make a set of interactive, highly linked and contextually relevant document with as little content management as possible. I will post more in this space as it progress but this article should prove to be a useful starting point.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2010/07/16/filtering-lists-based-on-shape-selection-using-visio-web-access/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Referencing lists from external site collections &#8211; Cross-site collection lookup with REST and the DVWP!</title>
		<link>http://www.hamishking.com/2010/07/16/referencing-lists-from-external-site-collections-cross-site-collection-lookup-with-rest-and-the-dvwp/</link>
		<comments>http://www.hamishking.com/2010/07/16/referencing-lists-from-external-site-collections-cross-site-collection-lookup-with-rest-and-the-dvwp/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 02:07:54 +0000</pubDate>
		<dc:creator>Hamish King</dc:creator>
				<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Cross-site collection lookup]]></category>
		<category><![CDATA[Data View Web Part]]></category>
		<category><![CDATA[REST SP2010]]></category>

		<guid isPermaLink="false">http://hamishking.wordpress.com/?p=453</guid>
		<description><![CDATA[The inclusion of REST in SP2010 has given us an easy way to reference lists external to the site collection &#8211; and cross-site lists too of course! The purpose of this post is to give a quick run down on<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2010/07/16/referencing-lists-from-external-site-collections-cross-site-collection-lookup-with-rest-and-the-dvwp/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>The inclusion of REST in SP2010 has given us an easy way to reference lists external to the site collection &#8211; and cross-site lists too of course! The purpose of this post is to give a quick run down on creating the REST connection as data source and building a data view web part to display the result. The post is probably aimed more towards a non-technical audience but may prove useful for developer / consultant types.</p>
<p>First thing to note is REST must be enabled on your environment so before you go any further, check that the service is running through your web browser. To do this, simply paste the following into your browser and replace the bracketed variables with your SP URL and the name of the list you wish to use.</p>
<p><a href="http://[yoursharepointURL]/_vti_bin/listdata.svc/%5bLISTNAME">http://[yoursharepointURL]/_vti_bin/listdata.svc/[LISTNAME</a>]</p>
<p>If that returns a result in browser that looks strikingly like an RSS feed &#8211; then great, the service is working. If not, then ask your SP Admin nicely to get REST enabled (or have a go yourself if you have access) and the SPDevWiki has a good article on how to do so <a href="http://www.sharepointdevwiki.com/display/sp2010/REST+APIs" target="_blank">here</a></p>
<p><strong>Techy note: </strong>As an alternative to REST you can follow the same principles of this article and use a the list.asmx web service and a SOAP connection as your data source. Personally I find this method easier to build your data view web part but both methods have their merits.</p>
<p>So assuming REST is enabled &#8211; we will move onto creating the connection into SP Designer.</p>
<p>First, open up SP Designer and go to the data source window.</p>
<p><img class="alignnone size-full wp-image-454" title="0 rest" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/0-rest.png?resize=322%2C103" alt="" data-recalc-dims="1" /></p>
<p>Select &#8216;REST Service Connection&#8217; from the ribbon to create a new REST query. On the &#8216;General&#8217; tab enter a relevant name and then on the &#8216;Source&#8217; tab under &#8216;Select Connection Info&#8217; use the following syntax to specify the URL:</p>
<p><a href="http://[yoursharepointURL]/_vti_bin/listdata.svc/%5bLISTNAME">http://[yoursharepointURL]/_vti_bin/listdata.svc/[LISTNAME</a>]</p>
<p>Replace [yoursharepointURL] with your address and [LISTNAME] with the name of your list.  Randy Williams has a <a href="http://www.synergyonline.com/blog/blog-moss/Lists/Posts/Post.aspx?ID=117" target="_blank">good article</a> on using REST in SharePoint 2010 so check that for further information.</p>
<p>The main thing to understand here is the structure of the URL and how to define which list it points to. The intention of this article is to explain how to reference a list on a <em>different </em>site collection but you could use any REST enabled data source for the same purpose.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/2-data-source-properties.png"><img class="alignnone size-full wp-image-455" title="2.data source properties" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/2-data-source-properties.png?resize=458%2C484" alt="" data-recalc-dims="1" /></a></p>
<p>An issue I encountered when playing around is that windows authentication didn’t seem to work when trying to build a data view web part &#8211; so if you encounter this then I suggest specify your domain account in the &#8216;Login&#8217; tab. See my brief post on this <a href="http://hamishking.wordpress.com/2010/07/14/non-specific-error-trying-to-get-the-data-source-rest-and-sp2010/" target="_blank">here</a>.</p>
<p>The next thing to do is create a blank web part page in order to display the new data source. Go to the &#8216;Site Pages&#8217; library or any pages library within your site and select &#8216;Web Part Page -&gt; Blank Web Part Page&#8217; from the ribbon as shown in the screen below.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/3-blank-web-part-page.png"><img class="alignnone size-full wp-image-456" title="3 blank web part page" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/3-blank-web-part-page.png?resize=532%2C480" alt="" data-recalc-dims="1" /></a></p>
<p>Now add the data view web part to the empty web part zone. Make sure the focus is in the web part zone in order to see the &#8216;Insert&#8217; ribbon.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/4-blank-web-part-zone.png"><img class="alignnone size-full wp-image-457" title="4 blank web part zone" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/4-blank-web-part-zone.png?resize=550%2C105" alt="" data-recalc-dims="1" /></a></p>
<p>From the &#8216;Insert&#8217; ribbon select the &#8216;Data View&#8217; button and then &#8216;Empty Data View&#8217;. You could select the REST connection by scrolling down the drop down list but I had a few issues with that and prefer to define it in a second step &#8211; if it works for you then by all means do it!</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/5-empty-dvwp.png"><img class="alignnone size-full wp-image-458" title="5 empty dvwp" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/5-empty-dvwp.png?resize=508%2C460" alt="" data-recalc-dims="1" /></a></p>
<p>If you followed my method of adding an empty data view web part then you see a web part like this.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/6-empty-dvwp.png"><img class="alignnone size-full wp-image-459" title="6 empty dvwp" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/6-empty-dvwp.png?resize=550%2C100" alt="" data-recalc-dims="1" /></a></p>
<p>Right click the web part and select &#8216;Select a Data Source&#8217; from the context menu.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/7-select-dvwp-source.png"><img class="alignnone size-full wp-image-460" title="7 select dvwp source" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/7-select-dvwp-source.png?resize=335%2C230" alt="" data-recalc-dims="1" /></a></p>
<p>Now select the REST connection to add the data connection to the Data Source details panel and begin building the data view.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/8-dvwp-source-picker.png"><img class="alignnone size-full wp-image-461" title="8 dvwp source picker" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/8-dvwp-source-picker.png?resize=270%2C418" alt="" data-recalc-dims="1" /></a></p>
<p>If everything went smoothly then you should see a data in the data source details panel similar to my screen below. If you encountered a &#8216;non-specific error&#8217; then please see my short post <a href="http://hamishking.wordpress.com/2010/07/14/non-specific-error-trying-to-get-the-data-source-rest-and-sp2010/" target="_blank">here</a> and force the connection to use your credentials and not windows authentication. I haven&#8217;t seen a way around this as yet but will keep an eye out.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/9-data-source-details.png"><img class="alignnone size-full wp-image-462" title="9 data source details" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/9-data-source-details.png?resize=208%2C464" alt="" data-recalc-dims="1" /></a></p>
<p>Now the data connection is setup it’s just a matter of selecting what fields to display on the web part. There are two ways of doing this and it should be a matter of preference as to which you use &#8211; either select &#8216;Add/Remove Columns&#8217; from the &#8216;List View Tools &#8211; Options&#8217; ribbon or select the columns from the data source details panel and drag them onto your web part.</p>
<p>You should end up with a data grid similar to the mine below depending on how many columns you selected and the structure of your data.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/10-example-dvwp-display.png"><img class="alignnone size-full wp-image-463" title="10 example dvwp display" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/10-example-dvwp-display.png?resize=530%2C141" alt="" data-recalc-dims="1" /></a></p>
<p>How you build your data view depends the structure of your source data and it&#8217;s beyond the scope of this article to detail the various methods but the point here is we have the ability to use data from a list external to the site collection. This is a big plus if your environment has multiple SharePoint deployments for various functions such as a corporate intranet and an Office Business Application (OBA) &#8211; and you need to lookup data between them.  It also provides an easier way to reference lists cross-site and I find this method easier than using SharePoint&#8217;s lists.asmx web service and SOAP &#8211; but that may just be a personal preference!</p>
<p>Hopefully the post is useful to those who haven&#8217;t worked with the data view part before and for those who have &#8211; hope there weren&#8217;t too many screen clips!</p>
<p>As always feedback and questions are more than welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2010/07/16/referencing-lists-from-external-site-collections-cross-site-collection-lookup-with-rest-and-the-dvwp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Non-specific error trying to get the data source &#8211; REST and SP2010.</title>
		<link>http://www.hamishking.com/2010/07/14/non-specific-error-trying-to-get-the-data-source-rest-and-sp2010/</link>
		<comments>http://www.hamishking.com/2010/07/14/non-specific-error-trying-to-get-the-data-source-rest-and-sp2010/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 09:52:14 +0000</pubDate>
		<dc:creator>Hamish King</dc:creator>
				<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Cross-site collection lookup]]></category>
		<category><![CDATA[DVWP]]></category>
		<category><![CDATA[non specific error]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://hamishking.wordpress.com/?p=425</guid>
		<description><![CDATA[I&#8217;ve been playing with the REST protocol in SP2010 to bring in data from external lists (external to the site collection) and using it to display the result in the data view web part (DVWP). Creating the data source went<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2010/07/14/non-specific-error-trying-to-get-the-data-source-rest-and-sp2010/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been playing with the REST protocol in SP2010 to bring in data from external lists (external to the site collection) and using it to display the result in the data view web part (DVWP).</p>
<p>Creating the data source went smoothly but when I tried to use it in the DVWP it threw the following unhelpful error.</p>
<p>&#8220;The server returned a non-specific error when frying to get data from the data source. Check the format and content of your query and try again. If the problem persists, contact the server administrator.&#8221;</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/1-error.png"><img class="alignnone size-full wp-image-426" title="1 error" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/1-error.png?resize=371%2C266" alt="" data-recalc-dims="1" /></a></p>
<p>I checked the service in the browser and it was working fine &#8211; so a quick investigation identified authentication as the problem. I went back to the data source and forced the service to  use my domain account instead of the default windows authentication provider.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/2-authenticate.png"><img class="alignnone size-full wp-image-427" title="2 authenticate" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/2-authenticate.png?resize=329%2C261" alt="" data-recalc-dims="1" /></a></p>
<p>As soon as the authentication was forced and I refreshed my data connection &#8211; the DVWP pulled everything through perfectly.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/3-solved.png"><img class="alignnone size-full wp-image-428" title="3 solved" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/3-solved.png?resize=311%2C319" alt="" data-recalc-dims="1" /></a></p>
<p>This issue seems to be with SP Designer not recognising your domain account when using windows authentication. This work-around will do the job &#8211; although it must be pointed out this method sends your credentials unencrypted in the call. Not the type of thing you would put into a production environment but will at the very least get you up and running with REST services inside SharePoint 2010.</p>
<p>More to come on this topic soon, specifically around potential uses of the service and a detailed walk through (time permitting as always!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2010/07/14/non-specific-error-trying-to-get-the-data-source-rest-and-sp2010/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Visio Web Access in SP2010 – In-browser view of Visio diagrams with nice Silverlight UI</title>
		<link>http://www.hamishking.com/2010/07/14/visio-web-access-in-sp2010-in-browser-view-of-visio-diagrams-with-nice-silverlight-ui/</link>
		<comments>http://www.hamishking.com/2010/07/14/visio-web-access-in-sp2010-in-browser-view-of-visio-diagrams-with-nice-silverlight-ui/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 00:27:44 +0000</pubDate>
		<dc:creator>Hamish King</dc:creator>
				<category><![CDATA[Visio 2010]]></category>
		<category><![CDATA[linked sub-process]]></category>
		<category><![CDATA[shape information panel]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Visio Web Access]]></category>

		<guid isPermaLink="false">http://hamishking.wordpress.com/?p=416</guid>
		<description><![CDATA[SharePoint 2010 brings to us some really nice Office web apps that allow in-browser rendering (and editing)  of Office 2007/10 formatted documents and I took a brief look at Word and its co-authoring functionality last year. This time I&#8217;d like to demonstrate<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2010/07/14/visio-web-access-in-sp2010-in-browser-view-of-visio-diagrams-with-nice-silverlight-ui/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>SharePoint 2010 brings to us some really nice Office web apps that allow in-browser rendering (and editing)  of Office 2007/10 formatted documents and I took a <a href="http://hamishking.wordpress.com/2009/12/03/co-authoring-with-word-2010-sharepoint-2010/" target="_blank">brief look</a> at Word and its co-authoring functionality last year.</p>
<p>This time I&#8217;d like to demonstrate Visio Web Access and its nice Silverlight UI that includes features like linking to sub-processes, presentation of the shape data via the shape information panel and the ability to switch between tabs. Visio 2010 now comes with the web drawing format (*.vdw) allows any diagram to be rendered in-browser and is easily done using the  &#8217;Save As&#8217; function and selecting the *.vdw format.</p>
<p>The Silverlight rendering allows the viewer to &#8216;zoom and pan&#8217; around the Visio canvas, negating the need for scroll bars and allows large diagrams to be easily displayed on a single page.</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/1-visio-canvas.png"><img class="alignnone size-full wp-image-417" title="1 visio canvas" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/1-visio-canvas.png?resize=550%2C275" alt="" data-recalc-dims="1" /></a></p>
<p>It is hard to see from the static picture above but the user can easily drag around the interface, zoom in and out and interact with individual elements within the diagram. In the screen grab above the &#8216;Rule 2&#8242; decision has a blue highlight indicating it has been selected and would display the shape information in the information panel.</p>
<p>The image below attempts to show the user panning to right hand side of the image and exposing the blank canvas at the top and right of the diagram.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/2-scroll.png"><img class="alignnone size-full wp-image-418" title="2 scroll" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/2-scroll.png?resize=550%2C273" alt="" data-recalc-dims="1" /></a></p>
<p>The new &#8216;linked sub-process&#8217; feature allows shapes to be linked to a sub-processes on a separate and Visio web access maintains this connection through hyperlinks. Using this technique you can have great click-through diagrams linking areas that previously were only accessible by manually switching tabs.</p>
<p>The Shape Information Panel displays shape and hyperlinks data for the currently selected shape.</p>
<p><a href="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/3-information-pan.png"><img class="alignnone size-full wp-image-419" title="3 information pan" src="http://i2.wp.com/www.hamishking.com/wp-content/uploads/2010/07/3-information-pan.png?resize=469%2C322" alt="" data-recalc-dims="1" /></a></p>
<p>There is also an option to open in Visio allowing you make edits and save changes back to the document library. These updates are reflected in the rendered version as soon as the document is checked back in to SharePoint. The same result can be achieved by uploading a new version of the .vdw and overriding the existing file.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/4-tab-dropdown.png"><img class="alignnone size-full wp-image-420" title="4 tab dropdown" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/4-tab-dropdown.png?resize=180%2C98" alt="" data-recalc-dims="1" /></a></p>
<p>Visio Web Access  renders tabs in separate canvases and provides a drop down control to navigate through the tabs provides an alternative to linked sub-processes  (although I suggest you utilise this where possible &#8211; it&#8217;s very user-friendly!). The above screen illustrates this control.</p>
<p>That was a quick look at Visio Web Access and I intend to return to the subject when I have explored the data linking and other cool new features available in SP2010.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2010/07/14/visio-web-access-in-sp2010-in-browser-view-of-visio-diagrams-with-nice-silverlight-ui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Add Images directly into a list on the fly in SP2010 (and store in central asset library)</title>
		<link>http://www.hamishking.com/2010/07/09/add-images-directly-into-a-list-on-the-fly-in-sp2010-and-store-in-central-asset-library/</link>
		<comments>http://www.hamishking.com/2010/07/09/add-images-directly-into-a-list-on-the-fly-in-sp2010-and-store-in-central-asset-library/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 06:17:10 +0000</pubDate>
		<dc:creator>Hamish King</dc:creator>
				<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Embed Image into List]]></category>
		<category><![CDATA[List Inline Ediitng]]></category>
		<category><![CDATA[SP2010]]></category>
		<category><![CDATA[SP2010 List]]></category>

		<guid isPermaLink="false">http://hamishking.wordpress.com/?p=407</guid>
		<description><![CDATA[Ever found it incredibly annoying when trying to add images into a list on the fly? (without having to go away and add them to a library first &#8211; then come back and manually add a reference). Using SP2010&#8242;s enhanced rich<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.hamishking.com/2010/07/09/add-images-directly-into-a-list-on-the-fly-in-sp2010-and-store-in-central-asset-library/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>Ever found it incredibly annoying when trying to add images into a list on the fly? (without having to go away and add them to a library first &#8211; then come back and manually add a reference).</p>
<p>Using SP2010&#8242;s enhanced rich text field, you can upload and add an image directly into the list without having to leave the page.</p>
<p>When editing the enhanced rich text field (whether editing a single item in the edit form or using the cool new &#8216;Inline Editing&#8217; feature (explained here), you have the option to insert from the &#8216;Editing Tools&#8217; menu.</p>
<p><a href="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/1-insert-item.png"><img class="alignnone size-full wp-image-408" title="1-insert item" src="http://i0.wp.com/www.hamishking.com/wp-content/uploads/2010/07/1-insert-item.png?resize=324%2C135" alt="" data-recalc-dims="1" /></a></p>
<p>This brings up the &#8216;Select Picture&#8217; dialog where you can select a local image to upload and a library to stored the uploaded copy.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/2-upload.png"><img class="alignnone size-full wp-image-409" title="2 upload" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/2-upload.png?resize=418%2C223" alt="" data-recalc-dims="1" /></a></p>
<p>Then save the uploaded image and complete any metadata requirements.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/3-save1.png"><img class="alignnone size-full wp-image-411" title="3 save" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/3-save1.png?resize=550%2C254" alt="" data-recalc-dims="1" /></a></p>
<p>The image is inserted into the SP list but is managed centrally within the chosen library.</p>
<p><a href="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/4-finished.png"><img class="alignnone size-full wp-image-412" title="4 finished" src="http://i1.wp.com/www.hamishking.com/wp-content/uploads/2010/07/4-finished.png?resize=477%2C371" alt="" data-recalc-dims="1" /></a><br />
A very handy feature that was missing from 2007 and I&#8217;m glad it has been addressed in 2010.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hamishking.com/2010/07/09/add-images-directly-into-a-list-on-the-fly-in-sp2010-and-store-in-central-asset-library/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
