Tuesday, January 31, 2012
Roadmap 2012

Code On Time has expanded its rapid application development capabilities during the year of 2011.

In minutes you can build database web applications that are ready for deployment to shared or dedicated hosting server.  We now support Microsoft SQL Server, Oracle, MySQL, and SQL Anywhere.

A new exciting cloud platform called Microsoft Windows Azure attracts the attention of developers and business managers looking to cut deployment costs down and make deployment of web application simpler. Generate an Azure Cloud solution from your SQL Azure database. The solution includes a Web Role and class library implementing a web site with navigation system, role-based security, membership manager, built-in data export, reporting, and much more. Have it online in 15 minutes.

Many line-of-business web applications benefit from tight integration with web content management systems. We now offer two options that allow to take advantage of popular content management systems DotNetNuke and Microsoft SharePoint Foundation 2010.

DotNetNuke Factory creates application pages as controls with data views incorporated in a DotNetNuke module. The registered module can be configured by end users. This particular CMS is perfect for Internet-facing web applications.

SharePoint Factory creates a collection of application pages implemented as user controls, and packages them for deployment as a Microsoft SharePoint 2010 Feature with a single Web Part. Use this type of project for Intranet websites.

We are preparing the new http://codeontime.com website, complete with high quality search and built-in documentation engine.  We expect to launch the new site in a few weeks from now. The new documentation section will be cross-referenced in the Designer.

Our Code On Time team is working diligently to further the appeal of our web application generator. We would like to share the 2012 roadmap and explain the direction our product is taking.

The following upcoming features are presented in the approximate order of delivery. We will continue releasing bug fixes and introduce various product enhancements that are not listed in the roadmap. Updates will continue being delivered monthly.

Sync Server

Team development will become simple and hassle-free with the release of Sync Server. This is a cloud service from Code On Time designed to support groups of users working on the same project. Web application generator will feature Commit, Update, and Rollback actions to allow merging of the change logs created in the application Designer.

This tool will not replace existing powerful source control managements systems such as SVN or TFS. The sole purpose of the tool is to make the maintenance of Code On Time designer files as transparent and carefree as possible. Developers will be able to customize any part of the project and share their work with a push of a button.

Native Import of CSV Files

Shared hosting servers and restrictive host environments such as Windows Azure and Microsoft SharePoint Foundation make it impossible to use the Import feature available in the generated applications.

The current implementation relies on Microsoft Access Database Engine to process the submitted CSV, XLS, and XLSX files. It is not always possible to have them installed in the hosting environment.

We will offer a native reader of CSV files that will be embedded in the source code of generated application in Premium and Unlimited editions of the product.

Tree View

There is a partial implementation of “Tree” view in the current library. The implementation will be completed and become an official feature of the product.

Drag & Drop in Project Explorer

We have recently introduced the Project Explorer displayed alongside the Project Designer. The hierarchy of web application pages and data controllers allow easy access to the properties of various elements of an application. The hierarchies offer a holistic view of an application.

A full drag & drop manipulation of nodes in the hierarchies will allow easy reordering and changes in the composition of the project.

For example, you will be able to drag and drop “page” nodes to quickly change the navigation system of an application. Dragging of data fields will allow quick changes to the data presentation.

We will also allow Alt and Ctrl keys to affect the outcome of drag and drop actions. For example, one can imagine dragging a “view” node while keeping Ctrl pressed and dropping it on the parent node in the hierarchy. The outcome of such action may be creation of a “duplicate” view. We hope to work with the community to develop useful drag and drop actions.

“SELECT” Data Using Stored Procedures and Web Services

Code On Time web applications dynamically compose SQL SELECT statements to efficiently retrieve data. The generated application incorporates server side access control rules, user-defined filters, and sort order in the single SELECT expression. The application uses parameters to incorporate the user provided values.

This works great in many situations. Sometimes you may need a complex business logic to produce a data set presented to a user. There may be a stored procedure or a call to an external web service that produces data.

We will allow various levels of control to execute code before and after the data is processed. Developers will be able to supply a virtual dataset  if needed. We will also support native “virtualization” for stored procedures.

Business Rules in Project Explorer

Code On Time web applications offer a simple and powerful approach to the separation of business logic from the user interface. Developers create business rules for this purpose. Business rules are implemented as classes.  The classes contain methods adorned with ControllerAction, AccessControl, and RowBuilder attributes. These attributes allow the methods to participate in the application lifecycle.

Project Explorer will automatically parse the source code of all available business rules and match them to action nodes. Nodes of type controller and data view will feature Business Rules child node that will provide a summary of detected methods and will also allow easy creation of business rules. Methods and arguments will be automatically inserted in the source code. We will also allow selecting a purpose of the method. The boilerplate method implementation will reference the web resources explaining how a particular task can be accomplished in a Code On Time application.

Business rules are generated first time only. Customization will be preserved between the code generation sessions. New methods will be injected directly in the existing business rules. If a class implementing the business rules does not exist then a new class will be created.

EASE: My Account

Imagine that you are creating a web application to support a non-profit organization.

There are application users responsible for administration of the site. Event organizers will suggest the events supporting the cause of the organization. There are volunteers willing to sign up to help in organizing the events. There are donors who may wish to contribute financial resources.

Code On Time web applications offer a self-service sign up. Users create their own accounts with ease, which works great and requires minimal administration of the process. Users can login immediately. The application must ensure that the role of a user account is known to allow further access to the application pages. User “a” may wish to become a donor. User “b” would like to suggest an event. User “c” is burning with desire to volunteer.

Generated web applications will implement a class invoked to determine if a user account requires additional configuration when a page is accessed. Developer will have the power to make a determination and force the appropriate user configuration page presented in the browser. “My Account” link on the task bar will allow programmatic selection of the user configuration page.

This feature is a component of EASE (Enterprise Application Services Engine).

EASE: Dynamic Access Control List

Suppose you have created a successful line-of-business application for your client. Another client gets on board – things cannot be any better. Soon you discover that maintaining two clients with the same code base is very difficult. Complexity escalates quickly as you gain more and more customers.

If you have defined access control rules for one client then most likely your rules with have to be expanded to accommodate the other clients as well. Code On Time makes it easy, but the static nature of the access control rules will require frequent re-deployment of the application and possibly database changes.

Dynamic Access Control List will introduce a custom set of tables in the database of your application to support access control rules defined at runtime. The management tool will be built into your web application. Administrators will be able to define access control rules and assign them to roles and individual users.

This feature is a component of EASE (Enterprise Application Services Engine).

Code On Time Tools for Excel

Project Explorer makes it easy to have a bird-eye hierarchical view of your project. Many developers and business users feel more comfortable interacting with the application configuration setting presented in Microsoft Excel spreadsheet.

Code On Time Tools for Excel will provide an alternative to the built-in Designer. Custom ribbon tab will offer access to Code On Time projects. It will be possible to import all elements of a project into separate sheets and make changes to them en-masse. Ribbon controls will allow incorporating changes to the project designer log files.

Mobile Web Applications

Code On Time web applications display well in modern touch phones and tablets. However, the form factor of the web applications is designed to work best in the desktop browsers. The user interface is mouse-driven.

The unique design of Code On Time web applications allows seamless replacement of the client JavaScript library to accommodate new presentation paradigm. Upcoming releases of Code On Time will automatically link the mobile client library when touch screen phones and tablets are detected and render web applications accordingly.

There will be no need to change the existing applications or develop additional “mobile” pages that must be kept in sync with the desktop counterparts.

This feature will be available in Unlimited edition.

Ribbon Action Group

Recently released SharePoint Factory practically calls for a new action scope “Ribbon” to be supported.

New action scope will be available to expose the data controller actions on the tabs of the SharePoint ribbon.

We will also incorporate the SharePoint-style ribbon in other types of projects to offer this popular feature of Microsoft Office in the generated web applications that are not based on Microsoft SharePoint. You will find an example of an action group scope here.

EASE: Custom Membership Providers

Microsoft has introduced ASP.NET Membership to enable quick creation of sophisticated user and role management in the web applications. Code On Time makes it easy to take advantage of this standard feature. Generated web applications offer built-in Membership Manager, the visual tool that works on top of ASP.NET Membership.

Some developers do not trust Microsoft to do the job right and rely on their own tables and plumbing to handle the security. Full support for ASP.NET Membership providers is built in the ASP.NET.

Code On Time will offer automatic generation of custom membership providers directly from the custom database tables.

This feature is a component of EASE (Enterprise Application Services Engine).

A restricted version of custom membership provider will be available in all product editions if a web application is generated from SQL Compact, Microsoft Access, or DB2 database. This will apply to data sources that do not offer a standard ASP.NET membership provider.

Data Source: SQL Compact

Code On Time will support generation of web application from Microsoft SQL Compact databases.

Data Source: Microsoft Access

Code On Time will support generation of web application from Microsoft Access databases.

Data Source: DB2

Code On Time will support generation of web application from IBM DB2 databases.

Binary Fields: Upload When Inserting Records

Web applications generated with Code On Time allow direct upload/download of binary content to and from the binary columns of existing table  rows. It is not possible at this time to upload the binary content when a new row is created. The upload process streams the data straight to the database and a physical row has to exists for this to happen.

The new record does not exist in the database at the time when an end user selects a file to upload. The same limitation applies to binary content stored externally.

The upcoming revisions of the application framework and client library will allow selecting the binary files when a new record is created. The application framework will not upload the files instantly. Instead the upload will start when the database row has been created successfully.

Binary Fields: File System Adaptor

The web application generator will produce the “adapter” class that will make it easy to direct the uploaded content to the external file system folders.  No programming will be required.

Binary Fields: Azure Adapter

The web application generator will produce the “adapter” class that will make it easy to direct the uploaded content to the Windows Azure Storage. No programming will be required.

Binary Fields: Amazon S3 Adapter

The web application generator will produce the “adapter” class that will make it easy to direct the uploaded content to the Amazon S3 storage. No programming will be required.

Binary Fields: Multi-File Upload

Code On Time web applications will support optional multi-file uploading with a progress indicator.

EASE: Workflow Register

Workflow Register will complement the runtime capabilities of generated web applications. This feature will join the Membership Manager and Dynamic Access Control List.

If you are developing an application that services multiple customers, then a common requirement is to allow customization of the user interface according to the needs of each customer. Workflow Register will bring elements of Code On Time Designer to the generated applications. End users will be able to create new virtual pages, data views, and actions groups.

This feature is a component of EASE (Enterprise Application Services Engine).

View Type: Calendar

If your dataset has a date column then it is not a bad idea to see the records in calendar format. This is precisely what we intend to do.

The new view type will render data in a calendar format and will behave similar to the grid view for all intents and purposes.

EASE: Dynamic Web Content Management System – Site Builder

Search Engine Optimization and web content management may not be on your mind when you are creating a line-of-business web application. If your software-as-a-service solution is ready for production then the next step is to start a marketing campaign.

You will likely seek a 3rd party solution such Wordpress or Office 365. You do have the option of incorporating your software in the popular content management systems with DotNetNuke Factory and SharePoint Factory.

If none of the above options are appealing then Code On Time will have another option for you. Built-in site builder will allow creation of virtual pages within your own application that are seamlessly integrated in your web application. No 3rd party software will be required.

This feature is a component of EASE (Enterprise Application Services Engine).

View Type: Rollup

We will deliver a new view type that will present a variation of data sheet view with the ability to collapse the data rows. The view will differ from the data sheet view. It will behave more inline with traditional spreadsheet style of presentation. The overflow data in the cells will not wrap to the next line and will stay hidden.

View Type: Map

Location presentation is easy in modern web development thanks to mapping solutions from Google and Microsoft. We will offer a new view type to present the dataset on the map.

Cloud On Time

We hope to end this year with the launch of http://cloudontime.com. The hosted version of Code On Time with ability to create tables will require zero software on the computer. The service will be subscription-based.

Developers will be able to start the project in the cloud and optionally migrate to a custom version of the cloud app that will be under their full control with the help of Cloud Factory project.

1-to-1 Entities

A common database design practice is to use 1-to-1 entities.

For example, you may implement the Person table that provides the base shared columns LastName and FirstName for tables Student and Teacher.  Both the Student and Teacher tables have PersonID column that allows inclusion of common attributes.

Code On Time does not recognize such relationships and generates the master-detail page where Person is the master view and Student and Teacher are detail views.

The developer’s intent is to have the two independent pages and two controllers that match Student and Teacher. Both controllers must incorporate the personal information (LastName and FirstName) as if it is defined in the base tables.

We will offer a special mapping area to identify the 1-to-1 entities and will generate the code to handle the distributed nature of the data in such relationships.