Motivation (OLD)

Design principle of App Extension

Problem Statement

The current way of building app has the following problem area that the APP Extension is aimed to solve:

  • The developers do not know the starting point

  • The code does not comply to the a10-widget and a10-framework

  • There is a lot of common code that has to be redone for an app to be produced

  • The app development takes a lot of time for even a small dashboard to be built

  • The QA has to test the same functionality again and again

  • Due to the rework the probability of same bug being introduced increases

  • The same logical bug has to be resolved at several code source

Solution Overview

The App Extension is a skeleton app proving the developer all the tools required to build an app. The base will be built on top of a10-gui-framework and a10-gui-widgets. It will act as the starting point for any app to be developed. The core of the app will be owned by the a10 team and the app developer will own the widgets built on top of the core.

Core

The core will contain of first-hand class objects from UI perspective like the Dashboard Container, Wizard Container, Log Container, Form Container and more.

App

The app will instantiate an instance of the base class to produce the desired object instance for e.g., dashboard, wizard or a log widget.

Framework

The framework of the APP Extension will be based on the a10-gui-framework and a10-gui-widgets using React.

Container

A container is a top-level component based on React, which is loaded with a lot of widgets and with particular business logic to render an app. Application developers need to specify a container in the JSON config to decide which type of app to generate.

Widget

A widget is based on a10-gui-widgets as well as the basic units in the app container to provide more features which are described in detail on this page. App developers use the attribute "widget" of the main config to compose the widgets to depict what are functionalities in the app as well as arrange the layout for each widget.

App Extension provides all the widgets for each app container as well as supporting every platform such as HC, ACOS, and TPS.

App Extension DOES NOT allow app developers using their own created React component in a widget config, must use App Extension provided ones.

UI JSON

A JSON configuration that describes the type of application to be generated, starting from the container to the widgets.

Data Source

A data source is a pre-defined request provided by App Extension. App developers can leverage a data source to get asynchronous data and assign it to a widget. Every app developer is able to contribute their desired data requests as data source into App Extension to share.

Action

Action is a set of events working for a widget or container to do something, no matter what a widget to do any event must be executed through an action. Each action also represents a Redux action as far as App Extension.

Basically, most widgets or containers have embedded one or more actions in themselves, that means app developers DO NOT need to tag any action to the config of the widget by default. Of course, App Extension allows app developers to specify action(s) to a widget to reach the purpose as well.

Functionalities

  • Creating custom dashboard

  • Creating global time range slider

  • Creating tenant context

  • Providing authentication/authorization

  • Providing API layer connectivity

  • Providing Localization

  • Providing centralized error handling

  • Creating custom wizards

  • Creating custom configuration of objects

  • Proving all the a10-widgets library access

  • Providing a10-style guidance

  • Providing messaging services

  • Providing all complex calculations pre-done required for plotting different graphs

  • Packaging of an App

  • Generating configs for wizards

  • Creating a tenant / non-tenant based APP

Architecture

Workflow of APP Extension

Interactions

  • The developer will only edit the user file section

  • App developers will just need to include the widgets in defined JSON format

  • We will also try to provide a tool in development mode to generate these config/widgets by taking form inputs

  • For the app developer it will be more of a data entry then development

  • Even the PMs, managers, and customers can do this job then

  • After adding all the configs the APP can be packaged and uploaded, in few hours

  • The App developer will be able to select the data source key for a widget and perform some aggregation supported by the App Extension framework

Debugging

App Extension supports a debugging feature for an app container and all the components or even specific components. Set debug: true in main JSON config to turn global debugging on. On the contrary, set debug: false in main JSON config but set debug: true in some specific components, that represents to debug on those components only.

Debugging messages in browser’s console

Showing the following info regarding each step for an app container:

  • Initialization

  • Parsing JSON config

  • Collecting requests data

  • Fetching requests data

  • Rendering components

  • Error handling

  • Performance

Showing the following info regarding each step for each component

  • Component rendering

  • Component updating

  • Data from API request

  • Calculating values

  • Data result after calculating

  • Error handling

  • UI behavior

  • Performance

Debugging UI

App Ext provides Debugging UI on the app GUI as long as setting debug: true in the main JSON config. App developers are able to see debugging logs on a dialog showing on the GUI page, the logs info can be from app container or all components.

UI JSON Creation Tool

TBD

Last updated

Was this helpful?