*** empty log message ***
diff --git a/development/miscdocuments/ServerToolsUseCases.html b/development/miscdocuments/ServerToolsUseCases.html index 3e8fb49..4b81287 100644 --- a/development/miscdocuments/ServerToolsUseCases.html +++ b/development/miscdocuments/ServerToolsUseCases.html
@@ -20,7 +20,7 @@ </TD> - <font class="indexsub"> </font></td> +</td> <!-- <td width="19%" rowspan="2"><img src="images/Idea.jpg" height=86 width=120></td> --> @@ -55,10 +55,8 @@ use cases which can be used to define SPI's. </p> </td> </tr> -<tr> - - <td colspan="2" align="left" bgcolor="#0080c0" valign="top"><b><font color="#ffffff" face="Arial,Helvetica">Use Cases</font></b></td> - +<tr> + <td colspan="2" align="left" bgcolor="#0080c0" valign="top"><b><font color="#ffffff" face="Arial,Helvetica">End User Use Cases</font></b></td> </tr> <tr> <td> @@ -67,21 +65,18 @@ <tr> <th style="width: 108px">Name</th> <th style="width: 60px">Priority</th> - <th style="width: 78px">User</th> <th style="width: 360px">Description</th> </tr> <tr> - <td style="width: 108px">Install a Server</td> - <td style="width: 60px">2</td> - <td style="width: 78px">End-user</td> - <td style="width: 360px">From an update site, user can install a + <td>Install a Server</td> + <td>2</td> + <td>From an update site, user can install a server (using Eclipse standard update manager functions).</td> </tr> <tr> - <td style="width: 108px">Configure a Jakarta-tomcat</td> - <td style="width: 60px">1</td> - <td style="width: 78px">End-User</td> - <td style="width: 360px">Given a Jakarta-tomcat server (V5) installed + <td>Configure a Jakarta-tomcat</td> + <td>1</td> + <td>Given a Jakarta-tomcat server (V5) installed on local file system, user can "install" a server to WTP by selecting from a list of available server adapters, selecting the one for Jakarta-tomcat server, and specifying location of server's @@ -96,19 +91,22 @@ </table> </td> </tr> + <tr> - <td style="width: 108px">get list of server adapters</td> - <td style="width: 60px">1</td> - <td style="width: 78px">client programs (unit test)</td> - <td style="width: 360px">programmatically get list of known - Jakarta-tomcat servers adapters and their associated information - (name, version, whether installed or not, etc)</td> + <td>Export ANT build scripts for modules</td> + <td>1</td> + <td>User exports ANT build script that compiles and packages a module in for use outside the Eclipse, possibly for automated builds. </td> </tr> <tr> - <td style="width: 108px">run on J2EE server</td> - <td style="width: 60px">1</td> - <td style="width: 78px">End-user</td> - <td style="width: 360px">user can select a JSP and "run on + <td>Drag a module/artifact to a server to publish it</td> + <td>3</td> + <td>Users drags a module or a artifact in it into a server, which would mean the same action as "Run on Server" .</td> + </tr> + + <tr> + <td>run on J2EE server</td> + <td>1</td> + <td>user can select a JSP and "run on server", meaning it will be displayed in Eclipse web browser. <table border="1"> <tbody> @@ -139,57 +137,184 @@ </table> </td> </tr> - <TR> - <TD style="width: 108px">run on HTTP server</TD> - <TD style="width: 60px">1</TD> - <TD style="width: 78px">End-user</TD> - <TD style="width: 360px">User can select an HTML file, and "run on server". This use case can be performed with WST only. (This use case has not gotten a lot of discussion, but support for "static projects" is mentioned in WTP/WST vision statement, and is a good case to make sure the architecture and design is correct). </TD> - </TR> - <tr> - <td style="width: 108px">get list of installed servers</td> - <td style="width: 60px">1</td> - <td style="width: 78px">client programs (unit test)</td> - <td style="width: 360px">programmatically get list of installed + <TR> + <TD>run on HTTP server</TD> + <TD></TD> + <TD>User can select an HTML file, and "run on server". This use case can be performed with WST only. (This use case has not gotten a lot of discussion, but support for "static projects" is mentioned in WTP/WST vision statement, and is a good case to make sure the architecture and design is correct). </TD> + </TR> + + <tr> + <td>Adapt to existing project/module layout<i>(I am not sure, this is may be a use case for project layout)</i></td> + <td>1</td> + <td>User describes the current project layout even if it is not a known layout of any kind. </td> + </tr> + + <tr> + <td>Add runtime</td> + <td>1</td> + <td>Add a new server runtime environment that exists on the user's machine. (Pick runtime from list. Enter name, location. Enter runtime specific information.)</td> + </tr> + + <tr> + <td>Edit or remove runtime</td> + <td>1</td> + <td>Modify runtime attributes or remove.</td> + </tr> + + <tr> + <td>Target project</td> + <td>1</td> + <td>Target a project to a specific runtime. This is optional and a project may only be targetted to one runtime at a time. (Some project types do + not need a target, some projects do need a target)</td> + </tr> + + <tr> + <td>Add server</td> + <td>1</td> + <td>Add (install) a new server. Enter name & hostname, pick a server type from a list, and enter server specific information. (Some server types may only support local, not remote. Some local servers may require a runtime.)</td> + </tr> + + <tr> + <td>Edit or remove server</td> + <td>1</td> + <td>Modify server attributes or remove.</td> + </tr> + + <tr> + <td>Start/Stop/Restart</td> + <td>1</td> + <td>Each server type may support some/all/none of these state changes. Each server type has an initial state (may be unknown), and must keep the state in sync once it is loaded. + Some of the state changes (start/stop) are not available unless the server is in the correct state. Console/Debug view, etc. should be sync'ed up or used as it makes sense + for the server type. Starting may be done in the regular Eclipse launch modes, e.g. Run, Debug, Profile, ... depending on what the server supports. Launch Configurations are + created and used as applicable.</td> + </tr> + + <tr> + <td>Add project</td> + <td>1</td> + <td>Add a module to a server. User is presented with a list of modules that are available to be added to the server, as well as a list of modules from the workspace that are + already on the server. In some cases, the server may present additional modules in the second list that are not from the workspace/user. User can move modules around and + when they are done, the module is configured on (and possibly published to) the server.</td> + </tr> + + <tr> + <td>Remove project</td> + <td>1</td> + <td>Same as above</td> + </tr> + + <tr> + <td>Publish/Sync</td> + <td>1</td> + <td>One way publish of all modules to a particular server. Syncs the module content - could be a delta or a full refresh depending on the implementation.</td> + </tr> + + <tr> + <td>Restart module</td> + <td>1</td> + <td>Optional based on server type support. Restart/refresh/remove cache for a particular module on the server to allow the newly published content to be served.</td> + </tr> + + <tr> + <td>Change notification</td> + <td>1</td> + <td>User makes a change to a module (e.g. edit a file). User should be notified of the impact to any running servers and what they need to do to get the change + propogated to the server. (e.g. nothing, republish, restart module, restart server) </td> + </tr> + + <tr> + <td>Auto update</td> + <td>2</td> + <td>Automatically or via a single click, do the above use case to keep server in sync at all times.</td> + </tr> + + <tr> + <td>Run/Debug/Profile on Server</td> + <td>1</td> + <td>From any artifact (UI selection, editor input, etc.), determine which module it belongs to, prompt to choose or create a server if necessary, publish/sync the module on the server, and display an + appropriate client to access (run) that artifact on the server.</td> + </tr> + +<!-- <tr> + <td></td> + <td>1</td> + <td></td> + </tr>--> + + </tbody> +</table> +</td></tr> + +<tr> + <td colspan="2" align="left" bgcolor="#0080c0" valign="top"><b><font color="#ffffff" face="Arial,Helvetica">API Use Cases</font></b></td> + </tr> + + +<tr><td> + <table width="95%" border="1" cellpadding="1" cellspacing="1"> + <tbody> + <tr> + <th style="width: 108px">Name</th> + <th style="width: 60px">Priority</th> + <th style="width: 360px">Description</th> + </tr> + + <tr> + <td>Create module type(s)</td> + <td>1</td> + <td>Define a new type of module (interface and id) so that other SPI providers can provide instances of these module or servers that support them.</td> + </tr> + + <tr> + <td>Provide module factory</td> + <td>1</td> + <td>Define a new module factory for creating/discovering the modules of an existing type. (.modules file?)</td> + </tr> + + <tr> + <td>Define runtime type</td> + <td>1</td> + <td>Define a new runtime type, along with the module types that it supports. Define what it means to target a project to this runtime.</td> + </tr> + + <tr> + <td>Define server type</td> + <td>1</td> + <td>Define a new server type, along with the module types this it supports. Provide implementations for add/remove modules, publishing, start/stop, etc.</td> + </tr> + + <tr> + <td>get list of server adapters</td> + <td>1</td> + <td>programmatically get list of known + Jakarta-tomcat servers adapters and their associated information + (name, version, whether installed or not, etc)</td> + </tr> + <tr> + <td>get list of installed servers</td> + <td>1</td> + <td>programmatically get list of installed servers and their associated information (name, etc)</td> </tr> <tr> - <td style="width: 108px">import/export server configuration</td> - <td style="width: 60px">2</td> - <td style="width: 78px">client programs</td> - <td style="width: 360px">Can import or export server configuration + <td>import/export server configuration</td> + <td>2</td> + <td>Can import or export server configuration files, such as to give to another member of team. This file may best be in XML format.</td> </tr> <tr> - <td style="width: 108px">Server Providers can provide discoverable adapter</td> - <td style="width: 60px">1</td> - <td style="width: 78px">Service Providers</td> - <td style="width: 360px">The information needed to be listed as potential server adapter can be found completely in plugin.xml (not Java code, which would require activation of plugin). </td> + <td>Server Providers can provide discoverable adapter</td> + <td>1 - SPI</td> + <td>The information needed to be listed as potential server adapter can be found completely in plugin.xml (not Java code, which would require activation of plugin). </td> </tr> + <tr> - <td style="width: 108px">Export ANT build scripts for modules</td> - <td style="width: 60px">1</td> - <td style="width: 78px">End-User</td> - <td style="width: 360px">User exports ANT build script that compiles and packages a module in for use outside the Eclipse, possibly for automated builds. </td> + <td>Provide classloader behavior</td> + <td>1</td> + <td>A client, a jsp/ejb compiler for example, learns the classloader behavior to mimic the server runtime environment</td> </tr> - <tr> - <td style="width: 108px">Drag a module/artifact to a server to publish it</td> - <td style="width: 60px">3</td> - <td style="width: 78px">End-User</td> - <td style="width: 360px">Users drags a module or a artifact in it into a server, which would mean the same action as "Run on Server" .</td> - </tr> - <tr> - <td style="width: 108px">Provide classloader behavior</td> - <td style="width: 60px">1</td> - <td style="width: 78px">client programs</td> - <td style="width: 360px">A client, a jsp/ejb compiler for example, learns the classloader behavior to mimic the server runtime environment</td> - </tr> - <tr> - <td style="width: 108px">Adapt to existing project/module layout<i>(I am not sure, this is may be a use case for project layout)</i></td> - <td style="width: 60px">1</td> - <td style="width: 78px">End-User</td> - <td style="width: 360px">User describes the current project layout even if it is not a known layout of any kind. </td> - </tr> + </tbody> </table> </td>