
- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
on 08-21-2022 03:42 AM
Building an app with App Engine Studio
Maarten Koster and I have met up to build an app in ServiceNow. To do this we decided to use App Engine Studio (AES). There are several goals behind this, build an app to support volunteering efforts, get more experience with AES, and enter the #BuildWithAES challenge .
To do this we have outlined a phased approach. As we have limited time, and our meet-ups are scattered throughout the year, we wanted an approach that supported iterations. Having a working product after our first meetup was more important than a fully complete design.
The steps:
- Come up with an idea [1hr]
- (order food) [5min]
- Pouring the idea into a design [30min]
- (wait for food) [1.5hr]
- Build [30min]
- (eat) [10min]
- Test [30min]
- Extend functionality (design, build, test, iterate) [t.b.d.]
Yes, this shows we spent 1hr and 45 min on food, 1.5hr on designing and planning, and 1hr on building and testing. We blame this on the ease of use of App Engine Studio, and not on our priorities 😜.
The Idea: An iterative approach
“The world works with ServiceNow” inspired us to think about app ideas that can contribute to a better world. If we think about improving the world, one thing that comes to mind is volunteers. All around the world volunteers put in tremendous effort in a cause they believe in. We want to make an app in App Engine Studio, that supports their efforts.
(Logo created with https://app.brandmark.io/v3/)
The idea is to match up a newcomer and a volunteer to do volunteer work. We start up with some simple questions like preferences, interests, and needs and skills respectively.
For the first version of the app, to keep it simple, we want to have the following:
- A sign up form for newcomers where they can fill in preferences, interests, and needs.
- A sign up form for volunteer where they can fill in preferences, interests, and skills.
- Automatically match a Newcomer with a Volunteer.
In an iterative approach we can extend this, using the input on the questions as matching criteria, and in the end even automating the whole process. We have chosen this iterative approach because we want to add functionality as we go. Delivering a usable app after our first meetup, and extending functionality on each additional meetup. As we are doing this on our free time, the meetups will likely be once a month.
Design: High level app design
Since we want to build out the app iteratively, we first start with a high level design and from there start thinking about iterations.
The volunteers and newcomers need to be able to sign up, their information needs to be stored, and they need to be connected together. The design for this is as follows:
Both types of persons get a form to fill in, the data is stored and used to match the volunteer to a newcomer and vice-versa.
Design: Planning the data structure
Now we have our idea, let’s think about the data structure. Both newcomer and volunteer are persons. Both have Preferences, interests, and skills/needs. So we create a generic Person table. The Class can be used to distinguish between the newcomer and volunteer, by extending the Person table.
Build: What version of ServiceNow do we use?
Between the current San Diego release family and Tokyo, new features were introduced for App Engine Studio.
Release |
Release notes |
San Diego |
No updates for this release. |
Tokyo |
Control who has access to create new applications from templates, to share all templates, and to activate or deactivate templates through the app_template_admin role. Control who can see and use templates you create. Share templates with users or groups for collaboration purposes. View charts and graphs illustrating the status of your active applications in the App Engine Management Center (AEMC). A list of all custom apps in development or production in an active deployment are included. You can view details for individual apps, as well as deployment history and collaborators. View charts and graphs illustrating total and active developers in the App Engine Management Center (AEMC). You can view details for individual developers, including the apps for which they are collaborators and request history. |
Changes
Between your current release family and Tokyo, some changes were made to existing App Engine Studio features.
Release |
Release notes |
San Diego |
No updates for this release. |
Tokyo |
In the San Diego release, templates could be shared with and used by everyone or no one. In the Tokyo release, only users with the app_template_admin role can review, activate and deactivate, and assign sharing permissions for all templates. Users with the app_template_author role can only assign sharing permissions for templates they create. Template admins can deactivate any custom template that is not necessary. |
Removed
Between your current release family and Tokyo, some App Engine Studio features or functionality were removed.
Release |
Release notes |
San Diego |
No updates for this release. |
Tokyo |
No updates for this release. |
Deprecations
Between your current release family and Tokyo, some App Engine Studio features or functionality were deprecated.
Release |
Release notes |
San Diego |
No updates for this release. |
Tokyo |
No updates for this release. |
We chose San Diego for this purpose. As that is the current release version, and evaluating the functionality is sufficient for our goal. As soon as Tokyo is released to the public, we will upgrade the app to the Tokyo version.
Build: Getting started
When we open App Engine Studio we are greeted with the welcome screen:
Selecting “Create app” allows us to create a new app.
Let’s give the app a name: “BuildToVolunteer”
A nice icon, and a clear description.
The magic starts:
Build: Creating the data structure
To add data we need to create tables:
Persons tables
We do not have any participant data yet, nothing in Excel.
We also do not want to extend a table. Volunteers and newcomers is not a task, or item, and it is to different from User. We do not want to extend. So that leaves us with creating it from scratch:
Person table
We want to extend the table (as per design) later on. So it needs to be extensible. We want to number the records, so we enable auto numbering.
Note: Table names should always be singular (so person instead of persons).
Newcomer and Volunteer table
The two tables for newcomer and volunteer are extends of the person table, so we select “Create form an existing table”:
Select the person table to extend:
Skill table
For skills we use the default Skills table:
Preference and Interest table
For preferences and interests we create a new (fairly simple) table:
With that, all the needed tables are created:
Build: Creating the experiences
Now let’s move on to the experience.
The forms: Record producer
Again thinking iteratively, we first create a Record producer; a form that the person can fill in that creates a Volunteer or Newcomer respectively. Later on extending the experience with a Portal and Mobile experience.
After filling in the details, adding the questions is quick and easy.
Within a few minutes we have the basic form we are looking for:
Build: Logic and automation
Matching persons together: Flow
Let’s create a Flow to automate the matching of volunteer and newcomer.
The condition for the match:
- (linked) Person is empty
- Class is not (Requesting) Person -> Class
This means we look for Persons that are not matched up [(linked) Person is empty] and if the requester is a Volunteer, we look for someone that is a newcomer.
Of course we want to extend the conditions in the long run. Match based on interests and preference. For now we search for a Person that is not matched up yet, and match them. Ordered by the creation date so we follow first in-first out.
We update both the initiating Person record as well as the person record of the match we found.
The complete flow looks like this:
You can toggle the diagram view and get a Diagram:
All in all our experience was good. We spend a good amount on planning and designing, which made our building effort much more enjoyable.
If you have any ideas how to improve the app, additional functionality or usage, please feel free to let us know. We plan on building out this app, making it more usable with each iteration.
If you want to join our efforts 💪🏻, feel free to let us know. We have meetups in the Amsterdam and Utrecht area.
- 1,246 Views
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Nice article. Thanks for taking the time