Chapter goals & duration
In this chapter you will learn the basics on how to install and configure Helium widgets. You will also learn where to find documentation, examples, installers & license.
Expected duration 4h.
Prerequisites
3DEXPERIENCE dev env (TomEE 3dspace exploded web app)
“Issue” data
Basic XML & 3DEXPERIENCE / MQL understanding
(OPTIONAL) IDE - VSCode, Eclipse or similar
1. Installation
Exercise 1 - Install product
Go to https://products.technia.com and download the latest TVC and Helium installers. Use customer license file or generate a time bombed developers license.
Stop TomEE
Include 'Collaboration'(dependency), ‘Structure Browser’ & 'Graphic Reporting'
Exclude Schema (requires ‘User Agent’ password, default is ‘secret123’)
2. Installation result and basic Setup
By now the web resources should be installed into your target 3dspace server folder. Value Component basic behaviour is controlled by global properties (e.g production mode for performance or development efficiency) . Let’s have a look at the result in 3dspace.
Exercise 2 - Installation result and Setup
‘3dspace/WEB-INF/web.xml’
Search “tvc”, you should find an added servlet, filter, mapping etc.
‘3dspace/WEB-INF/classes/helium.xml’
Copy below minimal setup code snippet (used for object routing etc)
‘3dspace/WEB-INF/classes/tvc.properties'
Copy below properties, remove conflicts from ‘web.xml’
Locate all installed resources
‘3dspace/WEB-INF/lib/tvc*.jar
‘3dspace/tvc' (legacy classic component jsp’s)
‘3dspace/helium'
‘3dspace/webapps/helium'
‘3dspace/WEB-INF/tvc*.tld'
‘3dspace/WEB-INF/tvc' (configs go here in next step)
With the current release a manual bug fix is needed, expand the fix in 'webapps\HETrueWidget\helium\custom\hex'
Start server (3dspace TomEE)
Verify that TVC system initialize correctly in logs (see above screenshot for reference)
(Optional) Useful actions
Clear cache (required in production mode): ‘/3dspace/tvc-action/clearCache’
Set log levels runtime: ‘/3dspace/tvc-action/setLogLevel?logLevel=INFO’
Monitor status & set runtime param: ‘/3dspace/tvc-action/monitorStatus’
List all actions: ‘/3dspace/tvc-action/showActionMappings’
MQL client: ‘/3dspace/tvc-action/MQLClient’
Logs: '/3dspace/tvc/core/tvcLogWatcher.jsp'
User persistence data: '/3dspace/tvc-action/tcm-showDataObjects'
WEB-INF/classes/Helium.xml
<?xml version="1.0" encoding="UTF-8"?> <Application xmlns="http://technia.com/helium/Application"> <DateFormat>YYYY-MM-DD</DateFormat> <DateTimeFormat>YYYY-MM-DD hh:mm</DateTimeFormat> </Application>
WEB-INF/classes/tvc.properties
tvc.core.logLevel=DEBUG tvc.core.productionMode=false tvc.core.user=User Agent tvc.core.password=secret123 tvc.3ddashboard.showEndUserConfigObjects=false tvc.3ddashboard.searchanddrop.enable=true
3. Deploy a widget
Overview definition structure
Exercise 3 - Deploy a widget
Download issues widget
Expand zip to ‘3dspace/WEB-INF/tvc/training’
View, consider and understand overall file structure.
Reflect on domains ‘training/common’ vs ‘training/issue’.
Find and reflect on the template reference in the originated column
Specify widget in JSON and deploy it somewhere reachable by 3ddashboard e.g. '3dspace/webapps/HETrueWidget/config'.
Use “Sample JSON” code snippet below
3DDashboard Helium widget docs: 3DDashboard → Platform Management → Add app (Source code URL:
https://<BASE_URL>/3dspace/webapps/HETrueWidget/heliumWidget.html
, Configuration file URL:PATH TO JSON
)Find the app in compass, add to a dashboard and test it! (should look like above screenshot)
Sample JSON (configuration file content)
{ "id": "training-issues", "title": "Training Issues", "path": "/goto/d/", "parameters": "tvc:dashboard:training:issue/IssuesDashboard.xml", "custom": "true" }
4. Basic Configuration
The framework holds a wide range of configurable features. Let’s take a look at some standard basic configurations done in most implementations.
Table configuration, Chart configuration
Folder structure notice
Note that there is a difference between the structure of configuration xml references and the folder structure.
Config reference: 'tvc:<CONF_TYPE>:<DOMAIN>:<SUB_1>:<SUB_N>:<FILE>.xml’
Folder structure: ‘tvc/<DOMAIN>/<SUB_1>/<SUB_N>/<CONF_TYPE>/<FILE>.xml’
Exercise 4 - Modify widget configuration
It is recommended to TEST all below steps incrementally (refresh widget in dev mode)
Open 'WEB-INF/tvc' with an IDE, setup to use .xsd schema support, validate and autocomplete
Add Priority column (copy an existing column, use issue domain, reflect why, Column configuration docs).
Add auto colour template (see state column) Auto Colouring Docs
Add related data column e.g. 'from[Technical Assignee].to.name' (copy column type from owner), and/or Affected Item, Resolved By multiple properties
Modify Data set to exclude closed issues (see docs link and elaborate, maybe past year only..).
Chart configuration (copy paste state chart)
Priority pie
Owner bar
Originated line
Position the new widgets in a good layout (client reset might be needed)
Drag drop to OOTB widget
PHYSICALID REQUIRED! use data set select as object id is default.
see below boiler plate and drag drop docs in name column, add lifecycle widget and drop an issue
Create issue using OOTB service (Invoke service command, DS docs docs)
Create
servicecommand
folderCreate a file with the below service command code snippet
Refer the definition form IssuesTableWidget toolbar
<ServiceCommand ref="tvc:servicecommand:training1:issue/CreateIssue.xml"/>
Enable built in table settings (se below boiler plate inc data group, export, sort, filter….)
Try data group by state column in the UI and other features
Expected config result after exercise:
Technical Assignee
<?xml version="1.0" encoding="UTF-8"?> <Column xmlns="http://technia.com/TVC/Table" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://technia.com/TVC/Table http://products.technia.com/tvc/schema/latest/TableColumn.xsd"> <Name>assignee</Name> <Label>Technical Assignee</Label> <Expression>from[Technical Assignee].to.name</Expression> <HeaderNoWrap>true</HeaderNoWrap> <Editable>false</Editable> <ColumnType>helium-user</ColumnType> </Column>
Exclude Closed
<DataSet xsi:schemaLocation="http://technia.com/TVC/DataSet http://products.technia.com/tvc/schema/latest/DataSet.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://technia.com/TVC/DataSet"> <Query> <TypePattern> <Type>type_Issue</Type> </TypePattern> <Where>current!=Closed</Where> </Query> </DataSet>
Drag & drop column settings
<Draggable>true</Draggable> <Setting name="template" value="helium/templates/table/object-link" />
Drag & drop data set - 3DDashboard require physicalid!
<DataSet xsi:schemaLocation="http://technia.com/TVC/DataSet http://products.technia.com/tvc/schema/latest/DataSet.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://technia.com/TVC/DataSet"> <Query> <TypePattern> <Type>type_Issue</Type> </TypePattern> <Where>current!=Closed</Where> <Select>physicalid</Select> </Query> </DataSet>
Service command to create Issue (note current version require string escape of body content when macro is false)
<ServiceCommand> <Label>Create</Label> <FontIcon>ti-c ti-add</FontIcon> <Setting name="OnClick" value="App.dataTable.invokeServiceCall" /> <Setting name="OnClickParams"> { "url": "resources/v1/modeler/dsiss/issue", "header": {"content-type": "application/json"}, "addSecurityContext": "true", "addCsrfToken": "true", "method": "POST", "selectionCriteria": "none", "body": "{\"type\": \"Issue\",\"title\": \"A new Issue\",\"priority\": \"Low\"}", "macro":"false" } </Setting> </ServiceCommand>
Built in table features
<DataTable> ... <Toolbar> ... <DataGroup/> <ExportExcel /> <ExportPDF /> <Search /> <ToggleColumnVisibility /> <AdvanceSorting /> </Toolbar> </DataTable>
5. Create Issue form configuration
There is a configurable form component that could be used to view, edit and create objects. You can either configure with full control or call standard documented ‘OOTB’ services.
Create form
Exercise 5 - Add issue create form
Add toolbar command Toolbar Docs
Add form config Form Docs
Widget after exercise:
Add command to Toolbar
<DataTable> ... <Toolbar> ... <ServiceCommand ref="tvc:servicecommand:training:issue/CreateIssueByForm.xml" /> </Toolbar> </DataTable>
Create Issue Form Command
<ServiceCommand> <Label>Create Issue Form</Label> <FontIcon>ti-c ti-plus</FontIcon> <Setting name="OnClick" value="App.dataTable.invokeServiceCall" /> <Setting name="OnClickParams">{ "macro":"false", "macroElements":"", "selectionCriteria": "none", "form":{ "options":{ "formConfigName": "tvc:form:training:issue/CreateIssueForm.xml", "fullscreen":true, "modal":{ "position":{"top":"30%","bottom":"20%","left":"40%","right":"10%"}, "controls":{"dock":true,"expand":true,"close":true} } }, "url": "resources/v1/modeler/dsiss/issue", "body":{"type": "Issue", "description":"{{description.values[0].value}}","priority": "{{priority.values[0].value}}"}, "method":"POST", "addSecurityContext": true, "addCsrfToken": "true", "bodyResolver": "description.values[0].value,priority.values[0].value" } }</Setting> </ServiceCommand>
Create form
<Form> <Title>Create Issue</Title> <Layout> <Columns>1</Columns> </Layout> <Section> <Field id="description"> <Label>Description</Label> <Editable>false</Editable> <FieldType>text</FieldType> </Field> <Field id="priority"> <Label>Priority</Label> <Editable>true</Editable> <FieldType>text</FieldType> </Field> </Section> </Form>
6. Launch Pads
Exercise 6 - Download, expand zip and reference a specific Launch Pad
Download from products.technia.com
Expand issue domain configuration files only onto 3dspace (exclude jar’s etc to avoid server restart)
7. Issue page routing
Page routing is done globally. You map a configuration by type. When clicking links the routing mapping is used to define where to navigate to. When navigating a breadcrumb is added to enable navigate back easily.
Exercise 7 - Configure Route Config
Add page mapping in Helium.xml.
Route config in WEB-INF/classses/helium.xml
<?xml version="1.0" encoding="UTF-8"?> <Application xmlns="http://technia.com/helium/Application"> <PageMapping> <Page namespace="helium:launchpad:issue" name="IssuePage.xml"> <Type is="type_Issue" /> </Page> </PageMapping> </Application>
8. Debug and troubleshoot
Log watcher (e.g. try referring column with spelling mistake)
XSD validation
Browser dev tools
9. History
A rich set of configurable UI components for 3DSPACE, 3DDASHBOARD and standalone applications, developed on demand from more than 130 customers in 20 years.
Value Components allows you to optimize 3DEXPERIENCE UI to perfectly match your business processes, this without carrying the added weight of custom code
10. Standalone app
Launch the app standalone in new tab
<BASE URL>/3dspace/goto/d/training/issue/IssuesDashboard
11. Studio - Live widget configuration using UI (In-app designer)
12. Advanced / Dev
DataHandler interface
void prepareEvaluation(Column column, EvaluationInput input); Cell createCell(Column column, EvaluatedData data); void populateCell(Cell cell, EvaluatedData data);