--
PedroRio - 16 Dec 2010
Object Modelling - XEO Library
In this chapter you'll learn how to create the
XEO Library entities as XEO Models. We'll begin by modeling the simplest entity of the application: The
Book Author.
Modeling an entity to an Object Model - The author
Before that, however, you want to group all XEO Object Models in the same XEO Package, for that you'll use the
XEO Package Wizard in XEO Studio. Go to the "File" menu, choose "New" and select "XEO Package". A new window will open to allow you to choose the package name (follow the XEO convention and name it LIB$1.0) and give it a small description such as "XEO Library Object Models", leaving the Parent Package field blank (you won't use subpackages in the Library project), see figure OM.1 for details.
Figure OM.1 - XEO Package Creation Wizard
Next you need to use the new XEO Model wizard to create the new XEO Model. Go to the "File" menu, select "New" and choose "XEO Object Model". In the "XEO Package" field choose the "Lib$1.0" package just created and in the "Name" field type "LIB_Author" (in this project, all XEO Models will be prefixed with "LIB_"), enter a description of the XEO Model and leave all other fields with their default values (see figure OM.2).
Figure OM.2 - XEO Object Model Wizard
Open the XEO Model, this will open the Object Model Editor, which has three different views: Edit, Design and Source. Edit is the graphical editor for the XML Language, Design is Eclipse's XML editor, and Source is the XML source code. The Object Model Editor (in design mode) is depicted in figure OM.3. It's designed as a master-detail interface. The left panel has all the main properties of an Object Model (Model properties, Attributes, Events, OPL, Methods) while the right panel (Detail Area) displays the properties of the given element chosen from the left panel.
Figure OM.3 - XEO Object Model Editor, for the Author Model
Creating an Attribute
With the
LIB_Author Object Model open, add an attribute. Back in the
XEO Library introduction, the author entity was defined as only having one attribute (its name). The name will be a textual value, thus, you need to add a "Text" attribute to LIB_Author. Click the "Plus" green button in the Attributes section of the left panel of the editor and from the list choose "Text". This will add the attribute to the list and open the detail panel with the newly created attribute.
In the "name" field, write "name" and for the label type "Name" (Or "Author Name") this is the label that'll be used in edit viewers for form fields. You can write a description (documentation) of the attribute and set the length with a maximum of 80 characters (see figure OM.3a). The "name" field is the name which we'll use when dealing with the Java API when interacting with this particular attribute (it's also the name that will be used to create the column in the database table corresponding to this XEO Model).
Figure OM.3a - Editing attribute name
As soon as you save the model, the XEO Builder will execute to create the required structures for your Object Model.
Before diving into the rest of the XEO Models, you can see you how fast you can start your applications, in the next section called XEO in Action!
XEO in Action - A quick overview!
With what you have so far, you can create a Main viewer to your application that'll allow you to list every author in the application as well as create/edit new ones. First you must create the Main viewer, by going to the "File" menu, press "New" and choose "XEO Web Viewer"; from the list that appears choose "Main Viewer" and press "Next". In the next window type "Main" in the
Name field, leave the "Create new Profile" box
checked and type "Library" as the profile name and "Library Profile" as the description (see the procedure depicted in figure OM.4, bellow). This will create your Main viewer and create a XEO Profile (which will be used later for other purposes).
Figure OM.4 - Create new Main Viewer and Profile
With this step you now have a Main Viewer, only requiring a List and Edit Viewer to be able to list author instances and create new ones (as well as edit existing ones). You'll learn more about how to create List/Edit Viewers later in the documentation, for now you'll use a useful feature in XEO Studio to create a prototype list/edit/lookup viewer, based on the LIB_Author XEO Model. This feature is called XEO Scaffolding and it will basically analyze XEO Models and create viewers accordingly; XEO Scaffolding is a way to speed up development by quickly generating viewers based on the XEO Model's metadata (you can choose to override/merge new attributes in existing ones). In order for you to see a menu with the "Authors" you need to check the option "Add to Main Viewer" and select the Main Viewer you just created (Main.xvw): %TODO% - Update the Scaffolding image.
Figure OM.4a - Scaffolding XEO Viewers for the LIB_Author Object Model.
Go back to the web browser (if you're still logged in, terminate session by pressing the Logout button in the lower left corner of the main viewer)
and again go to the Login.xvw page, enter SYSUSER/ABC and confirm. Notice that you'll not be taken to the "Main_admin.xvw" page immediately but a combo box will appear (depicted in figure OM.4b), allowing you to choose your profile (more in this later, but remember that while generating the Main_Library viewer you checked the "Create new Profile" option). Choose the "Library Profile" and confirm again, in this way you'll be taken to the Main.xvw viewer, in which you'll see few entries one of them being the "Author" entry (last element of the tree) as depicted in figure OM.4c. If you click on the "Author" entry a new tab will open with the (empty) list of Authors in your application (this uses the List viewer created through scaffolding earlier). A "New" button also exists to allow creating a new instance of an author (using the Edit viewer created through the scaffolding as well).
Figure OM.4b - Profiles in Login Page
Figure OM.4c - Main viewer with author entry in main viewer and author list viewer open
Press the "New" button and a new tab will open. This tab will have the fields to edit (in this case, create a new one) an instance of an author and has a toolbar to deal with common operations with a specific instance (save, save and close the tab, delete the current instance, validate the fields and check properties). You'll notice that in tab titles there are some broken image links and the new author tab has a number of the title (figure OM.4d); those values can be changed and the images can be set so that a nice icon appears in the tab title (we'll see that later in the documentation).
Figure OM.4d - Edit Viewer for the Author
If you write a name, for example "John Doe" and press the "Save and Close" button (The button with the small floppy drive with a with cross in red background icon, second from the left) you will have created your very first XEO Model instance. In the List viewer the changes are not reflected automatically, but if you press the little refresh button (see red circle in figure OM.4e) the data is refreshed and the author is displayed (figure OM.4e).
Figure OM.4e - List Viewer After Data Reload
Before going back to modeling other entities, you'll see how to add custom behavior to a Model.
XEO in Action! - Simple Behavior customization
Just to show you some of things XEO can do to help you create your application, you'll now make the name of the Author a required field (i.e. you cannot save an author if you don't fill its name. It would not make sense in the Library application anyway, because an Author only has one attribute which is its name).
Open the LIB_Author Object Model in XEO Studio and select the "name" attribute. Go to the "Required" section and from the drop down menu choose "BOL" (
Business Object Language) and in the text field that appears, write "true" (see figure OM.4f for details) and save the Object Model. XEO Studio will invoke the builder to process these changes.
Figure OM.4f - Adding a requirement condition to the name attribute of Author
If you now return the Author List Viewer and press the "New" Button, the result will be like the one depicted in figure OM.4g. Since the field is required it should not be possible to save this instance and if you press the "Save" Button, you'll be presented with the screen depicted in figure OM.4h. This section was just to show how easy it is to build these applications using XEO, more to come in the following sections.
Figure OM.4g - Author Edit Viewer with Name attribute required
Figure OM.4h - Error message when saving Author without name
XEO Library - Modeling the Entities:
With the Author created, you can
create the remaining XEO Models of the application.