This application claims the benefit of priority, under 35 U.S.C. §119(a), of Japanese Patent Application No. 2006-326338 filed on Dec. 1, 2006, and entitled “COMPUTER-ASSISTED APPLICATION PROGRAM CREATING SYSTEM, METHOD, AND PROGRAM PRODUCT,” which is incorporated by reference herein.
Embodiments of the inventive subject matter generally relate to the field of computers, and more particularly, to using a graphical user interface to create an application program.
At the outset of development, a machine language program describes a command to be directly interpreted by the CPU and directly addresses memory. However, it is impossible to visually identify operations written to such programs. Thus, it is difficult to correct bugs in a program or add a new function.
To overcome this drawback, an assembly language has been developed, which enables indirect addressing of a memory by use of a mnemonic that is easy for a user to understand, such as ADD. The program written in this way is translated into a machine language understandable by the CPU. However, even arithmetic logic for describing simple addition uses a register where the CPU references a value in that register, so a program could still have to be developed by a highly skilled programmer.
The emergence of a compiler language developed in the 1950s markedly improved this difficult situation. If this language is used, for example, the addition can be described using a general expression like A=B+C. Input/Output (I/O) processing can be described in an easy-to-understand form by use of a function such as WRITE. Such programming languages are called procedural languages, such as C, C++, and C#, and have been developed to incorporate various ideas.
When such procedural languages appeared, data to be displayed on a screen or printed were character strings like ABC or 1123. However, programming faced another challenge due to development of a graphic user interface (GUI) equipped with a pointing device such as a mouse or a multi-window system in the 1980s. It is now necessary to program the GUI to designate position coordinates where GUI components such as a button, a radio button, a component box, and a text box are displayed on a window. Additionally, GUI programming designates font and color of characters to be displayed, designs pull-down menus, and responds to events in real time, such as a mouse-click on GUI components or switchovers between active windows and inactive windows. In the early stages of GUI programming, these components were described in source code and thus, it was difficult to adapt to new concepts for built-in resources, event-driven programs, and the like. A programmer skilled in the procedural programming language of C or C++ would even have difficulty in mastering it.
To overcome such a problem, program development tools that enable descriptions of predetermined portions of a program through GUI operations, such as mouse-clicking or dragging, have been developed. Examples of these tools include Microsoft Visual Basic®, Visual C++®, Borland Delphi™, C++ Builder™, and IBM VisualAge of Java™. These program development tools can be used to appropriately arrange the GUI components by dragging and dropping the components from a region where sample icons of the GUI components are arranged to a desired position. Furthermore, two GUI components can be associated by appropriately operating a mouse.
The aforementioned development tools make it possible to arrange and associate the GUI components. However, a programmer needs to describe a code or application programming interface (API) function for actual processing on the basis of programming language rules, such as C++, BASIC, or Java. This is difficult for a beginner unaccustomed to computer operations.
In recent years, a concept of communications between applications, called service oriented architecture (SOA) or web service, has been proposed. According to SOA, a GUI based development tool includes a GUI component capable of designating a uniform resource locator (URL) is provided. If access to a specific URL is made by use of a function of the GUI component, a web site designated by the URL sends back information described in Extensible Markup Language (XML), for example. The development tool further prepares a display GUI component for displaying the information described in XML in tree form. Hence, the GUI component accessing the URL and the display GUI component are pasted to a predetermined region of an application program to thereby realize a web application capable of automatically displaying the information sent back from the specific web site.
In the above web application, it is conceivable that an inquiry is directed to a first web service, plural responses are sent back, and the sent data is computed, after which an inquiry is sent to a second web service on the basis of the computation result. For example, if a zip code is sent to a first web service, the first web service sends back a state name and a city name independently. On the other hand, if receiving a character string that combines the state name and the city name, the second web service sends back the longitude and latitude thereof. As is apparent from the above, a program deriving a state name and city name from an entered zip code can be obtained by pasting the GUI components, and an appropriate inquiry cannot be sent to the second web service. To obtain a program capable of sending an appropriate inquiry to the second web service, a character string of the state name and a character string of the city name are combined, and a procedure of supplying the combined data to a GUI component that sends an inquiry to the second web service will be described in a program code. However, describing such a code is much more complicated than one might think because it is necessary to authenticate an ID of the GUI component, describe an operator for combining the character strings, and describe a code for associating the computation result with a GUI component that sends an inquiry to the second web service. This operation is much more complicated than one might think, requires experience, and is very difficult for a beginner.
A computer-assisted application program creating system comprises a web service display unit, a service model display unit, an application editing unit, and a data hub. The web service display unit is configured to display a list of indicators of web services. The service model display unit is configured to display input, trigger, and output elements of a web service represented by an indicator in the list of indicators of web services. The application editing unit is configured to associate input, output and trigger elements of different web services represented by indicators in the list of indicators of web services. The data hub is configured to display output of a first output element that corresponds to a first of the different web services and configured to apply a function to the output.
The present embodiments may be better understood, and numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
The description that follows includes exemplary systems, methods, techniques, instruction sequences and computer program products that embody techniques of the described embodiments. However, it is understood that the described embodiments may be practiced without these specific details. For instance, although examples refer to modules written in JavaScript, embodiments can be accomplished in other programming languages. In addition, the description refers to the Ethernet protocol, but other communications protocols can be used with various embodiments. In other instances, well-known instruction instances, protocols, structures and techniques have not been shown in detail in order not to obfuscate the description.
The client computer 100 includes a hard disk 104, and a communication interface 106 conforming to the Ethernet protocol. The hard disk 104 stores various programs used in embodiments, such as an operating system or a Web browser 102. The Web browser 102 may be any Web browser that can execute JavaScript; for example, Microsoft Internet Explorer®, Mozilla Foundation FireFox®, Apple Computer Safari®. In addition, any operating system can be used that support a TCP/IP communication function as a standard feature and can execute the Web browser 102. Examples of operating systems include Linux®, Microsoft Windows XP®, Windows® 2000, and Apple Computer Mac OS®, and the like can be used, but the operating system is not limited to these.
The server computer 200 includes a hard disk 204 and a communication interface 206 conforming to an Ethernet protocol. The hard disk 204 stores various programs used in embodiments, such as an operating system, a web browser, and a Web application server 202. The Web application server 202 is a program that can store a Hypertext Markup Language (HTML) document or image and transmit information about the HTML document or image through a network, such as the World Wide Web, in response to a request from a client application, such as a Web browser. The Web application server 202 can implement various server applications (e.g., Apache TomCat, Microsoft Internet Information Server, etc.). For an operating system on the server computer 200, any operating system that supports transmission control protocol/internet protocol (TCP/IP) can be used. Examples of operating systems include Linux®, Microsoft Windows XP®, Windows® 2000, and Apple Computer Mac OS®.
In
The communication interface 106 is based on the Ethernet protocol and functions to physically connect the client computer 100 to the communication line 300. The communication interface 106 provides a network interface layer conforming to a TCP/IP communication protocol of a communication function of the operating system of the client computer 100. Incidentally, illustrated components are wired but may be connected through a wireless local area network (LAN) conforming to the wireless LAN connection standards, for example, IEE802.11a/b/g.
Further, the communication interface 106 may conform to an arbitrary protocol such as a token ring in place of the Ethernet protocol. The present embodiments are not limited to a particular physical communication protocol.
The server computer 200 includes a CPU 208 and a main memory 210, which is connected to a bus 209. Similar to the client computer 100, CPU 208 is based on 32-bit or 64-bit architecture. For example, Intel Pentium® 4, Xeon®, and AMD Athlon® processors can be used. The bus 209 is connected to a display 214 such as an LCD monitor through a display controller 212. The display 214 is used to create GUI components connected to the Internet, to write a program in JavaScript and register the program such that the client program 100 can call the registered program, or to register a user ID and password of a user accessing the program through the client program 100 with a system administrator.
The bus 209 is connected to the hard disk 204 and a CD-ROM drive 218 through an IDE controller 216. The hard disk 204 stores an operating system, the web browser 102, and other computer programs, which can be loaded into the main memory 210. The CD-ROM drive 218 can download a program from a CD-ROM to the hard disk 204 as needed. The bus 209 is connected to a keyboard 222 and a mouse 224 through a keyboard mouse controller 220. The keyboard 222 is used to input a URL or other characters on a screen. The mouse 222 is used to create GUI components.
The communication interface 206 conforms to the Ethernet protocol, and functions to physically connect the server computer 200 to the communication line 300. The communication interface 206 provides a network interface layer with respect to a TCP/IP communication protocol implemented in the operating system on the server computer 200. Illustrated components are wired but may be connected through a wireless LAN based on the wireless LAN connection standards, for example, IEE802.11a/b/g.
Further, the communication interface 206 may conform to an arbitrary protocol such as a token ring in place of the Ethernet protocol. The present embodiments are not limited to a particular physical communication protocol.
The hard disk 204 of the server computer 200 also stores a program that provides a development environment in addition to the above operating system and the Web application server 202. The development environment can be obtained by various methods. For example, the development environment can be obtained by combining a module provided by the Dojo Toolkitas a library of JavaScript, and a module written in a JavaScript language in accordance with embodiments described herein. The website http://dojotoolkit.org/ provides some examples and provides additional information. The hard disk 204 of the server computer 200 stores the development environment to allow the client computer 100, when logging on to the server computer 200, to download the development environment with the function of the Web application server 202.
Incidentally, embodiments are not limited to a module written in JavaScript. An embodiment can be accomplished by use of Jscript or VBSCript, known examples of browser assembly languages. Furthermore, it is possible to adopt a configuration that executes a Java program installed in HTML and sends back the execution result to a Web browser.
Additionally,
Furthermore, in
Further,
The hard disk 204 records a service call definition 262 and an application definition 264 in a callable manner. The service call definition 262 stores plural service model elements (i.e., often implementing widgets) which access individual Web sites prepared by a predetermined system administrator.
According to some embodiments, an authentication/authorization unit 266 uses, for example, a user ID and password of a user of the client computer 100, which are prepared by a system administrator. These pieces of information are stored, for example, in the hard disk 204. If a user of the client computer 100 logs in the server computer 200, the user is required to enter the user ID and corresponding password. The application executing unit 252 interprets and executes a command sent from the web browser 102. The service calling unit 254 defines a URL or parameter. The application executing unit 252 can directly access a web site service 602 by use of the URL or parameter in the service calling unit 254. For example, the URL specified herein refers to http://www.xyz.com/Service/CGI/purchase.cgi. The parameter refers to cost or goods in http://www.xyz.com/Service/CGI/purchase.cgi?&cost=parm1&goods=parm2. The service call management unit 256 calls an application program owned by the client computer 100 from the application definition 264 in response to a request from the web browser 102, and can edit/execute/delete the program. At this time, information about the owner of the application program can be derived from a user ID of the user that logs in the computer.
The client module 260 in the web application server 202 is generally stored in the hard disk 204, and downloaded to the client computer 100 in response to a request from the Web browser 102. In this embodiment, a typical format of the client module 260 is a JavaScript file represented by the extension js. That is, as a description method of JavaScript, there is a direct writing method, for example,
and a description method that designates and calls a file name of JavaScript like <script src=“abc.js”type=“text/javascript”></script>
The application list 150 displays Applications 1 to 4 owned by the user, an “Execute” button 152, an “Edit” button 154, and “Delete” button 156, which are arranged on the right side. In response to a click with the mouse 124 (
The Trigger element of the service model display unit 162 is pasted to the application editing unit 164 and activated so that a program executes and permits access to a URL designated by the service. The input element of a service displayed on the service model display unit 162 is a parameter supplied at the time of accessing a URL. For example, if an access code is http://www.CitySearch.com/Search/CGI?&zipcode=2428502&coutry=Japan, the zip code is a parameter input element (hereinafter simply referred to as parameter), and 98231 is details thereof. Plural parameters are conceivable like http://www.CitySearch.com/Search/CGI?&zipcode=2428502&coutry=Japan. Thus, the web service does not always include input parameters or elements. A web service having no input element is conceivable. For example, a parameter is unnecessary for a web service that simply sends back data on current Greenwich time.
Alternatively, data transmitted in response to access to a web site can be in various formats, such as HTML, XML, or JSON (JavaScript Object Notation) as a relatively small data exchange format. This allows data sent back in response to access to a web site to be structured data. Thus, as a unit can be dragged and dropped as the output unit of the service model display unit 162, various formats, such as all or a part of the sent XML list, are conceivable.
An asynchronous communication with a service is used to access a web site or web service in an embodiment. This communication is called XMLHttpRequest that is preferably based on Asynchronous JavaScript and XML (Ajax). On the basis of the technique, screen rewriting can be accelerated and a data communication amount can be reduced. Here, a command of a general HTTP protocol may be used.
The data hub 170, as a data associating region, includes an interface similar to a spreadsheet (also called spreadsheet program), and is divided into sections arranged in matrix format. These sections are referred to as cells and labeled A1, A2, and B1 in accordance with the spreadsheet program. Values are input into each cell or a GUI component pasted to the application editing unit 164 can be dragged and dropped to each cell. Alternatively, a calculation expression in the spreadsheet form like=A1+B1, or =A1&“,”&B1 can be input to each cell. The expression's allowance depends on programming code based on JavaScript or the like. In contrast, each cell can be dragged and dropped to a GUI component pasted to the application editing unit 164 and an input element of a service displayed in the service model display unit 162. Thus, the data hub 170 can utilize the function of JavaScript to provide the above drag-and-drop function and various calculation functions between cells in an embodiment.
As described above, an element output list described in XML may be pasted to the data hub 170 as an output element of a Web service. In this case, if the output element list is dragged and dropped to the data hub 170, as many cells as the number of elements in the list occupy the hub. In this way, it is necessary to compile data on plural cells dragged and dropped from the list. Thus, in this embodiment, statistical functions such as a cumulative function like=SUM(A1 . . . E1), an average function like=AVERAGE(A1 . . . E1), a standard deviation function like=STDEVA(A1 . . . E1), the maximum function like=MAX(A1 . . . E1), and the minimum function like=MIN(A1 . . . E1) are prepared. The JavaScript-based installation with the formula translation is well established as a programming technique and its description is omitted here.
In some embodiments, the drag-and-drop operation is carried out with the Dojo library tool kit as indicated by the following code.
Drag source side: var ds=new dojo.dnd.HtmlDragSource(domNode, dragSourceName);
Drop target side: var dt=new dojo.dnd.HtmlDropTarget(domNode, dropTargetName). Furthermore, information bound through drag-and-drop operations is saved in a declarative format (e.g., XML). A notation example thereof is given below and instructs sourcewidget (a GUI component of a drag-and-drop source) named InputText—0 to be associated with targetwidget (a GUI component of a drag-and-drop target) named Action—0.
Those skilled in the art understand that the application and notation of such a tool kit are given by way of example, and various equivalent techniques can be used. For example, an operating system such as Windows® 2000 and Windows XP® prepare some Application Programming interface (API) functions for drag-and-drop operations such as DragQueryPoint, making it is possible to call an appropriate function and perform processing.
Further, the cell where a user inputs a numerical expression in the data hub 170 is dragged and dropped to an input element and trigger element of a service model displayed in the service model display unit 162 and associated therewith. However, a function of the client development environment of
A result of computing <output1> and <output2> of the service 1 is sent to input1 of the service 2. In response to the computing result, <output1> and <output2> of the service 2 are directly sent to input1 and input2 of the service 3, and a result of computing <output1> and <output2> of the service 2 is sent to input2 of the service 4. Additionally, a result of computing <output1> and <output2> of the service 1 is sent to input1 of the service 4. Hence, <output1> and <output2> of the service 1 are dragged and dropped to cells A1 and B1 of the data hub 170. A predetermined numerical expression of the cells A1 and B1 is written to a cell C1. The cell C1 is then dragged and dropped to input1 of service 2. Subsequently, <output1> and <output2> of the service 2 are respectively dragged and dropped to cells C2 and D2 of the data hub 170. A predetermined numerical expression of the cells C2 and D2 is written to a cell E2. Then, <output1> and <output2> of the service 2 are directly dragged and dropped to input1 and input2 of the service 3, but not through the data hub 170. Further, the cell C1 of the data hub 170 is dragged and dropped to input1 of the service 4. The cell E2 of the data hub 170 is dragged and dropped to input2 of the service 4. Such a complicated scenario is not practical, but an extreme case is taken to explain an advantage of visual programming with a data hub of an embodiment. If an interface such as the data hub 170 is omitted, a code should be written to realize a program of equivalent functions. In an embodiment, the program of equivalent functions can be realized with skills in using a spreadsheet.
Further, input1 of the service 1 is a field to which information is input with a keyboard or the like. As illustrated in
The client computer 106 of
Additionally, registered services are listed on the registration service list display unit 180 based on the service call definition 204 read from the server service call management unit 256 of the web application server 202. In practice, a name of the registered service (for example, CitySearch of
In an input parameter definition unit 194, an input parameter name and name and attributes of output data are registered for each of the registered services in the input parameter definition unit 194. For example, if the name is CitySearch, the input parameter name is zip code, and the name and attribute of output data are <City> and <State>, and a text, respectively.
If a system administrator designates a URL, inputs an appropriate parameter, and clicks an “Execute” button 195, the service on website 602 is accessed through the service calling unit 203 of the web application server 202. The execution result is subsequently displayed on the output display unit 196. HTML, XML, and JASON are possible attributes of output data aside from the text in accordance with properties of the web service. The output XML data is a structured document, so the whole data can be listed or data in a specific tag can be retrieved. Accordingly, a system administrator, which creates a widget of a service, appropriately prepares a view for listing the entire output XML data or a view for displaying data in the specific tag. The created view is read from the input parameter definition unit 194 and displayed in the service model displaying unit 162 as indicated by <City> and <State> in
If satisfied with the displayed result after clicking the “Execute” button 195, a system administrator clicks the “Save” button 197. Based on the used parameter and information of the output view, the definition of the parameter is stored in the input parameter definition unit 194 in association with the service.
When a system administrator clicks the “New Document” button 198, a screen with a blank URL field and a blank parameter field (not shown) appears. Subsequently, the system administrator inputs an appropriate URL or various parameters, and clicks the “Execute” button 195. If pleased with the result, the system administrator clicks the “Save” button 197. A new URL and name are then stored in the service call definition unit 190, and parameters associated therewith are stored in the input parameter definition unit 194. This results in the creating and storing of a new service call definition 204.
Following authentication, the menu of the application management environment of
At block 1206, a user can drag-and-drop an intended service model (simply referred to as “service”) to the service model display unit 162 by utilizing a mouse. Next, elements of the selected service are displayed on the service model displaying unit 162 with the structure defined in the input parameter definition unit 194, as shown in
At block 1208, a user can drag-and-drop “Input” and “Trigger” to the application editing unit 164. At block 1210, the user drags and drops “Output” intended as “Input” of another service model to an arbitrary cell of the data hub 170.
At block 1212, the service list display unit 168 supplies an output reference of the service model as the drag-and-drop source in response to the drag-and-drop operation. On the other hand, on the data hub 170 side, a bind of source data to a cell as a drag-and-drop target is created in the application definition memory (although not shown, allocated to the main memory 110 of
At block 1214, the user drags and drops the next user model to the service model display unit 162. Then, the structure of the dragged and dropped service model such as input and output is displayed on the service model display unit 162 due to the same function as that in block 1206.
At block 1216, a user drags and drops the cell having the expression input therein on the data hub 170 side to input and trigger displayed on the service model display unit 162 to thereby bind these. Then, the service model display unit 162 supplies a reference to input and trigger where the cell is dragged and dropped. On the other hand, the data hub 170 creates bind between input reference and cell reference and bind between trigger reference and cell reference in the application definition memory.
At block 1218, output of the service model display unit 162 is dragged and dropped to the application editing unit 164 (see
At block 1220, although not shown in
In the case of calling and executing the saved application, a user logs in the application and selects a menu for displaying an application management environment. A corresponding application management module is then downloaded to the client computer 100 through the operation of the web server application program 202. Finally, a screen similar to that of
Here, a user selects a predetermined application and clicks a corresponding “Execute” button 162 and then a module for executing an application is downloaded to the client computer 100 through the operation of the web server application program 202 and executed. This operation is described above with reference to
In
After the user logs in the menu, a predetermined module 260 is downloaded to the client computer 100 from the web application server 202, and a menu of
In the case of creating a new document, a user clicks a button 199 (see
In the case of editing an existing document, a user clicks an “Edit” button 189 of a corresponding entry (see
At block 1310, a user selects the button 197 to attempt to log in a target website. This operation is executed in such a way that the service call definition unit 190 makes an HTTP request to access the service on website 602 through the service calling unit 203. In particular, the made HTTP request is GET in some embodiments, and the service call definition unit 190 can directly send the request to the service on website 602.
In this way, the service call definition unit 190 receives the result from the service 602 of a web site and displays the result on the output display unit 196. If satisfied with the result, a user clicks the “Save” button 198 (see
Next, application development operations of some embodiments are explained with concrete descriptions. It is assumed that to create such an application, a user enters (1) zip code to a web site named CitySearch to acquire data about a city and data about a state, (2) and accesses a web site named MapCode by combining the data about the city and the data about the state to obtain (3) the latitude and longitude of the city. Incidentally, CitySearch sends back data about a city and data about a state independently, but MapCode requires a combined one of the data about the city and the data about the state.
Incidentally, instead of directly dragging and dropping the cell C1 to “Input1” of MapCode displayed in the service display unit 168, “Input1” of MapCode may be temporarily dragged and dropped to the application editing unit 164. The cell C1 may then be dragged and dropped to the drag-and-drop target in the application editing unit 164. This situation is not different from the above situation in that a value of the cell C1 is supplied to “Input1” of MapCode. This setting helps a user in visually observing the value supplied to “Input1” of MapCode as an intermediate step on the screen when an application is later executed.
In the GUI component pallet region 2604, existing GUI components, such as a text input region, a label, a memo, and a combo box, are arranged in a form such that the components can be dragged and dropped. The GUI component pallet region 2604 is preferably classified by kind with a tab, such as Tab1, Tab2, Tab3, Tab4, and Tab 5. A user selects a tab including a GUI component to paste. Furthermore, a property editing unit 2606 for editing other attributes, such as a color and font, of the GUI component that are pasted to the form is presented. These components are provided by an existing application development tool, but a novel function in some embodiments is a function of the data hub 2606 that looks like a spreadsheet. This function is substantially equivalent to that of the data hub 170 of
Regions in the same or different forms are associated through the data hub. The relationship between fields can be automatically described in one source code in the same project. Furthermore, an event of a change in value on an association source side may be trapped and automatically reflected to an association target within the limitation of existing techniques.
If the visual tool relates to BASIC, C++, C#, and Java, it is likely that a user needs to describe a code. However, a concept of a data hub would facilitate association between different regions and improve efficiency in creating a code.
Embodiments are not limited to a particular method and system, but also encompass a program stored in a computer readable medium, such as CD-ROM, DVD-R, or HDD, or a program downloadable from a web site. Some embodiments construct the above system in corporation with a computer hardware component.
Furthermore, this embodiment is described based on a computer language such as JavaScript, BASIC, C++, C#, or Java. Embodiments are not limited to a particular computer language and environment. If the above GUI environment is obtained, any system or method, or any computer program for realizing the system or method, is within the scope of an embodiment.
In the above embodiment, the data hub region is designed to look like a spreadsheet and include an interface. Such a display form is not essential to an embodiment. The data hub region may include any other display interfaces provided that plural fields that can be dragged and dropped and plural fields that can store a calculated value based on a function stored in the fields are provided.
The described embodiments may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic device(s)) to perform a process according to embodiments, whether presently described or not, since every conceivable variation is not enumerated herein. A machine readable medium includes any mechanism for storing or transmitting information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). The machine-readable medium may include, but is not limited to, magnetic storage medium (e.g., floppy diskette); optical storage medium (e.g., CD-ROM); magneto-optical storage medium; read only memory (ROM); random access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; or other types of medium suitable for storing electronic instructions. In addition, embodiments may be embodied in an electrical, optical, acoustical or other form of propagated signal (e.g., carrier waves, infrared signals, digital signals, etc.), or wireline, wireless, or other communications medium.
Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the embodiment(s). In general, structures and functionality presented as separate components in the exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may fall within the scope of the embodiment(s).
Number | Date | Country | Kind |
---|---|---|---|
2006-326338 | Dec 2006 | JP | national |