<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://eiffelroom.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>eiffelroom - Start using Eiffel Information System (EIS) - Comments</title>
 <link>http://eiffelroom.com/blog/ted_eiffel/start_using_eiffel_information_system_eis</link>
 <description>Comments for &quot;Start using Eiffel Information System (EIS)&quot;</description>
 <language>en</language>
<item>
 <title>It could be still shorter in some circumstances</title>
 <link>http://eiffelroom.com/blog/ted_eiffel/start_using_eiffel_information_system_eis#comment-454</link>
 <description>&lt;p&gt;That looks fine.&lt;/p&gt;

&lt;p&gt;In fact, you can drop the eiffel: too in some cases. The application can set a base URI of eiffel: .&lt;/p&gt;

&lt;p&gt;Colin Adams&lt;/p&gt;

</description>
 <pubDate>Wed, 21 May 2008 12:03:44 -0700</pubDate>
 <dc:creator>colin-adams</dc:creator>
 <guid isPermaLink="false">comment 454 at http://eiffelroom.com</guid>
</item>
<item>
 <title>No plan for now.</title>
 <link>http://eiffelroom.com/blog/ted_eiffel/start_using_eiffel_information_system_eis#comment-451</link>
 <description>&lt;p&gt;Thanks for the information, Colin.&lt;br /&gt;
 I read more about this. Now I think &amp;quot;//&amp;quot; may not be needed. Since it is used ONLY when the syntax of the URI&#039;s &amp;lt;scheme-specific-part&amp;gt; contains a hierarchical structure. system/target/group/cluster/class/feature is kind of hierarchical structure, but not strict. Some parts are optional when certain parts present. It seems the best fit of current requirement is like &amp;quot;eiffel:?class=XXX&amp;amp;feature=XXX&amp;quot;.&lt;/p&gt;

</description>
 <pubDate>Tue, 20 May 2008 20:03:23 -0700</pubDate>
 <dc:creator>ted_eiffel</dc:creator>
 <guid isPermaLink="false">comment 451 at http://eiffelroom.com</guid>
</item>
<item>
 <title>Are you going to register the Eiffel URI scheme?</title>
 <link>http://eiffelroom.com/blog/ted_eiffel/start_using_eiffel_information_system_eis#comment-449</link>
 <description>&lt;p&gt;I am puzzled as to how you are implementing these incoming links.&lt;/p&gt;

&lt;p&gt;First, you talk about entering them in a browser. And the syntax looks like a URI but isn&#039;t.&lt;/p&gt;

&lt;p&gt;I would suggest the following actions:&lt;/p&gt;

&lt;p&gt;1) Read RFC 3986 - the definition of URI syntax. 2) If you still can&#039;t see why the examples are wrong, and why the design of the URI is poor, create a UT_URI object with one of those example &amp;quot;URI&amp;quot;s, and then stop in the debugger at the end of the creation procedure, and examine the attributes of the UT_URI object. 3) Read the procedures on registering a URI scheme (scheme - not protocol. Even the http URI scheme doesn&#039;t always mean the http protocol will be used). Even if you don&#039;t submit the scheme for registration (and I certainly think you should do so), considering the process should help a lot.&lt;/p&gt;

&lt;p&gt;Colin Adams&lt;/p&gt;

</description>
 <pubDate>Tue, 20 May 2008 00:17:25 -0700</pubDate>
 <dc:creator>colin-adams</dc:creator>
 <guid isPermaLink="false">comment 449 at http://eiffelroom.com</guid>
</item>
<item>
 <title>The following link is</title>
 <link>http://eiffelroom.com/blog/ted_eiffel/start_using_eiffel_information_system_eis#comment-447</link>
 <description>&lt;p&gt;The following link is sufficient to locate &lt;code class=&quot;geshifilter eiffel&quot;&gt;&lt;span style=&quot;color: #FF0000;&quot;&gt;&amp;#123;&lt;/span&gt;STRING_8&lt;span style=&quot;color: #FF0000;&quot;&gt;&amp;#125;&lt;/span&gt;.&lt;span style=&quot;color: #000060;&quot;&gt;is_equal&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
 eiffel://system=ec&amp;amp;target=base&amp;amp;class=STRING_8&amp;amp;feature=is_equal&lt;/p&gt;

&lt;p&gt;By your means, it would be:&lt;br /&gt;
 eiffel:///bysystem/ec/base/STRING_8/is_equal&lt;/p&gt;

&lt;p&gt;Note that `cluster&#039; is omitted here. It means that we don&#039;t know what `STRING_8&#039; is. It can be a cluster name and `is_equal&#039; is a class name. So this could be interpreted as class `IS_EQUAL&#039; is required in cluster `string_8&#039;.&lt;/p&gt;

</description>
 <pubDate>Sat, 17 May 2008 21:11:56 -0700</pubDate>
 <dc:creator>ted_eiffel</dc:creator>
 <guid isPermaLink="false">comment 447 at http://eiffelroom.com</guid>
</item>
<item>
 <title>Path URI</title>
 <link>http://eiffelroom.com/blog/ted_eiffel/start_using_eiffel_information_system_eis#comment-446</link>
 <description>&lt;p&gt;Yes path URI sounds so much better than the name value mess, and is not exclusive with defaulting of various types, with say a magic word as first component:&lt;/p&gt;

&lt;p&gt;eiffel:///byclass/STRING/is_equal eiffel:///bycluster/foo/STRING/is_equal&lt;/p&gt;

&lt;p&gt;etc&lt;/p&gt;

</description>
 <pubDate>Fri, 16 May 2008 08:01:34 -0700</pubDate>
 <dc:creator>nenieorg</dc:creator>
 <guid isPermaLink="false">comment 446 at http://eiffelroom.com</guid>
</item>
<item>
 <title>Though I am not aware of</title>
 <link>http://eiffelroom.com/blog/ted_eiffel/start_using_eiffel_information_system_eis#comment-443</link>
 <description>&lt;p&gt;Though I am not aware of what kind of software processes the URI and how it would be useful picking up name/value pairs, it is would always be better to follow standard. Using eiffel:///? is OK for me, except that it looks uglier. Actually the .ecf is not needed for EIS incoming mechanism. Only optional system/system UUID is needed for locating project.&lt;/p&gt;

</description>
 <pubDate>Wed, 14 May 2008 07:28:24 -0700</pubDate>
 <dc:creator>ted_eiffel</dc:creator>
 <guid isPermaLink="false">comment 443 at http://eiffelroom.com</guid>
</item>
<item>
 <title>Perhaps a path</title>
 <link>http://eiffelroom.com/blog/ted_eiffel/start_using_eiffel_information_system_eis#comment-442</link>
 <description>&lt;p&gt;You would need eiffel:///?... if you expected generic URI processing software to pick up the name/value pairs.&lt;/p&gt;

&lt;p&gt;or alternatively abandon the query parameters approach, and have a structured path (something like /system/target/cluster/class/feature). But that would make it hard to default the system and target.&lt;/p&gt;

&lt;p&gt;I can&#039;t see how this is supposed to work anyway. Surely you need an ecf file? In which case the obvious syntax is:&lt;/p&gt;

&lt;p&gt;eiffel:///path/to/my.ecf?class=my_class&amp;amp;feature=my_feature&lt;/p&gt;

&lt;p&gt;and the authority field is then available for a future extension for non-local access.&lt;/p&gt;

&lt;p&gt;Colin Adams&lt;/p&gt;

</description>
 <pubDate>Tue, 13 May 2008 07:35:48 -0700</pubDate>
 <dc:creator>colin-adams</dc:creator>
 <guid isPermaLink="false">comment 442 at http://eiffelroom.com</guid>
</item>
<item>
 <title>Indeed. I think eiffel:///</title>
 <link>http://eiffelroom.com/blog/ted_eiffel/start_using_eiffel_information_system_eis#comment-441</link>
 <description>&lt;p&gt;Indeed. I think eiffel:/// would be nicer.&lt;/p&gt;

</description>
 <pubDate>Tue, 13 May 2008 05:04:22 -0700</pubDate>
 <dc:creator>ted_eiffel</dc:creator>
 <guid isPermaLink="false">comment 441 at http://eiffelroom.com</guid>
</item>
<item>
 <title>Invalid URIs</title>
 <link>http://eiffelroom.com/blog/ted_eiffel/start_using_eiffel_information_system_eis#comment-440</link>
 <description>&lt;p&gt;The syntax of the eiffel: URIs is invalid.&lt;/p&gt;

&lt;p&gt;That is, the presence of the // indicates that what follows is an authority segment:&lt;/p&gt;

&lt;p&gt;According to RFC 3986, this is terminated by the first /, ? or # character.&lt;/p&gt;

&lt;p&gt;None of those is present, so the remainder of the URI needs to match the authority production syntax. As there is no @ or : present, this in turn means matching the syntax for host. Clearly it does not.&lt;/p&gt;

&lt;p&gt;I suggest that you appear to be parameter/value pairs, and that therefore this remainder should actually be part of the query segment.&lt;/p&gt;

&lt;p&gt;Accordingly, change eiffel:// into eiffel://? in order to conform to URI syntax.&lt;/p&gt;

&lt;p&gt;I assume that by protocol link you actually meant URI scheme.&lt;/p&gt;

&lt;p&gt;Colin Adams&lt;/p&gt;

</description>
 <pubDate>Tue, 13 May 2008 03:18:33 -0700</pubDate>
 <dc:creator>colin-adams</dc:creator>
 <guid isPermaLink="false">comment 440 at http://eiffelroom.com</guid>
</item>
<item>
 <title>Start using Eiffel Information System (EIS)</title>
 <link>http://eiffelroom.com/blog/ted_eiffel/start_using_eiffel_information_system_eis</link>
 <description>&lt;p&gt;In EiffelStudio 6.2, Eiffel Information System (EIS) will be introduced. The goal of EIS is to provide a unified mechanism for linking development objects — classes and features, or even targets and groups — of Eiffel systems with external information. This term refers to information other than Eiffel program texts. Usually the tools maintaining external information are separate tools, such as a browser; we call them external tools.&lt;/p&gt;

&lt;p&gt;The main apparent addition is the Information tool. But don&#039;t be tricked. The basic mechanisms that EIS makes available to users, at least Windows users, include two categories: outgoing (from Eiffel to external tools), incoming  (the reverse). The tool belong to the former one.&lt;/p&gt;

&lt;p&gt;What can people do via EIS?&lt;/p&gt;


&lt;h2 id=&quot;toc0&quot;&gt;EIS Incoming&lt;/h2&gt;
&lt;hr /&gt;
&lt;p&gt;EIS incoming mechanism, as the name implies, enables users to reference components of an Eiffel system in external tools. For the moment, only available on Windows. The whole thing implemented is protocol link of &amp;quot;eiffel&amp;quot;.&lt;/p&gt;

&lt;p&gt;For example, one can use the following links to refer to &lt;code class=&quot;geshifilter eiffel&quot;&gt;&lt;span style=&quot;color: #FF0000;&quot;&gt;&amp;#123;&lt;/span&gt;STRING_8&lt;span style=&quot;color: #FF0000;&quot;&gt;&amp;#125;&lt;/span&gt;.&lt;span style=&quot;color: #000060;&quot;&gt;is_equal&lt;/span&gt;&lt;/code&gt; in a system. &lt;ol&gt;
    &lt;li&gt; eiffel:?class=STRING_8&amp;amp;feature=is_equal&lt;/li&gt;
    &lt;li&gt; eiffel:?cluster=elks&amp;amp;class=STRING_8&amp;amp;feature=is_equal&lt;/li&gt;
    &lt;li&gt; eiffel:?target=base&amp;amp;cluster=elks&amp;amp;class=STRING_8&amp;amp;feature=is_equal&lt;/li&gt;
    &lt;li&gt; eiffel:?system=ec.D398E904-E3C8-4F8A-B9E7-6FE493CEA02F&amp;amp;target=base&amp;amp;cluster=elks&amp;amp;class=STRING_8&amp;amp;feature=is_equal&lt;/li&gt;
&lt;/ol&gt;

&lt;/p&gt;

&lt;p&gt;As you see, the later one turns out to be more precise. They all works if the project `ec&#039; with UUID D398E904-E3C8-4F8A-B9E7-6FE493CEA02F has been opened. Once you put this in a browser and enter, or click a link in MS word document, &lt;strong&gt;the opening EiffelStudio automatically locates &lt;code class=&quot;geshifilter eiffel&quot;&gt;&lt;span style=&quot;color: #FF0000;&quot;&gt;&amp;#123;&lt;/span&gt;STRING_8&lt;span style=&quot;color: #FF0000;&quot;&gt;&amp;#125;&lt;/span&gt;.&lt;span style=&quot;color: #000060;&quot;&gt;is_equal&lt;/span&gt;&lt;/code&gt; in an open editor&lt;/strong&gt;.&lt;br /&gt;
 &lt;strong&gt;What if no EiffelStudio has been opened? &lt;/strong&gt;&lt;br /&gt;
 For 1, 2 and 3, a new EiffelStudio will be launched, since no project(system) has been specified, users need to choose one by themselves. When the project is successfully loaded, &lt;code class=&quot;geshifilter eiffel&quot;&gt;&lt;span style=&quot;color: #FF0000;&quot;&gt;&amp;#123;&lt;/span&gt;STRING_8&lt;span style=&quot;color: #FF0000;&quot;&gt;&amp;#125;&lt;/span&gt;.&lt;span style=&quot;color: #000060;&quot;&gt;is_equal&lt;/span&gt;&lt;/code&gt; will be opened.&lt;br /&gt;
 For 4, EiffelStudio introduce a new preference &lt;strong&gt;eis_path&lt;/strong&gt;. EiffelStudio will search projects under the path, finally if project `ec&#039; is found, &lt;code class=&quot;geshifilter eiffel&quot;&gt;&lt;span style=&quot;color: #FF0000;&quot;&gt;&amp;#123;&lt;/span&gt;STRING_8&lt;span style=&quot;color: #FF0000;&quot;&gt;&amp;#125;&lt;/span&gt;.&lt;span style=&quot;color: #000060;&quot;&gt;is_equal&lt;/span&gt;&lt;/code&gt; will be opened.&lt;/p&gt;


&lt;h2 id=&quot;toc1&quot;&gt;EIS Outgoing&lt;/h2&gt;
&lt;hr /&gt;
&lt;p&gt;This part of EIS is used for annotating Eiffel classes, features or even target and clusters to include references to external information. The tool mentioned (Information tool) belongs to this part. &lt;br /&gt;
&lt;/p&gt;


&lt;h3 id=&quot;toc2&quot;&gt;Information tool&lt;/h3&gt;
 The basic function of the tool is to manage all annotations in current system. Users can add, modify, remove or navigate such annotations via the tool. All annotations are arranged either by location or tags being navigated through the tree. One can see that in the tool, choosing a class shows all annotations from the class and those from &amp;quot;inherited&amp;quot; clusters/targets.&lt;br /&gt;
&lt;p&gt;The following is what the tool looks like now:&lt;br /&gt;
 &lt;a href=&quot;http://www.eiffelroom.com/node/276&quot;&gt;&lt;img src=&quot;http://www.eiffelroom.com/files/images/Information tool-4.PNG&quot; alt=&quot;Information tool&quot; title=&quot;Information tool&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;


&lt;h3 id=&quot;toc3&quot;&gt;Annotation&lt;/h3&gt;
 Annotations if any either reside in actual code in the form of &lt;code class=&quot;geshifilter eiffel&quot;&gt;&lt;span style=&quot;color: #0600FF; font-weight: bold;&quot;&gt;note&lt;/span&gt;/&lt;span style=&quot;color: #0600FF; font-weight: bold;&quot;&gt;indexing&lt;/span&gt;&lt;/code&gt; or .ecf files in the form of &lt;strong&gt;note&lt;/strong&gt; elements. Those annotations put in code are used to denote class/feature specific information. Those put in .ecf are actually binded to the target/cluster. If one add a piece of annotation into a target or a cluster - underlying info has been added into .ecf - he simply makes the annotation visible to all classes in Information tool. This is useful especially when a library developer want to share library-wide information to clients. The following are the examples of the actual written annotations. &lt;br /&gt;
 &lt;ul&gt;
    &lt;li&gt; code:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;div class=&quot;geshifilter eiffel&quot; style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #0600FF; font-weight: bold;&quot;&gt;indexing&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; EIS: &lt;span style=&quot;color: #0080A0;&quot;&gt;&amp;quot;name=myDoc&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0080A0;&quot;&gt;&amp;quot;src=http://mysite.com/myDoc.pdf&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0080A0;&quot;&gt;&amp;quot;protocol=pdf&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0080A0;&quot;&gt;&amp;quot;nameddest=Chapter2&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0080A0;&quot;&gt;&amp;quot;tag=tagA, tagB&amp;quot;&lt;/span&gt;&lt;/div&gt; or &lt;div class=&quot;geshifilter eiffel&quot; style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #0600FF; font-weight: bold;&quot;&gt;note&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; EIS: &lt;span style=&quot;color: #0080A0;&quot;&gt;&amp;quot;name=myDoc&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0080A0;&quot;&gt;&amp;quot;src=http://mysite.com/myDoc.pdf&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0080A0;&quot;&gt;&amp;quot;protocol=pdf&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0080A0;&quot;&gt;&amp;quot;nameddest=Chapter2&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0080A0;&quot;&gt;&amp;quot;tag=tagA, tagB&amp;quot;&lt;/span&gt;&lt;/div&gt; &lt;ul&gt;
    &lt;li&gt; .ecf:&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;dl&gt;
        &lt;dd&gt;&amp;lt;note protocol=&amp;quot;pdf&amp;quot; name=&amp;quot;myDoc&amp;quot; src=&amp;quot;&lt;a href=&quot;http://mysite.com/myDoc.pdf&quot;&gt;http://mysite.com/myDoc.pdf&lt;/a&gt;&amp;quot; ise_support=&amp;quot;eis&amp;quot; tag=&amp;quot;tagA, tagB&amp;quot; nameddest=&amp;quot;Chapter2&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;/dd&gt;
&lt;/dl&gt;


&lt;h3 id=&quot;toc4&quot;&gt;Protocol&lt;/h3&gt;
 Everything in &lt;strong&gt;Source&lt;/strong&gt; is treated as an URL if no protocol is specified or unknown protocol is specified. Protocols supported now:&lt;br /&gt;
 &lt;ul&gt;
    &lt;li&gt; &lt;strong&gt;Raw URL&lt;/strong&gt;: Nothing more is interesting other than navigating to the URL&lt;/li&gt;
    &lt;li&gt; &lt;strong&gt;PDF&lt;/strong&gt;: PDF protocol supports three attributes now. &amp;quot;type&amp;quot; &amp;quot;page&amp;quot; and &amp;quot;nameddest&amp;quot;.&lt;ul&gt;
        &lt;li&gt; type: &amp;quot;file&amp;quot; is used to open PDF files in PDF reader. Otherwise in a browser.&lt;/li&gt;
        &lt;li&gt; page: Specify the page number to navigate to.&lt;/li&gt;
        &lt;li&gt; nameddest: Specify the named destination to navigate to.&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3 id=&quot;toc5&quot;&gt;Variable&lt;/h3&gt;
 In the value of &lt;strong&gt;Source&lt;/strong&gt;(Shown in Information tool) variables can be used.&lt;br /&gt;
 Types of variables , value is taken by priority from top to bottom if the same.&lt;ul&gt;
    &lt;li&gt; &lt;strong&gt;IDE user defined variables&lt;/strong&gt;. (Unavailable) These variables are applied over all projects. The main use is to override following types of variables.&lt;/li&gt;
    &lt;li&gt; &lt;strong&gt;IDE built in variables&lt;/strong&gt;. These variables are built-in and go with the release. Such variables are mostly used by ISE to share users helpful references related to ISE.&lt;br /&gt;
&lt;ul&gt;
        &lt;li&gt; ISE_WIKI = &lt;a href=&quot;http://dev.eiffel.com&quot;&gt;http://dev.eiffel.com&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt; EIFFELROOM = &lt;a href=&quot;http://www.eiffelroom.com&quot;&gt;http://www.eiffelroom.com&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt; &lt;strong&gt;Target variables&lt;/strong&gt;. This kind of variables go with the .ecf file. They are mostly used by a library releaser or people who are working on the same project can share information with each other.&lt;/li&gt;
    &lt;li&gt; &lt;strong&gt;Environment variables&lt;/strong&gt;.&lt;/li&gt;
    &lt;li&gt; &lt;strong&gt;Context related built in variables&lt;/strong&gt;. They are feature_name, class_name, group_name and target_name.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One can use &lt;strong&gt;F1&lt;/strong&gt; in the editor to see if current position of the class has any usable annotations.&lt;/p&gt;

</description>
 <comments>http://eiffelroom.com/blog/ted_eiffel/start_using_eiffel_information_system_eis#comments</comments>
 <category domain="http://eiffelroom.com/tag/documentation">documentation</category>
 <category domain="http://eiffelroom.com/tag/eis">EIS</category>
 <category domain="http://eiffelroom.com/tag/help">help</category>
 <category domain="http://eiffelroom.com/tag/information">information</category>
 <category domain="http://eiffelroom.com/tag/tool">tool</category>
 <pubDate>Thu, 17 Apr 2008 06:52:22 -0700</pubDate>
 <dc:creator>ted_eiffel</dc:creator>
 <guid isPermaLink="false">277 at http://eiffelroom.com</guid>
</item>
</channel>
</rss>
