Monday, September 27, 2010

VFP Developers’ Conference

GeneXus USA and one of our customer's, will be attending and exhibiting at the VFP Developers’ Conference held in Phoenix, Arizona - October 14-17, 2010.

GeneXus Sessions
http://www.swfox.net/exhibitorsessions.aspx

Schedule Overivew
http://www.swfox.net/schedule.aspx.

Wednesday, May 26, 2010

XPM iPhone version released!!

We are happy to announce that XPM has been released in the Apple Store, you can download it by searching “XPM”.

The features that are included in this first version are the following:

• Filter Work Items by Project and Version
• Filter Work Items by Status and Assignee
• Create a new Work Item
• View Work Item details (Description, Reported Date, Updated Date , Assignee, etc.)
• View Work Item Tracking
• Search Work Item by description or Id
• Create a new tracking for a Work Item
• Change priority to a Work Item
• Approve/Reject a Work Item

Learn how to use it here:

iPhone User Manual

We appreciate any feedback, review or comments that can help us provide more functionality for the upcoming versions.

Thanks,
XPM Team

Tuesday, May 18, 2010

Need some GeneXus X training?

GeneXus USA has scheduled a remote instructor-led training for the week of June 14-18 & June 21-25 June. The training will be from Monday – Friday 8:30-12:30 in a virtual classroom Webx setting. This is a great opportunity to get trained in the latest version of GeneXus, and be trained from the comfort of your office :), vs. traveling to Chicago (even though Chicago is the greatest city to live....) Contact us today about this special offer at gxinfo@genexus.com.

Friday, April 23, 2010

XPM Beta Released!!

We are pleased to announce that we have started the beta process with customers that signed up at http://www.xpm4gx.com/

This Beta release represents a big milestone towards the launch of XPM in the Azure Cloud (soon to be released) and we would like to thank our beta testers for helping us on growing XPM!

This Beta version also comes with two free features:

XPM Add-Ins:

•GeneXus IDE: If you are a developer, you will love this Add-In since it allows you to work on all the Work Items assigned to you without having to login to the XPM site!

•Microsoft Word: This Add-In is mainly focused on Business Analysts who like to write specs in Word and then associate them to Work Items in XPM.

•Microsoft Project: Not available yet but coming soon!!

iPhone Client

•We are in the process of the final testing and it will be in the Apple Store very soon. In this first version you will be able to see the Work Item list and perform many of the features provided in the XPM site.

To learn more about XPM and XPM Add-Ins please visit us at:

http://tools.genexususa.com/gxwiki/hwiki.aspx?Wiki+Home

Thanks,
XPM Team

Tuesday, March 23, 2010

The Core

(This post is an answer to several questions that we received about the Core - in this blog, in the GxNews or by email - after Anya's post about The Core)

First of all, let me say that we are excited about all of the interest that the Core generated. It was always our intention to share part of the Core, because we think it is something that can help customers to get started working with GeneXus projects, which strengthens our community. With the Basic Core and the WorkWith Pattern it is easy to get started in a real application quickly and we think this is a good way to get more people involved/excited about how easy it is to build applications with GeneXus.

With that said, we have two problems that somehow have prevented us from releasing this to the community:

1) The basic Core is not a "product". There are some things that are done today in a "quick & dirty" way - i.e. all the initialization of pages -. We intend to do in a better way, but the time did not present itself yet. There are some functionalities that should be there if this was to be considered as a product (i.e. a user interface to define rights for the different roles over the pages/menus) -, but they are not there because we didn’t need them yet, so they were not implemented yet. The Basic-Core is not “complete”.

2) The Basic Core is a subset of our Core. Our Core has additional modules - that we considered more specialized and that somehow capture some of our practices on how to handle certain functionality - but they are not as widespread as it can be security and navigation. For example we are working in adding a notification module that defines events, alerts and notifications and allows users to subscribe to notifications, etc. All our applications use some type of notifications and we thought this was a good addition to our Core. We also have in our Core error-codes (in order to allow end-users to customize the error messages that the system displays, and allow them to write up the solution of the error which works as a user-guide on line). Error codes could be associated with the notification module in order to raise alerts if an error code happens, etc. We did not plan to share - at least for free - the complete Core, just the basic one that contains the widespread functionality.

So, up to this point we were kind of stuck without making a decision... and then Anya wrote an article in the blog... and then it turns out that there are many people that would be interested in having the some type of Core. So we decided that implementation problems should not prevent us from our final goal that was to share this and help strengthening the community. So the idea is the following:

Basic Core
We will share this in the public GeneXus Server (under some open-source license to be defined). We used an extended version of the WW-Pattern to generate the objects so we have to decide if we will move them to the standard one or release the extended version of the WW Pattern with this. Regardless it will be there for free, but we will not maintain it. Everybody is welcome to participate and extend it and collaborate, we will not officially support or update it. We will answer support questions if asked in English and in a public site - preferably stackoverflow (under GXUSA-BasicCore tag).

Advanced Core
We will have the Advanced Core as a service that you can subscribe to. The Advanced Core will be distributed using the propagate option so you can customize and later on integrate our updates to it using the Change Defender.

Again, this is not a product but instead it is more like a service, in the sense that we do not have a "fits all needs security module" or "all scenarios covered notifications module". The Core grows as we need it to grow and you can subscribe to this. Under the subscription mode - the support mode will be the same as the basic Core - we will use a publish site that will be written in English (if you want to submit a question in another language email it and we can translate from Spanish or Portuguese, but we want to keep the public support in English only). In this case the tag should be GXUSA-Core.

We will have more information about this here soon.

Thanks for your interest!
-Laura

Thursday, February 25, 2010

To reuse or to redo.. that’s the question…


Redoing recreation….
When we were children we used to watch repeatedly that movie we enjoyed so much, we used to read over and over again that book that was so fun for us before sleeping. We loved to play once and then again the games… and we still do that. We still enjoy going to eat at the same restaurant, visiting the same friends, playing the same sport, listening to the same music etc.
It is very enjoyable for us to “redo” some aspects of our lives, we like it, we do it and redo it, and we feel happy about that, don’t we?






Redoing work…

Didn’t we listen or say something similar to this before? “Oh no! There is no milk in the refrigerator, I have to go again to the supermarket!” – or – “I wish I had a robot to prepare my coffee, to bake a cake every morning, to dress my children and take them to school, laundry”…

We “redo” everyday a lot of tasks that we do NOT enjoy and we would prefer them to be already done, wouldn’t we?

A solution not to redo what we don’t like to: REUSING
When developing and analyzing web applications we realized there are certain common problems for all web applications, even if the ways of solving them are different.
As a result of that, when we start to develop a new web application, we need to develop the same components we have done repeatedly before, in order to assure that the “common problems” will be solved for this new web application too. So we need to REDO; we don’t like that, and maybe we can’t do that because time is precious and it is not possible for us to spend so much time doing something we have already done so many times in the past.
So, we ask ourselves what would happen if we had “that robot” to “redo” all this solution for us? Maybe, to prepare coffee or to fry an egg it’s not affordable to have or maintain a robot; maybe we cannot buy a machine to redo for us a complex task. But, what about redoing something that can be saved and reused without effort?

The GeneXus USA CORE

GeneXus USA has developed a GeneXus core module which is used at the beginning of every web application project. It is a set of Transactions, Tables, WebPanels, Procedures, Structured Data Types; a set of basic developed functionalities very useful for all applications. It is “table driven.”
The driving forces for creating Core were SECURITY, Menus, and to save time. Core still lets developers customize their application for their particular application by simply implementing some GeneXus objects that will be explained.

A very simple example
Starting a new KB with a very important base: the Core, I have created three very simple transactions and applied to them the Work With Pattern. Now that I have my web application, I would like to make it a secure web application; so I will reuse the core security module and by implementing a very simple set of procedures my web application will be ready to be used by different users, with different roles and permissions!


What did I have to do?

1. Initialize/Create all the pages
2. Initialize/Create the application Roles
3. Add pages to Roles
4. Create Users
5. Add Users to Roles
6. Add menu/submenu
7. Set the application parms
8. Prepare and run the RoRunOnce routines





1. Initialize/Create all the pages

We call initialize a page to add a reference to the page into the system database. A page can be either a Transaction, Webpanel, Report or a WebComponent.

The core provides a “Pages” table where the system checks the security for each page. In other words, security is defined by page. In order to do this all the pages must be defined in the system using a procedure. By default the core will load its own pages in the page-table but each application will need to create their own pages in this table.


If we have a lot of different “pages” that conceptually are different modules, we should create a special procedure for each module that inserts into the Pages table (CePages) the reference for the transactions I have created. It also adds the reference for all the pages that were automatically generated for the Client, Invoice and Product by applying to them the WorkWith Pattern.


2. Initialize/Create the application Roles

Core comes with two preset roles: ADMIN and Root.
In the majority of the cases, these 2 roles are not enough for our application purposes; that’s why we could need to have a bigger set of roles. In order to easily achieve that, the core has a “Roles” table which saves for the system the different accessible roles (by default it comes with ADMIN and Root).

I have created a procedure that inserts into the Roles table (CeRoles) the reference for two new different roles.



3. Add pages to Roles
Once we have defined the pages and the roles our application will have, we need to tell the system what their relationships will be. In other words, which roles will be able to access which pages.





4. Create Users
The core already comes with pre-defined ADMIN and SYSTEM users, which are allowed to use all the pages of the system. Both are saved into the Users table (CeUsers) from where the system takes the information for the login.

If we want to add more users to the system, we can do it either at the beginning of the project, by adding the information from a procedure (like in the previous examples), or by inserting them manually with the WorkWithUsers webpage on the web application.

We recommend inserting them by a procedure in order to be able to reproduce it in a specific case.
I have created for this kb two users in order to make the first one have the first role I had added, and the same for the second user with the second role.


5. Add Users to Roles
Once users and roles are ready, it is time to tell the system which users will be configured for which roles.


6. Add menu/submenu
The core implements a User control (JSCookMenu) and it comes with a predefined menu.
The “predefined” menu is a dynamic menu that loads it titles and links from a “Menu” table (CeMenu).
If we want to add menu tittles with their submenus and links, we have to create a set of procedures that initialize that information into the CeMenu table, in order to load that information at the beginning.


7. Set the application parms
The core uses a “Parameters” table (a very often-used and known concept for applications) that already comes pre-loaded with some useful parameters.
If needed, we can add more parameters to that table and simply access them from anywhere by calling the related procedures (already developed into the core) to access, delete or update any parameter.


8. Prepare and run the RoRunOnce routines
Once we have defined all the settings that we need in order to customize the security of our web application, we need to call all the procedures that initialize the information, from a unique webpanel that will be called just once, before starting to use the system.
Therefore the name of the webpanel: RORunOnce.



The RORunOnce webpanel is the one in charge of loading all the preset information into the system. Once it has been run, the system is ready to be used with security and menus!