<?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>Free UML Online</title>
	<atom:link href="http://askuml.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://askuml.com</link>
	<description>UML for mere mortals</description>
	<lastBuildDate>Thu, 19 Aug 2010 20:15:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Rebol Faces in plain UML</title>
		<link>http://askuml.com/blog/rebol-faces/</link>
		<comments>http://askuml.com/blog/rebol-faces/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 21:35:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Class Diagram]]></category>

		<guid isPermaLink="false">http://askuml.com/?p=234</guid>
		<description><![CDATA[
This is the class diagram for Rebol Faces. More coming soon.



To be continued &#8230;

{
Faces
face is defined by offset / size / text / changes // make / show / hide
View has face(s)
pane is defined by layout
face has 1 pane
pane has face(s)
}

{
Windows
system has 1 view
view has 1 screen-face
screen-face is a face
screen-face is a computer-window
screen-face has 1 [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://askuml.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/234.jpg&amp;w=200&amp;h=0&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>This is the class diagram for <a href="http://www.rebol.com/docs/view-face-hier.html">Rebol Faces</a>. More coming soon.</p>
<p><span id="more-234"></span></p>
<p><img src="http://askuml.com/files/2010/07/view-has-faces-each-face-has-pane-layout.jpg" alt="view-has-faces-each-face-has-pane-layout" title="view-has-faces-each-face-has-pane-layout" width="540" height="219" class="aligncenter size-full wp-image-263" /></p>
<p><img src="http://askuml.com/files/2010/07/pane-has-faces.jpg" alt="pane-has-faces" title="pane-has-faces" width="343" height="224" class="aligncenter size-full wp-image-260" /></p>
<p>To be continued &#8230;</p>
<pre class="brush: html;">
{
Faces
face is defined by offset / size / text / changes // make / show / hide
View has face(s)
pane is defined by layout
face has 1 pane
pane has face(s)
}

{
Windows
system has 1 view
view has 1 screen-face
screen-face is a face
screen-face is a computer-window
screen-face has 1 screen-face-pane
screen-face-pane is a pane
screen-face-pane has window-face(s)
window-face is defined by text,color,image/view,unview
}

{
panels
panel group face(s)
}

{
Window options
window-face has 1 options
options is defined by no-title,no-border,resize,all-over,activate-on-show,min-size
}
</pre>
<p>Output:</p>
<pre class="brush: html;">
{
[face|offset;size;text;changes|make;show;hide]
[View]++1-0..*[face]
[face]++1-1[pane|layout]
}

{
[face|offset;size;text;changes|make;show;hide]
[pane]++1-0..*[face]
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://askuml.com/blog/rebol-faces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adsense API explained in plain UML</title>
		<link>http://askuml.com/blog/adsense-api/</link>
		<comments>http://askuml.com/blog/adsense-api/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 18:55:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Use Case]]></category>

		<guid isPermaLink="false">http://askuml.com/?p=214</guid>
		<description><![CDATA[







This Use Case Diagram illustrates Adsense API. It is derived from these Business Rules converted to yUML with this yUML Use Case generator.

Use Case Diagram:








Business Rules in plain English:

{
Adsense API
Adsense API Client Application manage Publisher's Adsense Account
Adsense API Client Application manage Publisher's Ads Code Snippet
AdsenseAPI manage Publisher's Adsense Account
AdsenseAPI manage Publisher's Ads Code Snippet
manage Publisher's [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://askuml.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/214.jpg&amp;w=200&amp;h=0&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p>This Use Case Diagram illustrates <a href="http://code.google.com/intl/en/apis/adsense/">Adsense API</a>. It is derived from these <a href="#BusinessRules">Business Rules</a> converted to <a href="#yUML">yUML</a> with this <a href="/blog/yuml-use-case/">yUML Use Case generator</a>.</p>
<p><span id="more-214"></span></p>
<p>Use Case Diagram:<br />
<img src="http://askuml.com/files/2010/07/Adsense-API-in-UML-extended.jpg" alt="Adsense-API-in-UML-extended" title="Adsense-API-in-UML-extended" width="1134" height="404" class="aligncenter size-full wp-image-226" /></p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p><a name="BusinessRules">Business Rules in plain English:</a></p>
<pre class="brush: html;">
{
Adsense API
Adsense API Client Application manage Publisher's Adsense Account
Adsense API Client Application manage Publisher's Ads Code Snippet
AdsenseAPI manage Publisher's Adsense Account
AdsenseAPI manage Publisher's Ads Code Snippet
manage Publisher's Ads Code Snippet include generate ad code snippets for insertion into a publisher's  web pages
manage Publisher's Adsense Account include Setting Up A Publisher's Account
Setting Up New AdSense Publisher Extend Setting Up A Publisher's Account
Setting Up Existing AdSense Publisher Extend Setting Up A Publisher's Account
}
</pre>
<p><a name="yUML">yUML translation:</a></p>
<pre class="brush: html;">
note: Adsense API{bg:beige}
[Adsense API Client Application]-(Manage Adsense Account)
[Adsense API Client Application]-(Manage Ads Code Snippet)
[AdsenseAPI]-(Manage Adsense Account)
[AdsenseAPI]-(Manage Ads Code Snippet)
(manage Ads Code Snippet)&gt;(generate ad code snippets for insertion)
(manage Adsense Account)&gt;(Setup Account)
(Setup Account)&lt;(New Account)
(Setup Account)&lt;(Existing Account)
</pre>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p>To be continued &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://askuml.com/blog/adsense-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>yUML Use Case Desktop Client</title>
		<link>http://askuml.com/blog/yuml-use-case-desktop-client/</link>
		<comments>http://askuml.com/blog/yuml-use-case-desktop-client/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 16:54:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Use Case]]></category>

		<guid isPermaLink="false">http://askuml.com/?p=202</guid>
		<description><![CDATA[







This a Desktop GUI Client for yUML Use Case Diagram. [coming soon ...]
To execute type in rebol console:
do read http://askuml.com/blog/yuml-use-case-desktop-client/
then copy and paste sample input










;requires encode-url function (embedded in askuml.com)
yuml-command: ask &#34;command (validate to read from clipboard): &#34;

		either ((length? yuml-command) = 0) [
			yuml-command0: copy yuml-command: read clipboard://
		][
			yuml-command0: copy yuml-command
		]

;remove last empty line if any
if (p: [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://askuml.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/202.jpg&amp;w=200&amp;h=0&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p>This a Desktop GUI Client for yUML Use Case Diagram. [coming soon ...]</p>
<p>To execute type in rebol console:</p>
<blockquote><p>do read http://askuml.com/blog/yuml-use-case-desktop-client/</p></blockquote>
<p>then copy and paste <a href="#input">sample input</a></p>
<p><span id="more-202"></span></p>
<p><img src="http://askuml.com/files/2010/07/uml-online-tool.gif" alt="uml-online-tool" title="uml-online-tool" width="1081" height="701" class="aligncenter size-full wp-image-285" /><br />

<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<pre class="brush: php;">
;requires encode-url function (embedded in askuml.com)
yuml-command: ask &quot;command (validate to read from clipboard): &quot;

		either ((length? yuml-command) = 0) [
			yuml-command0: copy yuml-command: read clipboard://
		][
			yuml-command0: copy yuml-command
		]

;remove last empty line if any
if (p: back tail yuml-command) = &quot;^/&quot; [remove p]

;encode ^[ to ^^[ as ^ is an escape sequence key in Rebol
replace/all yuml-command &quot;^[&quot; &quot;^^[&quot;

;replace newline by &quot;,&quot;
replace/all yuml-command newline &quot;, &quot;

;form the url
yuml-url: to-url rejoin [http://yuml.me/diagram/scruffy/usecase/ (encode-url yuml-command) &quot;.jpg&quot;]

;load image into Rebol's img variable
img: load yuml-url

;request-save function called by save button
request-save: func[][
    target-file: pick request-file/save 1
    write/binary target-file read/binary yuml-url
]

request-refresh: func[][
    print &quot;refresh is not implemented yet&quot;
]

panel1.layout: layout [
  origin 0x0
  yuml-image: image img
]

panel2.layout: layout [
  origin 0x0
  area (yuml-command0) yellow
]

panelbuttons.layout: layout [
    origin 5x10 space 5 across
    button &quot;Save&quot; [request-save]
    button &quot;Refresh&quot; [request-refresh]
    button &quot;Quit&quot; [quit]

]

;visual form
Main: layout [
    offset: 0x0
    yuml-image: image img
    return
    across
    btn &quot;Save&quot; [request-save]
    btn &quot;Refresh&quot; [request-refresh]
    btn &quot;Quit&quot; [quit]
    return
    area (yuml-command0) yellow
]

Main: layout [
  origin 0x0
  panel1: box 640x300 white
  panelbuttons: box 640x50
  panel2: box 640x180 yellow
]

panel1/pane: panel1.layout
panel2/pane: panel2.layout
panelbuttons/pane: panelbuttons.layout

image-panel: [
    yuml-image: image 600x400 img
]

btn-panel: [
    across origin 6 space 6
    btn &quot;Save&quot; [request-save]
    btn &quot;Refresh&quot; [request-refresh]
    btn &quot;Quit&quot; [quit]
]

area-panel: [
    area yellow 600x200
]

main: layout [
    origin 0 space 0
    panel image-panel
    panel btn-panel
    panel area-panel
]

view/title/options center-face Main &quot;askuml.com&quot; [no-border]
</pre>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
<br />
<a name="input"></a>Sample input:</p>
<pre class="brush: php;">
note: User onLogin Page{bg:beige}
[User]-(Connect to Login Page)
(Connect to Login Page)&lt;(Login with Username &amp; Password)
(Login with Username &amp; Password)&lt;(Remember me)
(Connect to Login Page)&lt;(Fill Username if forgot Password)
(Connect to Login Page)&lt;(Click on Register)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://askuml.com/blog/yuml-use-case-desktop-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>e-Commerce UML Use Case Diagram</title>
		<link>http://askuml.com/blog/e-commerce/</link>
		<comments>http://askuml.com/blog/e-commerce/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 18:38:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Use Case]]></category>

		<guid isPermaLink="false">http://askuml.com/?p=148</guid>
		<description><![CDATA[







This script (see usage) contains specific vocabularies for an e-commerce application see sample input and output.











Rebol [
    Title: &#34;yUML Use Case&#34;
    Author-Url: http://askuml.com
    Script-Url:  http://askuml.com/blog/e-commerce/
    Version: 1.0
    Date:  10-Jul-2010
    Purpose: {
     [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://askuml.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/148.jpg&amp;w=200&amp;h=0&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p>This script (see <a href="http://askuml.com/about/">usage</a>) contains specific vocabularies for an e-commerce application see <a href="#sampleinput">sample input</a> and <a href="#sampleoutput">output</a>.</p>
<p><span id="more-148"></span><br />
<img src="http://askuml.com/files/2010/07/e-commerce-use-case.jpg" alt="e-commerce-use-case" title="e-commerce-use-case" class="aligncenter size-full wp-image-162" /></p>
<p><img src="http://askuml.com/files/2010/07/e-commerce-use-case2b.jpg" alt="e-commerce-use-case2b" title="e-commerce-use-case2b" width="1080" height="374" class="aligncenter size-full wp-image-172" /></p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<pre class="brush: php;">
Rebol [
    Title: &quot;yUML Use Case&quot;
    Author-Url: http://askuml.com
    Script-Url:  http://askuml.com/blog/e-commerce/
    Version: 1.0
    Date:  10-Jul-2010
    Purpose: {
            Generate yUML Use Case Diagram for e-commerce App
    }
]

do code-block/2; business rules parsing
do code-block/3; yUML function
do code-block/4; Robot Maker

print &quot;Copy UML Script to clipboard ...&quot;
input
Yuml-Orders-list: to-block read clipboard://
Create-Use-Case Yuml-Orders-list
clipboard: copy &quot;&quot;

foreach element Yuml-Output-List [
    append clipboard element
    append clipboard newline
    append clipboard newline
]

 Print mold/only Yuml-Output-List

 write clipboard:// mold/only Yuml-Output-List
 ;write clipboard:// clipboard
 ans: &quot;Copied to clipboard... do you want to go to yUml.me (Y/N): &quot;
if ans = &quot;Y&quot; [
    browse http://yuml.me/diagram/scruffy/usecase/draw
]
</pre>
<pre class="brush: php;">
  note-rule: [(color: &quot;beige&quot;) some [
    'note [
            copy note-string to 'fond thru 'fond copy color to end
            (append output rejoin [&quot;note: &quot; note-string &quot;{&quot; &quot;bg:&quot; color &quot;}&quot;])
            |
            copy note-string to  end  (append output rejoin [&quot;note: &quot; note-string &quot;{&quot; &quot;bg:&quot; color &quot;}&quot;])              

      ]
    ]
    |           copy note-string to 'fond thru 'fond copy color to end
            (append output rejoin [&quot;note: &quot; note-string &quot;{&quot; &quot;bg:&quot; color &quot;}&quot;])
            |
            copy note-string to  end  (append output rejoin [&quot;note: &quot; note-string &quot;{&quot; &quot;bg:&quot; color &quot;}&quot;])
  ]

  actor-rule: [some [ [copy Actor to 'is thru 'is 'a 'Actor (append output rejoin [&quot;[&quot; Actor &quot;]&quot;])]
      | [copy Actor to 'is thru 'is 'a copy Actor2 to end (append output rejoin [&quot;[&quot; Actor &quot;]^[&quot; Actor2 &quot;]&quot;])]
   ]
  ]

  extend-rule: [some [copy UseCase2 to 'Extend thru 'Extend copy UseCase1 to end (append output rejoin [&quot;(&quot; UseCase1 &quot;)&lt;(&quot; UseCase2 &quot;)&quot;])]
  ]

  include-rule: [some [copy UseCase2 to 'Include thru 'Include copy UseCase1 to end (append output rejoin [&quot;(&quot; UseCase2 &quot;)&gt;(&quot; UseCase1 &quot;)&quot;])]
]  

  use-rule: [some
[copy Actor to 'Connect thru 'Connect 'to copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Connect to &quot; UseCase &quot;)&quot;])]
|
[copy Actor to 'Use thru 'Use copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Use &quot; UseCase &quot;)&quot;])]
|
[copy Actor to 'List thru 'List copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;List &quot; UseCase &quot;)&quot;])]
|
[copy Actor to 'Show thru 'Show copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Show &quot; UseCase &quot;)&quot;])]
|
[copy Actor to 'Search thru 'Search copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Search &quot; UseCase &quot;)&quot;])]
|
[copy Actor to 'Select thru 'Select copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Select &quot; UseCase &quot;)&quot;])]
|
[copy Actor to 'Checkout thru 'Checkout copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Checkout&quot; &quot;)&quot;])]
|
[copy Actor to 'Pay thru 'Pay copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Pay&quot; &quot;)&quot;])]
|
[copy Actor to 'Delete thru 'Delete copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Delete &quot; UseCase &quot;)&quot;])]
|
[copy Actor to 'Modify thru 'Modify copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Modify &quot; UseCase &quot;)&quot;])]
|
[copy Actor to 'Add thru 'Connect 'to copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Add to &quot; UseCase &quot;)&quot;])]
|
[copy Actor to 'Manage thru 'Manage copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Manage &quot; UseCase &quot;)&quot;])]

  ]

  yuml-rule: [(Actor: copy [] Actor2: copy []) actor-rule | extend-rule |  include-rule | use-rule | note-rule ]
</pre>
<pre class="brush: php;">
Create-Use-Case: func[Yuml-Orders-list][
  Worker: Make Robot[]
  Robot-Orders: [
     Yuml-Output-List: copy []

     foreach Yuml-Orders Yuml-Orders-list [
         Print [&quot;Yuml-Orders: &quot; Yuml-Orders &quot; started ...&quot; newline]
         generate Yuml-Orders
         Print output
         Append Yuml-Output-List copy output

         Print [&quot;Yuml-Orders: &quot; Yuml-Orders &quot; done! &quot; newline]
         Print Newline
     ]
  ]

  Worker/Run Robot-Orders
  Yuml-Output-List
]
</pre>
<pre class="brush: php;">
ROBOT: make object! [

    ;task1 function
  Generate: func [yuml-orders][

    output: copy &quot;&quot;

    block-orders-draft: parse/all yuml-orders &quot;^/&quot;
    block-orders: copy []
    foreach order block-orders-draft [

      if (length? (order: trim/head/tail order)) &gt; 0 [
          append block-orders  order
      ]
    ]

    foreach order block-orders [
      order-block: to-block order
      parse order-block yuml-rule
      append output newline
    ]
  ]

  ;task2 function
  list: func [][
      foreach Task Tasks-List [
        print Task
      ]
  ]

  ;core engine
  run: func [code][

      Tasks-List: copy [] ; reset the list
      output: copy &quot;&quot;
      do bind code 'self
  ]
]
</pre>
<p><a name="sampleinput">Sample UML Inputs (2 blocks scripts, first line of each block is an UML note):</a></p>
<pre class="brush: php;">
{
    Product Catalog
    User List all Product Categories
    User List Products within a Category
    List Products within a Category Extend List all Product Categories
    Select some Products Extend List Products within a Category
    User Search Product
    User Show a Product Detail
    Show a Product Detail Extend Search Product
    Show a Product Detail Extend List Products within a Category
    Add to Shopping Cart Extend Select some Products
    Show a Product Detail Extend Select some Products
    Add to Shopping Cart Extend Show a Product Detail
}

{
    Shopping Cart
    User Connect to Login Page
    User is a Customer
    User Checkout
    Customer Checkout
    Delete a Product Extend Checkout
    Modify a Product Quantity Extend Checkout
    Pay Extend Checkout
    Pay include Connect to Login Page
}
</pre>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p><a name="sampleoutput">Sample yUML Outputs (2 blocks scripts)</a>:</p>
<pre class="brush: php;">
{note: Product Catalog{bg:beige}
[User]-(List all Product Categories)
[User]-(List Products within a Category)
(List all Product Categories)&lt;(List Products within a Category)
(List Products within a Category)&lt;(Select some Products)
[User]-(Search Product)
[User]-(Show a Product Detail)
(Search Product)&lt;(Show a Product Detail)
(List Products within a Category)&lt;(Show a Product Detail)
(Select some Products)&lt;(Add to Shopping Cart)
(Select some Products)&lt;(Show a Product Detail)
(Show a Product Detail)&lt;(Add to Shopping Cart)
}

{
note: Shopping Cart{bg:beige}
[User]-(Connect to Login Page)
[User]^[Customer]
[User]-(Checkout)
[Customer]-(Checkout)
(Checkout)&lt;(Delete a Product)
(Checkout)&lt;(Modify a Product Quantity)
(Checkout)&lt;(Pay)
(Pay)&gt;(Connect to Login Page)
}
</pre>
<p>Copy a block script output ...<br />
<img src="http://askuml.com/files/2010/07/e-commerce-use-case-rebol.jpg" alt="e-commerce-use-case-rebol" title="e-commerce-use-case-rebol" width="768" height="492" class="aligncenter size-full wp-image-168" /></p>
<p>and copy it to <a href="http://yuml.me/diagram/scruffy/usecase/draw">http://yuml.me/diagram/scruffy/usecase/draw</a></p>
<p><strong>Articles:</strong></p>
<p><a href="http://www.oracle.com/technology/obe/obe9051jdev/Modeling/UML_UseCase.htm">Defining Business Requirements using UML Use Case diagram</a></p>
<p><strong>Books:</strong></p>
<p><a href="http://www.amazon.com/Applying-Case-Driven-Object-Modeling/dp/0201730391/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1231177902&amp;sr=1-1">Applying Use Case Driven Object Modeling with UML: An Annotated e-Commerce Example</a><br />
<a href="http://www.amazon.com/Applying-Case-Driven-Object-Modeling/dp/0201730391/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1231177902&amp;sr=1-1"><img src="http://ecx.images-amazon.com/images/I/41MRTD3994L._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://askuml.com/blog/e-commerce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Typical Login Page in UML/yUML Use Case Diagram</title>
		<link>http://askuml.com/blog/login-page-use-case-diagram/</link>
		<comments>http://askuml.com/blog/login-page-use-case-diagram/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 07:57:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Use Case]]></category>

		<guid isPermaLink="false">http://askuml.com/?p=121</guid>
		<description><![CDATA[







This is a typical Login Page Use Case Diagram from these Business Rules converted to yUML with this yUML Use Case generator.

Use Case Diagram:

Business Rules in plain English:

{
    User on Login Page
    User Connect to Login Page
    Login with Username &#38; Password Extend Connect to Login [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://askuml.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/121.png&amp;w=200&amp;h=0&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p>This is a typical Login Page Use Case Diagram from these <a href="#BusinessRules">Business Rules</a> converted to <a href="#yUML">yUML</a> with this <a href="/blog/yuml-use-case/">yUML Use Case generator</a>.</p>
<p><span id="more-121"></span></p>
<p>Use Case Diagram:<br />
<img src="http://askuml.com/files/2010/07/login-use-case.png" alt="login-use-case" title="login-use-case" width="1035" height="443" class="aligncenter size-full wp-image-123" /></p>
<p><a name="BusinessRules">Business Rules in plain English:</a></p>
<pre class="brush: html;">
{
    User on Login Page
    User Connect to Login Page
    Login with Username &amp; Password Extend Connect to Login Page
    Remember me Extend Login with Username &amp; Password
    Fill Username if forgot Password Extend Connect to Login Page
    Click on Register Extend Connect to Login Page
}
</pre>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p><a name="yUML">yUML translation:</a></p>
<pre class="brush: html;">
note: User on Login Page{bg:beige}
[User]-(Connect to Login Page)
(Connect to Login Page)&lt;(Login with Username &amp; Password)
(Login with Username &amp; Password)&lt;(Remember me)
(Connect to Login Page)&lt;(Fill Username if forgot Password)
(Connect to Login Page)&lt;(Click on Register)
</pre>
<p>Implementation Example:<br />
<img src="http://askuml.com/files/2010/07/login-use-case-implementation.png" alt="login-use-case-implementation" title="login-use-case-implementation" width="875" height="398" class="aligncenter size-full wp-image-126" /></p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p>Recommanded articles:<br />
<a href="http://www.agilemodeling.com/essays/businessAnalysts.htm">Rethinking the Role of Business Analysts: Towards Agile Business Analysts?</a></p>
<p>Recommanded Books:<br />
<a href="http://www.amazon.com/UML-Business-Analyst-Howard-Podeswa/dp/1598638688/ref=dp_ob_title_bk" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51szy0N6DAL._SL500_AA300_.jpg" alt="UML for Business Analyst" /></a></p>
<p>UML Jobs:<br />
<a href="http://www.itjobswatch.co.uk/jobs/uk/uml%20business%20analyst.do">UML Business Analyst Jobs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://askuml.com/blog/login-page-use-case-diagram/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sharetronix Class Diagrams</title>
		<link>http://askuml.com/blog/sharetronix-class-diagrams/</link>
		<comments>http://askuml.com/blog/sharetronix-class-diagrams/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 20:05:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Class Diagram]]></category>
		<category><![CDATA[sharetronix]]></category>

		<guid isPermaLink="false">http://askuml.com/?p=83</guid>
		<description><![CDATA[
This is sharetronix UML Class Diagrams created with this script (to be continued &#8230;)


[users&#124;id;facebook_uid;email;username;password;fullname;avatar;]
[posts&#124;id;api_id;user_id;group_id;message;mentioned;attached;posttags;comments;date;date_lastedit;date_lastcomment;ip_addr;]
[posts_attachments&#124;id;post_id;type;data;]
[posts_comments&#124;id;api_id;post_id;user_id;message;mentioned;posttags;date;ip_addr;]
[users]++-[posts]
[posts]++-[posts_attachments]
[posts]++-[posts_comments]



[cache&#124;key;data;expire;]
[crons&#124;cron;last_run;next_run;is_running;]
[groups&#124;id;groupname;title;avatar;about_me;is_public;num_posts;num_followers;]
[groups_admins&#124;id;group_id;user_id;]
[groups_deleted&#124;id;groupname;title;is_public;]
[groups_followed&#124;id;user_id;group_id;date;group_from_postid;]
[groups_private_members&#124;id;group_id;user_id;invited_by;invited_date;]
[groups_rssfeeds&#124;id;group_id;feed_url;feed_userpwd;feed_title;filter_keywords;date_added;date_last_post;date_last_crawl;date_last_item;added_by_user;is_deleted;]
[groups_rssfeeds_posts&#124;id;rssfeed_id;post_id;]
[invitation_codes&#124;code;user_id;]

[posts&#124;id;api_id;user_id;group_id;message;mentioned;attached;posttags;comments;date;date_lastedit;date_lastcomment;ip_addr;]
[posts_attachments&#124;id;post_id;type;data;]
[posts_comments&#124;id;api_id;post_id;user_id;message;mentioned;posttags;date;ip_addr;]
[post_api&#124;id;name;total_posts;]
[post_favs&#124;id;user_id;post_type;post_id;date;]
[post_userbox&#124;user_id;post_id;]
[post_userbox_feeds&#124;user_id;post_id;]
[posts_comments_mentioned&#124;id;comment_id;user_id;]
[posts_comments_watch&#124;id;user_id;post_id;newcomments;]
[posts_mentioned&#124;id;post_id;user_id;]
[posts_pr&#124;id;api_id;user_id;to_user;message;mentioned;attached;posttags;comments;date;date_lastedit;date_lastcomment;ip_addr;is_recp_del;]
[posts_pr_attachments&#124;id;post_id;type;data;]
[posts_pr_comments&#124;id;api_id;post_id;user_id;message;mentioned;posttags;date;ip_addr;]
[posts_pr_comments_mentioned&#124;id;comment_id;user_id;]
[posts_pr_comments_watch&#124;id;user_id;post_id;newcomments;]
[posts_pr_mentioned&#124;id;post_id;user_id;]

[searches&#124;id;user_id;search_key;search_string;search_url;added_date;total_hits;last_results;]
[settings&#124;word;value;]
[unconfirmed_registrations&#124;id;email;fullname;confirm_key;invited_code;date;]
[users&#124;id;facebook_uid;email;username;password;fullname;avatar;about_me;tags;gender;birthdate;position;location;language;timezone;num_posts;num_followers;used_storage;js_animations;dbrd_groups_closed;dbrd_whattodo_closed;comments_expanded;reg_date;reg_ip;lastlogin_date;lastlogin_ip;lastpost_date;lastemail_date;lastclick_date;lastclick_date_newest_post;pass_reset_key;pass_reset_valid;active;is_network_admin;]
[users_dashboard_tabs&#124;user_id;tab;state;newposts;]
[users_details&#124;user_id;website;work_phone;personal_phone;personal_email;im_skype;im_icq;im_gtalk;im_msn;im_yahoo;im_aim;im_jabber;prof_linkedin;prof_facebook;prof_twitter;prof_flickr;prof_friendfeed;prof_delicious;prof_digg;prof_myspace;prof_orcut;prof_youtube;prof_mixx;prof_edno23;prof_favit;]
[users_followed&#124;id;who;whom;date;whom_from_postid;]
[users_ignores&#124;id;who;whom;date;]
[users_invitations&#124;id;user_id;date;recp_name;recp_email;recp_is_registered;recp_user_id;]
[users_notif_rules&#124;user_id;ntf_them_if_i_follow_usr;ntf_them_if_i_comment;ntf_them_if_i_edt_profl;ntf_them_if_i_edt_pictr;ntf_them_if_i_create_grp;ntf_them_if_i_join_grp;ntf_me_if_u_follows_me;ntf_me_if_u_follows_u2;ntf_me_if_u_commments_me;ntf_me_if_u_commments_m2;ntf_me_if_u_edt_profl;ntf_me_if_u_edt_pictr;ntf_me_if_u_creates_grp;ntf_me_if_u_joins_grp;ntf_me_if_u_invit_me_grp;ntf_me_if_u_posts_qme;ntf_me_if_u_posts_prvmsg;ntf_me_if_u_registers;]
[users_pageviews&#124;id;user_id;date;pageviews;]
[users_rssfeeds&#124;id;user_id;feed_url;feed_userpwd;feed_title;filter_keywords;date_added;date_last_post;date_last_crawl;date_last_item;is_deleted;]
[users_rssfeeds_posts&#124;id;rssfeed_id;post_id;]

]]></description>
			<content:encoded><![CDATA[<p><img src='http://askuml.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/83.jpg&amp;w=200&amp;h=0&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>This is sharetronix UML Class Diagrams created with this <a href="http://askuml.com/blog/list-all-fields-of-all-mysql-db-tables-in-yuml-class-diagrams/">script</a> (to be continued &#8230;)</p>
<p><span id="more-83"></span></p>
<pre class="brush: html;">
[users|id;facebook_uid;email;username;password;fullname;avatar;]
[posts|id;api_id;user_id;group_id;message;mentioned;attached;posttags;comments;date;date_lastedit;date_lastcomment;ip_addr;]
[posts_attachments|id;post_id;type;data;]
[posts_comments|id;api_id;post_id;user_id;message;mentioned;posttags;date;ip_addr;]
[users]++-[posts]
[posts]++-[posts_attachments]
[posts]++-[posts_comments]
</pre>
<p><img src="http://askuml.com/files/2010/06/post-uml-sharetronix2.png" alt="post-uml-sharetronix2" title="post-uml-sharetronix2" width="368" height="971" class="aligncenter size-full wp-image-96" /></p>
<pre class="brush: html;">
[cache|key;data;expire;]
[crons|cron;last_run;next_run;is_running;]
[groups|id;groupname;title;avatar;about_me;is_public;num_posts;num_followers;]
[groups_admins|id;group_id;user_id;]
[groups_deleted|id;groupname;title;is_public;]
[groups_followed|id;user_id;group_id;date;group_from_postid;]
[groups_private_members|id;group_id;user_id;invited_by;invited_date;]
[groups_rssfeeds|id;group_id;feed_url;feed_userpwd;feed_title;filter_keywords;date_added;date_last_post;date_last_crawl;date_last_item;added_by_user;is_deleted;]
[groups_rssfeeds_posts|id;rssfeed_id;post_id;]
[invitation_codes|code;user_id;]

[posts|id;api_id;user_id;group_id;message;mentioned;attached;posttags;comments;date;date_lastedit;date_lastcomment;ip_addr;]
[posts_attachments|id;post_id;type;data;]
[posts_comments|id;api_id;post_id;user_id;message;mentioned;posttags;date;ip_addr;]
[post_api|id;name;total_posts;]
[post_favs|id;user_id;post_type;post_id;date;]
[post_userbox|user_id;post_id;]
[post_userbox_feeds|user_id;post_id;]
[posts_comments_mentioned|id;comment_id;user_id;]
[posts_comments_watch|id;user_id;post_id;newcomments;]
[posts_mentioned|id;post_id;user_id;]
[posts_pr|id;api_id;user_id;to_user;message;mentioned;attached;posttags;comments;date;date_lastedit;date_lastcomment;ip_addr;is_recp_del;]
[posts_pr_attachments|id;post_id;type;data;]
[posts_pr_comments|id;api_id;post_id;user_id;message;mentioned;posttags;date;ip_addr;]
[posts_pr_comments_mentioned|id;comment_id;user_id;]
[posts_pr_comments_watch|id;user_id;post_id;newcomments;]
[posts_pr_mentioned|id;post_id;user_id;]

[searches|id;user_id;search_key;search_string;search_url;added_date;total_hits;last_results;]
[settings|word;value;]
[unconfirmed_registrations|id;email;fullname;confirm_key;invited_code;date;]
[users|id;facebook_uid;email;username;password;fullname;avatar;about_me;tags;gender;birthdate;position;location;language;timezone;num_posts;num_followers;used_storage;js_animations;dbrd_groups_closed;dbrd_whattodo_closed;comments_expanded;reg_date;reg_ip;lastlogin_date;lastlogin_ip;lastpost_date;lastemail_date;lastclick_date;lastclick_date_newest_post;pass_reset_key;pass_reset_valid;active;is_network_admin;]
[users_dashboard_tabs|user_id;tab;state;newposts;]
[users_details|user_id;website;work_phone;personal_phone;personal_email;im_skype;im_icq;im_gtalk;im_msn;im_yahoo;im_aim;im_jabber;prof_linkedin;prof_facebook;prof_twitter;prof_flickr;prof_friendfeed;prof_delicious;prof_digg;prof_myspace;prof_orcut;prof_youtube;prof_mixx;prof_edno23;prof_favit;]
[users_followed|id;who;whom;date;whom_from_postid;]
[users_ignores|id;who;whom;date;]
[users_invitations|id;user_id;date;recp_name;recp_email;recp_is_registered;recp_user_id;]
[users_notif_rules|user_id;ntf_them_if_i_follow_usr;ntf_them_if_i_comment;ntf_them_if_i_edt_profl;ntf_them_if_i_edt_pictr;ntf_them_if_i_create_grp;ntf_them_if_i_join_grp;ntf_me_if_u_follows_me;ntf_me_if_u_follows_u2;ntf_me_if_u_commments_me;ntf_me_if_u_commments_m2;ntf_me_if_u_edt_profl;ntf_me_if_u_edt_pictr;ntf_me_if_u_creates_grp;ntf_me_if_u_joins_grp;ntf_me_if_u_invit_me_grp;ntf_me_if_u_posts_qme;ntf_me_if_u_posts_prvmsg;ntf_me_if_u_registers;]
[users_pageviews|id;user_id;date;pageviews;]
[users_rssfeeds|id;user_id;feed_url;feed_userpwd;feed_title;filter_keywords;date_added;date_last_post;date_last_crawl;date_last_item;is_deleted;]
[users_rssfeeds_posts|id;rssfeed_id;post_id;]
</pre>
]]></content:encoded>
			<wfw:commentRss>http://askuml.com/blog/sharetronix-class-diagrams/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>List all fields of all mysql db tables in yUML Class Diagrams</title>
		<link>http://askuml.com/blog/list-all-fields-of-all-mysql-db-tables-in-yuml-class-diagrams/</link>
		<comments>http://askuml.com/blog/list-all-fields-of-all-mysql-db-tables-in-yuml-class-diagrams/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 13:26:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Class Diagram]]></category>

		<guid isPermaLink="false">http://askuml.com/?p=56</guid>
		<description><![CDATA[







This script doesn&#8217;t work any more: it&#8217;s in maintenance mode.
This script (see usage) will list all fields of all tables of a mysql db (postgress coming soon or you can easily adapt) and convert them to yUML classes.

For example, you can generate these classes from a Wordpress Database:









;ask db-parameters
either value? 'mysql-db [
   ans: [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://askuml.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/56.jpg&amp;w=200&amp;h=0&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
<br />
This script doesn&#8217;t work any more: it&#8217;s in maintenance mode.</p>
<p>This script (see <a href="http://askuml.com/about/">usage</a>) will list all fields of all tables of a mysql db (<a href="http://softinnov.org/rebol/pgsql.shtml">postgress</a> coming soon or you can easily adapt) and convert them to <a href="http://yuml.me/diagram/scruffy/class/draw">yUML classes</a>.</p>
<p><span id="more-56"></span><br />
For example, you can generate these classes from a Wordpress Database:<br />
<img src="http://askblogautomation.com/files/2010/06/wp-tables-yuml.png"></p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<pre class="brush: html;">
;ask db-parameters
either value? 'mysql-db [
   ans: ask rejoin [&quot;mysql-db&quot; &quot; (by default &quot; mysql-db &quot;)&quot; &quot;: &quot;]
   if ans &lt;&gt; &quot;&quot; [mysql-db: ans]
][
   mysql-db: ask &quot;mysql-db: &quot;
]

do code-block/2
do code-block/3
do code-block/4
do code-block/5

;mysql protocol is automatically loaded with askuml script so you don't need to
;otherwise see http://softinnov.org/rebol/mysql.shtml
mysql-connect: rejoin [mysql:// mysql-login &quot;:&quot; mysql-password &quot;@&quot; mysql-server &quot;/&quot; mysql-db]

  tables-list: read/custom mysql-connect [&quot;SHOW TABLES;&quot;]
  final-result0: copy []
  final-result1: copy &quot;&quot;
  final-result: copy &quot;&quot;
  foreach table-block tables-list [
      table: pick table-block 1
      append final-result0 get-list-fields table
      append final-result0 newline
      append final-result convert-to-yuml table
      append final-result newline
      append final-result1 convert-to-yuml-usecase table
      append final-result1 newline
  ]
  write clipboard://  final-result
</pre>
<pre class="brush: html;">
either exists? it: %askuml/db-params.txt [
    params-block: copy load it
][
    params-block: []
]

either res: find params-block mysql-db [
    mysql-server: pick res 2
    mysql-login: pick res 3
    mysql-password: pick res 4
    print [ mysql-db &quot;found in&quot; it]
][

    new-param: reduce [
    mold mysql-db
    mold mysql-server
    mold mysql-login
    mold mysql-password
    ]

    either not exists? %askuml/db-params.txt [
        create-dir &quot;askuml/&quot;
        write/append %askuml/db-params.txt reform new-param
    ][
        write/append %askuml/db-params.txt reform [newline new-param]
    ]

]
</pre>
<pre class="brush: html;">
get-list-fields: func[table][
  Print [&quot;list all fields of &quot; table]
  sql: copy []
  append sql rejoin [&quot;describe &quot; table &quot;;&quot;]
  Probe fields-list: read/custom mysql-connect sql
  clipboard: copy &quot;&quot;
  append clipboard mold table
  append clipboard &quot; [&quot;
  append clipboard newline
  foreach field-block fields-list [
      append clipboard mold pick field-block 1
      append clipboard &quot; [&quot;
      append clipboard mold pick field-block 2
      append clipboard &quot; &quot;
      append clipboard mold pick field-block 3
      append clipboard &quot; &quot;
      append clipboard mold pick field-block 4
      append clipboard &quot; &quot;
      append clipboard mold pick field-block 5
      append clipboard &quot; &quot;
      append clipboard mold pick field-block 6
      append clipboard &quot;]&quot;
      append clipboard newline
  ]
  append clipboard &quot;]&quot;
  return-value: copy clipboard
]</pre>
<pre class="brush: html;">
convert-to-yuml: func[table][
      clipboard: copy &quot;&quot;
      append clipboard rejoin [&quot;[&quot; table &quot;|&quot;]
      foreach field fields-list [
          field1: pick field 1
          append clipboard field1
          append clipboard &quot;;&quot;
      ]
      append clipboard {]}
      clipboard
]
</pre>
<pre class="brush: html;">
convert-to-yuml-usecase: func[table][
      clipboard: copy &quot;&quot;
      append clipboard rejoin [&quot;{&quot; table newline]
      foreach field fields-list [
          field1: pick field 1
          append clipboard rejoin [table &quot; include &quot; field1]
          append clipboard newline
      ]
      append clipboard &quot;}&quot;
      clipboard
]
</pre>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p>Sample output1 (Wordpress DB):</p>
<pre class="brush: html;">
[wp_comments|comment_ID;comment_post_ID;comment_author;comment_author_email;comment_author_url;comment_author_IP;comment_date;comment_date_gmt;comment_content;comment_karma;comment_approved;comment_agent;comment_type;comment_parent;user_id;]
[wp_links|link_id;link_url;link_name;link_image;link_target;link_description;link_visible;link_owner;link_rating;link_updated;link_rel;link_notes;link_rss;]
[wp_options|option_id;blog_id;option_name;option_value;autoload;]
[wp_postmeta|meta_id;post_id;meta_key;meta_value;]
[wp_posts|ID;post_author;post_date;post_date_gmt;post_content;post_title;post_excerpt;post_status;comment_status;ping_status;post_password;post_name;to_ping;pinged;post_modified;post_modified_gmt;post_content_filtered;post_parent;guid;menu_order;post_type;post_mime_type;comment_count;]
[wp_term_relationships|object_id;term_taxonomy_id;term_order;]
[wp_term_taxonomy|term_taxonomy_id;term_id;taxonomy;description;parent;count;]
[wp_terms|term_id;name;slug;term_group;]
[wp_usermeta|umeta_id;user_id;meta_key;meta_value;]
[wp_users|ID;user_login;user_pass;user_nicename;user_email;user_url;user_registered;user_activation_key;user_status;display_name;]
</pre>
<p>Sample Output2 (Sharetronix):</p>
<pre class="brush: html;">
[posts|id;api_id;user_id;group_id;message;mentioned;attached;posttags;comments;date;date_lastedit;date_lastcomment;ip_addr;]
[posts_attachments|id;post_id;type;data;]
[posts_comments|id;api_id;post_id;user_id;message;mentioned;posttags;date;ip_addr;]
</pre>
]]></content:encoded>
			<wfw:commentRss>http://askuml.com/blog/list-all-fields-of-all-mysql-db-tables-in-yuml-class-diagrams/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>UML Online: yUML Use Case Script Generator (using clipboard input/output)</title>
		<link>http://askuml.com/blog/yuml-use-case/</link>
		<comments>http://askuml.com/blog/yuml-use-case/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 05:42:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Use Case]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[yUML]]></category>

		<guid isPermaLink="false">http://askuml.com/blog/yuml-use-case/</guid>
		<description><![CDATA[







This script (see usage) will generate multiple yUML Use Case Scripts at once using an english-natural-like syntax copied to clipboard as input (see sample input) and output will also be copied to clipboard (see sample output).












Rebol [
    Title: &#34;yUML Use Case&#34;
    Author-Url: http://askuml.com
    Script-Url:  http://askuml.com/blog/yuml-use-case
 [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://askuml.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/3.jpg&amp;w=200&amp;h=0&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p>This script (see <a href="http://askuml.com/about/">usage</a>) will generate <em>multiple</em> yUML Use Case Scripts at once using an <strong>english-natural-like</strong> syntax copied to clipboard as input (see <a href="#sampleinput">sample input</a>) and output will also be copied to clipboard (see <a href="#sampleoutput">sample output</a>).</p>
<p><span id="more-3"></span></p>
<p><img src="http://askuml.com/files/2010/06/yuml-use-case-diagram01.png" alt="yuml-use-case-diagram01" title="yuml-use-case-diagram01" width="421" height="531" class="aligncenter size-full wp-image-35" /></p>
<p><img src="http://askuml.com/files/2010/06/yuml-use-case-diagram03.png" alt="yuml-use-case-diagram03" title="yuml-use-case-diagram03" width="963" height="315" class="aligncenter size-full wp-image-46" /></p>
<p><img src="http://askuml.com/files/2010/06/yuml-use-case-diagram02.png" alt="yuml-use-case-diagram02" title="yuml-use-case-diagram02" width="717" height="315" class="aligncenter size-full wp-image-39" /></p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<pre class="brush: php;">
Rebol [
    Title: &quot;yUML Use Case&quot;
    Author-Url: http://askuml.com
    Script-Url:  http://askuml.com/blog/yuml-use-case
    Version: 1.2
    Date:  3-Jul-2010
    Purpose: {
            Generate yUML Use Case Diagram
    }
]

do code-block/2; business rules parsing
do code-block/3; yUML function
do code-block/4; Robot Maker

print &quot;Copy UML Script to clipboard ...&quot;
input
Yuml-Orders-list: to-block read clipboard://
Create-Use-Case Yuml-Orders-list
clipboard: copy &quot;&quot;

foreach element Yuml-Output-List [
    append clipboard element
    append clipboard newline
    append clipboard newline
]

 Print mold/only Yuml-Output-List

 write clipboard:// mold/only Yuml-Output-List
 ;write clipboard:// clipboard
 ans: &quot;Copied to clipboard... do you want to go to yUml.me (Y/N): &quot;
if ans = &quot;Y&quot; [
    browse http://yuml.me/diagram/scruffy/usecase/draw
]
</pre>
<pre class="brush: php;">
  note-rule: [(color: &quot;beige&quot;) some [
    'note [
            copy note-string to 'fond thru 'fond copy color to end
            (append output rejoin [&quot;note: &quot; note-string &quot;{&quot; &quot;bg:&quot; color &quot;}&quot;])
            |
            copy note-string to  end  (append output rejoin [&quot;note: &quot; note-string &quot;{&quot; &quot;bg:&quot; color &quot;}&quot;])              

      ]
    ]
    |           copy note-string to 'fond thru 'fond copy color to end
            (append output rejoin [&quot;note: &quot; note-string &quot;{&quot; &quot;bg:&quot; color &quot;}&quot;])
            |
            copy note-string to  end  (append output rejoin [&quot;note: &quot; note-string &quot;{&quot; &quot;bg:&quot; color &quot;}&quot;])
  ]

  actor-rule: [some [ [copy Actor to 'is thru 'is 'a 'Actor (append output rejoin [&quot;[&quot; Actor &quot;]&quot;])]
      | [copy Actor to 'is thru 'is 'a copy Actor2 to end (append output rejoin [&quot;[&quot; Actor &quot;]^[&quot; Actor2 &quot;]&quot;])]
   ]
  ]

  extend-rule: [some [copy UseCase2 to 'Extend thru 'Extend copy UseCase1 to end (append output rejoin [&quot;(&quot; UseCase1 &quot;)&lt;(&quot; UseCase2 &quot;)&quot;])]
  ]

  include-rule: [some [copy UseCase2 to 'Include thru 'Include copy UseCase1 to end (append output rejoin [&quot;(&quot; UseCase2 &quot;)&gt;(&quot; UseCase1 &quot;)&quot;])]
]  

  use-rule: [some
[copy Actor to 'Connect thru 'Connect 'to copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Connect to &quot; UseCase &quot;)&quot;])]
|
[copy Actor to 'Use thru 'Use copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Use &quot; UseCase &quot;)&quot;])]
|
[copy Actor to 'List thru 'List copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;List &quot; UseCase &quot;)&quot;])]
|
[copy Actor to 'Show thru 'Show copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Show &quot; UseCase &quot;)&quot;])]
|
[copy Actor to 'Manage thru 'Manage copy UseCase to end (append output rejoin [&quot;[&quot; Actor &quot;]-(&quot; &quot;Manage &quot; UseCase &quot;)&quot;])]
  ]

  yuml-rule: [(Actor: copy [] Actor2: copy []) actor-rule | extend-rule |  include-rule | use-rule | note-rule ]
</pre>
<pre class="brush: php;">
Create-Use-Case: func[Yuml-Orders-list][
  Worker: Make Robot[]
  Robot-Orders: [
     Yuml-Output-List: copy []

     foreach Yuml-Orders Yuml-Orders-list [
         Print [&quot;Yuml-Orders: &quot; Yuml-Orders &quot; started ...&quot; newline]
         generate Yuml-Orders
         Print output
         Append Yuml-Output-List copy output

         Print [&quot;Yuml-Orders: &quot; Yuml-Orders &quot; done! &quot; newline]
         Print Newline
     ]
  ]

  Worker/Run Robot-Orders
  Yuml-Output-List
]
</pre>
<pre class="brush: php;">
ROBOT: make object! [

    ;task1 function
  Generate: func [yuml-orders][

    output: copy &quot;&quot;

    block-orders-draft: parse/all yuml-orders &quot;^/&quot;
    block-orders: copy []
    foreach order block-orders-draft [

      if (length? (order: trim/head/tail order)) &gt; 0 [
          append block-orders  order
      ]
    ]

    foreach order block-orders [
      order-block: to-block order
      parse order-block yuml-rule
      append output newline
    ]
  ]

  ;task2 function
  list: func [][
      foreach Task Tasks-List [
        print Task
      ]
  ]

  ;core engine
  run: func [code][

      Tasks-List: copy [] ; reset the list
      output: copy &quot;&quot;
      do bind code 'self
  ]
]
</pre>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-0405752764305023";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p><a name="sampleinput">Sample UML Inputs (3 blocks scripts, first line of each block is an UML note):</a></p>
<pre class="brush: php;">
  {
      Wordpress Profiles
      Blogger is a User
      Admin is a Blogger
      Author is a Blogger
      Subscriber is a User
  }

  {
      Blogger Role
      Blogger Manage Posts
      Manage Posts Include Create Post
      Manage Posts Include Edit Post
      Manage Posts Include Delete Post
      Categorize Post Extend Create Post
      Categorize Post Extend Edit Post
  }

  {
      Admin Roles
      Admin Manage Site
      Manage Site Include Manage Users
      Manage Site Include Manage Themes
      Manage Site Include Manage Plugins
  }
</pre>
<p><a name="sampleoutput">Sample yUML Outputs (3 blocks scripts)</a>:</p>
<pre class="brush: php;">
{
note: Wordpress Profiles{bg:beige}
[Blogger]^[User]
[Admin]^[Blogger]
[Author]^[Blogger]
[Subscriber]^[User]
} 

{
[Blogger]-(Manage Posts)
(Manage Posts)&gt;(Create Post)
(Manage Posts)&gt;(Edit Post)
(Manage Posts)&gt;(Delete Post)
(Create Post)(Manage Themes)
(Manage Site)&gt;(Manage Plugins)
}
</pre>
<p>Copy a block script output ...<br />
<img src="http://askuml.com/files/2010/06/copy-yuml-script.jpg" alt="copy-yuml-script" title="copy-yuml-script" width="428" height="366" class="aligncenter size-full wp-image-42" /></p>
<p>and copy it to <a href="http://yuml.me/diagram/scruffy/usecase/draw">http://yuml.me/diagram/scruffy/usecase/draw</a><br />
<img src="http://askuml.com/files/2010/06/yuml.jpg" alt="yuml" title="yuml" width="621" height="927" class="aligncenter size-full wp-image-37" /></p>
]]></content:encoded>
			<wfw:commentRss>http://askuml.com/blog/yuml-use-case/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
