Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel4
outlinefalse
typelist
printablefalse

Legal notes

Copyright 2022 by TECHNIA AB

All rights reserved.

PROPRIETARY RIGHTS NOTICE

This documentation is proprietary property of TECHNIA AB. In accordance with the terms and conditions of the Software License Agreement between the Customer and TECHNIA AB, the Customer is allowed to print as many copies as necessary of documentation copyrighted by TECHNIA relating to the software being used. This documentation shall be treated as confidential information and should be used only by employees or contractors with the Customer in accordance with the Agreement.

Preface

Widget as a Service (WaaS) is a configurable widget framework for the 3DEXPERIENCE platform and is a cost efficient solution to raise productivity and user acceptance.

WaaS allows configuration of tailored 3DDASHBOARD widgets presenting data from standard OOTB services in any preferred way making users more efficient and happy using the platform. The framework contains many different building blocks, such as tables and forms, that could be configured individually into simple or together into more complex apps, all integrating well with OOTB functionality such as 6WSearch.

The widget framework and definition is hosted on TECHNIA.cloud. Access controlled by subscription and token it can be added to any 3DEXPERIENCE environment, including cloud tenants. The widget is added by pasting a link into the administration dialog “Create Additional App“. The dialog allows adding widgets without any customization to the target environment just by adding the metadata of the whereabouts of the widget that is kept fully outside.

Widget as a Service consume all 3DEXPERIENCE data locally, between the 3DEXPERIENCE platform and the client browser. No 3DEXPERIENCE data, except user information for usage audit purposes (see agreement for details), is passed elsewhere or to the TECHNIA.cloud.

Supported platforms

3DEXPERIENCE 2019x or higher

Subscription & access

Widget configuration is controlled by a subscription and access token. Subscriptions have an end date and a user count. As the subscription runs out or the user count is exceeded, the widget is no longer accessible.

Info

To control usage the logged in user name is passed (and stored) each time a widget definition is loaded from TECNNIA.cloud. Fore more detail on the data stored see the privacy policy & data processing agreement.

Note

To avoid unauthorized use of your subscription keep your access token a secret and renew it frequently.

Hosting

Widgets are hosted on TECHNIA.cloud (currently on AWS). For more detail please refer to the agreement.

Tip

No on-premise installation is required. The widget is fully hosted and ready to link to any 3DEXPERIENCE platform.

The following resources are hosted on TECHNIA.cloud

  • Widget Framework (.html, .css, .js)

  • Widget Definition

    • Configuration (e.g. columns, datasets etc .json)

    • Code (e.g. custom rendering, data calculations etc .js)

  • Subscription detail and usage data

Setup (adding a widget in 3DEXPERIENCE)

Adding widgets is standard functionality part of the 3DEXPERIENCE platform. To access the command you need to be logged in with an administration user with the access to “Platform Management”. Once in “Platform management” navigate to the “Members” tab and scroll down to “Additional Apps” and you will fins the “Create Additional App” command.

A dialog will appear and you should enter

Short Name - The app label as displayed to users in the compass

Type - Select “Widget”

Source code URL - Enter the widget framework host URL & access key (shared with your subscription) followed by the name of the widget you like to add.

Info

As you press Create the widget should be made available under the Compass within seconds.

Updates

The widget framework is evergreen and updates at least every 11 weeks. Updates could include improvements to existing functionality or new functionality enabled by configuration.

Tip

Updates can be controlled by locking to a specific version, allowing validation before rolling new releases.

Info

All improvement, including quality fixes, is delivered with the latest update only, there will be no fix packs on previous locked versions.

Widget definition & administration

Include Page
Widget definition & administration
Widget definition & administration

Components & configuration

To make configuration independent of service detail, and to hide complexity from the developer, the framework comes with a technical concept common to all components.

Image Removed

All services loads data to a common in memory data store. Query statements and other configuration is applied to populate UI components, all from the data store. This allows a compact and standardized cross component configuration format independent of service details. There is no direct dependency between any UI component configuration and the service layer, on top of that all components share the same data store and reflect data changed by other components.

Data store

The client (browser) data store is in memory and temporary, the purpose is to track cross component state, provide data to the UI rendering and to provide a common format to avoid service dependency in configuration. A data store is common practice in many modern UI frameworks e.g. https://redux.js.org/ and should not be confused with a data base.

Cytoscape.js

Image Removed

https://js.cytoscape.org/, a “Graph theory (network) library for visualisation and analysis“, is used as data store. The graph capabilities enables complex data store selection and structure traversal (similar to mql). The cytoscape.js selectors is similar to css selectors and is used in configuration. Normally cytoscape runs in headless mode without any visualizations. Visual graphs can be enabled in development mode and provides a live view of the data store.

Cytoscape.js nomenclature

“nodes” → objects

“edges” → relationships

“eles” → a collection of edges and/or nodes
Include Page
Concept & cytoscape.js
Concept & cytoscape.js

Widget

A top level configuration. Defines a 3DDASHBOARD widget app that could be added to the compass.

Code Block
{
  "$schema": "./schema/waas.schema.json",
  "title": "Widget Example",
  "resources": ["my-plugin.js"],
  "components": [{}],
  "table_definitions": [{}],
  "tableColumn_definitions": [{}],
  "toolbar_definitions": [{}],
  "command_definitions": [{}],
  "datasets": [{},{}],
  "services": [{}],
  "mode": {}
}

Property

Description

Type

Required

$schema

string

false

title

string

resources

string [array]

false

components

component [array]

table_definitions

table [array]

tableColumn_definitions

table column [array]

datasets

data set [array]

services

service [array]

mode

mode

Component

Defines a UI component used by the widget.

Remove this? Move requiresContext and root def to root widget conf?

Code Block
{
    "name": "??neverUsed??",
    "type": "table",
    "definition": "ups-roots-example",
    "root": true,
    "requiresContext": true
}

Property

Description

Type

Required

name

a unique identifier used for reference (but never used?)

string

type

the component type (e.g. table) - already by the def?

string

definition

the component identifier (e.g. table name)

string

true

root

true for the default top level component

boolean

requiresContext

true in case the widget require a dropped context object

boolean

Data set

Include Page
Data set
Data set

Services

Mode

Table

Table

Column

Plugin code extensions

To enable custom logic (e.g. calculated values) the framework comes with a plugin architecture.

TODO