AgileApps Support Wiki Pre Release

Application Design Guide

From AgileApps Support Wiki
Revision as of 19:43, 24 May 2013 by imported>Aeric (→‎Map Out Your Data)

The platform enables you to create applications directly on the web. The most common and immediate applications are data-driven, meaning they enable teams of users to consolidate a variety of data and use that data to manage aspects of their business or organization.

Use this section as an outline to the concepts for developing a custom application in the platform.

It is a starting place for you to evaluate and specify an end-product that will meet the needs of your organization.

The Business Problem

Businesses and organizations today, regardless of size, struggle with key management issues around sharing data, getting visibility, and driving business processes. For major challenges, large scale deployments of costly application infrastructures like ERP systems or other enterprise application architectures are built to meet those needs. For smaller challenges, most companies either rely on custom-built platforms and applications to manage their data, or in a worst case scenario, spreadsheets created by team members.

In either the large or small scenario, there are major tradeoffs. Larger deployments are budget and resource intensive. To address smaller challenges, companies often end up creating silos of information, which very quickly reduce visibility and management at the next level up.

How the Application Platform Addresses the Problem

Applications in the platform can be created by business users or developers. Anyone who understands how to organize business information can build applications on the platform.

These applications and their data, which are hosted on the platform, can then be used across the entire team or organization and become a living record of business activity.

The depth of features provided by the platform rival much of those found in large scale enterprise platforms. The platform also makes it easier to develop, deploy, use, and change applications.

Areas of Study

Where to start learning to build applications on the platform depends on the level of comfort a user has. Below is a recommended order for learning. Those with advanced knowledge in data management, relational databases, and application design can skip to Create an Application.

Develop an Application

Forward

The world is changing. It always has, and it always will. But there are times when the world evolves not in small increments that go unnoticed, but in leaps and bounds that propel you forward.

That seems like a hyperbolic conceit from a small company, but it's not just us. You can see it occurring more and more. The Web has now reached a state of advancement that puts a Browser (the Old You) into a powerful position as a Contributor (the New You). You can upload and broadcast your own videos, publish your own writings for millions to see, and now we've reached another threshold where the New You can redefine software itself.

Congratulations, New You. You finally have control.

Another way of thinking about this "leap" in technology is for anyone who has even mildly watched the Starship Enterprise or the Millennium Falcon achieve warp speed. Warp speed (according to conceptualists) is achieved not by going faster, but by using light and "magic crystals" to make vast distances shorter. The effect is that space is condensed by mega-bunches so that you can traverse it with less effort.

In the same way, the platform framework traverses the complexities of building, changing, and managing databases and presenting data. We're shortening the distance between what you have, how you organize and relate it, and presenting to who needs to see it, all with no coding (except maybe a light script here and there, if you wanted to get really fancy).

Purpose

The goal is not to teach you to program. The world is filled with excellent software developers who are worth every dollar, rupee, yuan, and ruble. They live off energy drinks, cupcakes and curry. And without them, we couldn't type this document, get paid in a timely manner, or even get the news. The world will always need programmers because they are the technicians of information and we have an unending thirst for that information and the way we get it.

We're certain that when the spreadsheet was invented, accountants freaked out. "They'll never replace us with machines." And you know what? They were totally right. The US Bureau of Labor Statistics reported that by 2012, employment of accountants and auditors grow 19.5% with over 205,000 new jobs1. Programmers will always have jobs.

Instead, the goal is to impress upon you the importance of how your business and the information you need to make decisions from it can be made accessible to you, your team, your managers, and your customers in the perspective they need to see it. The other goal is to help you reach a point where you're not searching aimlessly for information or asking around the office for every bit of progress, but instead, are focused on the more meaningful aspects of your business.

Limits of This Document

As stated, this is not a programming document. We instead will focus on using the framework to build information structures that you can use to house your data and extract it for a multitude of purposes. We'll discuss the building blocks of information, familiarize you with how it is organized in the platform, and provide you with examples and exercises that will show you how it all comes together.

With the platform, we believe that creating applications easier done than said, so by all means: Explore, Share, and Create.

1. Hecker, Daniel, "Occupational employment projections to 2012," Monthly Labor Review, February 2004, Bureau of Labor Statistics [[1]].

Benefits of Building an Application

Applications in the platform are data-driven. They are focused around a centralized relational database of information. Within the platform's web-based environment, this relational database becomes the foundation for a multitude of business activities that revolved around the data so that specific information is organized and centralized in one location.

Unique features of applications

Team-Based Applications
Securely share data within a team with complete access controls based on the user, and their role in the application.
Drag-and-Drop Data Design
Add and change fields and form layouts quickly using the platform's simple drag-and-drop canvas. You can provide unique layouts based on access roles to secure information and streamline data input.
Easier Visibility and Reporting
Filter and display data as views and reports using simple and complex settings. This easy-to-use reporting engine allows you to drilldown to information quickly as well as gain valuable insight on your data and activities. With access controls, you can determine what data, views, and reports are available to specific teams, roles, and users. Reports also come with the ability to pivot data around specific groups, adding graphic charts, and providing simple calculations.
360 Record View
Easily see all attributes and related information regarding a record including associated activities and status, notes and documents, and links to dynamic URLs.
Widget-based Home Pages
Provide your team with exactly the information they need using convenient information portals to the data. Widget-based views and reports can be configured to create tailored Home pages to show immediate information quickly and easily
Web Forms
Drive data in from your website. For every object you create, you can easily select fields to create a web form that you can embed into any website. These web forms are directly connected to your database enabling you to simplify request, orders, self-service, etc.
Document Templates
Quickly generate graphically rich, mail-merge-style PDF documents using variables and HTML for a variety of uses (e.g., pre-filled forms, invoices, restaurant menus, contracts, etc.) using data stored in your application. The platform uses the Apache Velocity templating engine (http://velocity.apache.org/) to create powerful dynamic documents.
Multi-App Mashup
When you're subscribed to multiple applications, you can share data across these applications simply by adding the needed object and adding necessary lookup fields. This allows you to create applications that span across various operations within your organization using the same data sets.

Business Objectives

The following series of questions will help orient you to what you need prior to building your application. You may already have an idea of what you want, but this provides you with some basic groundwork you should consider.

  1. What are the issues you are trying to solve with a new application? What are the existing processes or other software tools this application is designed to enhance or replace?
  2. What are your primary and secondary goals for this application?
  3. Who are the primary and secondary users within your organization for this application? What roles will they play?
  4. Who potentially outside your organization would indirectly be a user? (For example, visitors to your website who you would want to see information from the platform).
  5. List as many activities or processes as you can that this application will drive. You should consider the primary activities, any special activities you will want to do, and what the end result of these activities are.
  6. Once you have the data ready in the application, what information does your team need to have? What information will help them do their job better?
  7. If you are building an application with the intention of marketing and selling it, here are some basic factors you should consider:
    • number of potential users or businesses who are likely to use the application
    • whether the application can be modified to service another market segment not originally intended without major re-work
    • what existing tools are available that accomplish the same intent and what are their shortcomings?

Scope Out an Application

Once you've established your business objectives, it's time to start thinking about how the application will function. The applications are data-driven and therefore you should have a good understanding of the data and associated processes you wish to accomplish as a result.

Map Out Your Data

For data-driven applications such as those created using the platform, one of the most crucial elements is making sure you properly structure your data.

The ideal method is to start with a spreadsheet arranged in columns with sample data. You can have more than one type of data, but be sure you understand how they relate to each other. If you have ever built a list in a spreadsheet or database tables and related them, you can build the basic structure of an application. Within the application, these Objects are represented displayed in tabs.

For example, you might have Objects that are specific and discrete:

Dataobjects.gif

To relate these objects with each other, an intermediary object would provide the necessary lookups across both to ensure they can be related. Once a lookup is established, the platform automatically provides the relationship.

Intermedobject.gif

Other Considerations

  • How do field types will affect your application? Do you have specific fields that have limited possible entries? (For example, an "Importance" field may include "High, Normal, and Low" as the only possible options). This would be the basis for Picklist field type. Or perhaps you have a field that has a specific range you want to associate.
  • How deep do you need information to be? For instance, in the example above, is Caterer also another object (which in the platform is a lookup field type)?
  • Where will information come from? Are people going to manually enter data, is it from an external customer entering data from your website, will you be pulling data in from a file (CSV for example), or do you have deeper integration needs?
  • Is your data clean? Bad information going into a database is useless no matter how good the application. Before importing data into the platform, you will want to take this opportunity to clean your data as best you can before introducing it into the app.

What Do I Want to Accomplish?

  • Once data is put into the application, what are some reports you would expect to have? Who needs to see them? How often? This may help you determine whether you need a report or perhaps just a dashboard.
  • Consider access rights (who can see what data) you would want to include as part of this application. Ideally, you would organize them into roles and what areas of the application they would have rights to. You are able to define these roles in the Setup area.
  • Are there templates you wish to generate based on this data? For example, invoices, mail-merge style letters, receipts, pre-filled forms. The platform provides print templates when customizing objects.
  • Is there any data you want external people to provide using a web form? For example, contact us, reserve a spot, etc. The platform provides customizable web forms you can embed to an HTML page that are linked to the application.
  • Are there data policies for your application? For example, do you want some action taken when a specific value is entered or if a new record is added or deleted?
  • Is there a specific workflow that your application can automate? For example, approval cycles, case management, etc. The platform provides a means to drive your business processes.

Create an Application

When you create an application, you take the first step into customizing the platform to fit your unique business needs. Here are a few pointers to further help you along.

Tips from the Support Coach

  • An application comes with its own Home tab, Reports tab, and an About tab. The About tab lets you document information about an application.
  • Data records in your objects are visible to other applications. For example if you create an object called "Automobiles," you can use this in a vehicle tracking application AND in a mileage tracking application. The Automobile object is a single set of data you can use for multiple uses.
  • You can also relate an object to other objects. For example, using Lookup fields, you can relate Automobiles to other objects called "Drivers" or "Insurance Policies." This lets you define complex relationships between objects.
  • Every field in an object has three components: the Field Label, which is used mainly by humans to identify and describe a field, the Field Name, which is used by the system to identify the field, and the data in the field, which adheres to the format of the Field Type. Incidentally, the Field Name is also used when building variables for email merge templates and print templates.
  • You can create multiple form layouts for an object based on roles. This allows specific people to see certain information that they care about. For example, you might only show financial or lease information in an Automobile record to members of the Finance team. Likewise, you may opt to only show specifications to shop managers who need to see it.
  • Data validations enable you to limit what field values are allowed when someone adds or edits a record. These can be very comprehensive formula-based validations. For example, the Mileage field for an Automobile must always be greater than 0, or if the Status field is Active, the Owner cannot be blank.

If you haven't planned out the object(s) you are going to add, we recommend reading the Objects section.

If you need more information on customization, File a Support Case.

Preparing to use the Interface

Before you create your first object, you should first define the following information:

  • What are your business objectives?
  • What do you want the application to do (scope)?
  • What information do you need to accomplish your objective?
  • How should you organize your application?

Make Your Data Actionable

The platform provides many built-in capabilities to simplify or automate many of your business operations.

Customizable Home Page

Each application comes with a customizable Home page. The Home page is a drag-and-drop, widget-based portal into the application and can be customized for each role. You can define multiple pages to present different application information, bring in Views and Reports from other applications, and create role-specific pages for members of your team.

You can customize this information from the Home Page.

Views and Reports

Once data is brought into the platform, you can start creating list views or reporting on it to convey specific information you want your team to see. By selecting the data you want and assigning a variety of filters, you can isolate key information quickly and easily. Views and Reports can also be assigned Visibility controls so that only specific users, teams or roles have the ability to see them.

Multiple Views compartmentalize information about each object for quick access to records. Views are located just below the application tabs as a drop down when you click on an object tab.

Reports function similarly to Views, with the additional abilities to group information, provide basic computation functions, and graphic charting. You can also email reports to team members. You can define new reports from the Reports tab available for every application.

Using Web Forms

The platform provides you with a quick way to let others bring data into your application. Using a Web Form, you can define specific fields for input which can be embedded into an HTML page. This allows you to put a form that is dynamically linked to your application on your corporate website, your intranet, or even a blog. In addition, fields are automatically validated according to the rules defined by the application.

Document Templates

Document Templates are essentially mail-merge-style templates using HTML. By providing a format and locates in the document that are record variables, you can generate PDF documents unique to specific records. This is ideal for contracts, estimates and invoices, pre-filled forms, etc. The platform uses the Apache Velocity engine to drive this functionality.

You can add new print templates by selecting an object tab from the application tabs and clicking the Customize Tab button.