Configuration and Extensibility
Configuration and Extensibility
Configuration and
Extensibility
Active Workspace 6.0
AW008 - 6.0
Unpublished work. © 2021 Siemens
This material contains trade secrets or otherwise confidential information owned by Siemens Industry Software, Inc., its
subsidiaries or its affiliates (collectively, "Siemens"), or its licensors. Access to and use of this information is strictly limited as set
forth in Customer's applicable agreement with Siemens. This material may not be copied, distributed, or otherwise disclosed
outside of Customer's facilities without the express written permission of Siemens, and may not be used in any way not
expressly authorized by Siemens.
This document is for information and instruction purposes only. Siemens reserves the right to make changes in specifications
and other information contained in this publication without prior notice, and the reader should, in all cases, consult Siemens to
determine whether any changes have been made. Representations about products, features or functionality in this document
constitute technical information, not a warranty or guarantee, and shall not give rise to any liability of Siemens whatsoever.
Siemens disclaims all warranties including, without limitation, the implied warranties of merchantability and fitness for a
particular purpose. In particular, Siemens does not warrant that the operation of the products will be uninterrupted or error
free.
The terms and conditions governing the sale and licensing of Siemens products are set forth in written agreements between
Siemens and its customers. Siemens' End User License Agreement and Universal Contract Agreement may be viewed at: https://
www.sw.siemens.com/en-US/sw-terms/
TRADEMARKS: The trademarks, logos, and service marks ("Marks") used herein are the property of Siemens or other parties. No
one is permitted to use these Marks without the prior written consent of Siemens or the owner of the Marks, as applicable. The
use herein of third party Marks is not an attempt to indicate Siemens as a source of a product, but is intended to indicate a
product from, or associated with, a particular third party. A list of Siemens' trademarks may be viewed at:
www.plm.automation.siemens.com/global/en/legal/trademarks.html. The registered trademark Linux® is used pursuant to a
sublicense from LMI, the exclusive licensee of Linus Torvalds, owner of the mark on a world-wide basis.
Architecture concepts
Learning Active Workspace architecture ─────────────────────── 7-1
How Active Workspace saves changes to properties ─────────────── 7-2
Learn declarative contributions ──────────────────────────── 7-2
Declarative action: navigate ────────────────────────────────── 7-2
Declarative conditions ───────────────────────────────────── 7-5
Declarative panel walk-through ─────────────────────────── 7-10
What are intermediary objects? ──────────────────────────── 7-13
Using visual indicators to quickly recognize a property ───────────── 7-15
Using a sublocation to display a custom page ─────────────────── 7-16
Declarative user interface ─────────────────────────────── 7-18
Declarative UI introduction ────────────────────────────────── 7-18
Declarative kit and module ────────────────────────────────── 7-22
Declarative control of sublocation visibility ──────────────────────── 7-25
Declarative view ──────────────────────────────────────── 7-27
Declarative view model ──────────────────────────────────── 7-30
Declarative messages ───────────────────────────────────── 7-33
Learn the declarative command architecture ─────────────────── 7-35
Declarative command object - commands ───────────────────────── 7-35
Controlling command visibility ─────────────────────────────── 7-36
Declarative command object - commandHandlers ──────────────────── 7-39
Declarative command object - commandPlacements ────────────────── 7-41
Declarative command object - activeWhen ──────────────────────── 7-45
Declarative command object - visibleWhen ──────────────────────── 7-47
Declarative command object - actions ─────────────────────────── 7-49
Data providers ────────────────────────────────────── 7-50
Learn about data providers ────────────────────────────────── 7-50
Use an existing server data provider ──────────────────────────── 7-51
Creating a custom server data provider ────────────────────────── 7-55
Learn client-side data providers ─────────────────────────────── 7-56
Learn the Active Workspace user interface ──────────────────── 7-63
Basic interface ───────────────────────────────────────── 7-63
Global navigation bar ───────────────────────────────────── 7-63
Location ───────────────────────────────────────────── 7-64
Active Workspace back button ──────────────────────────────── 7-65
Session context control ──────────────────────────────────── 7-65
Global search ────────────────────────────────────────── 7-66
Sublocations and primary navigation tabs ───────────────────────── 7-67
Configure features
• Active Admin
• Monitor activity
• Troubleshoot
You generally change the user interface for Active Workspace using customization methods. However,
as an administrator, you can perform simple configurations that only involve changing certain
configuration files, such as style sheets.
You can emphasize information specific to your company's processes, such as displaying custom
properties on tiles or exposing custom business object types.
• Configure tables.
The universal viewer is a gallery-style viewer element — it has left and right chevrons so your users can
cycle through the available thumbnails.
It consists of a collection of individual viewers, each designed to handle specific single-file document or
image formats in the client, such as Word, PDF, and PNG. The universal viewer renders single-file JTs, but
not multi-file JT assemblies. To render the JTs in assemblies, use the 3D viewer which requires
installation of the Active Content feature.
It uses several third-party libraries to render the various file types. Consult the documentation for those
libraries for possible restrictions and limitations.
You can add a single viewer widget that can display many kinds of information without needing to know
beforehand which kinds will be present or desired. The user can browse through all available
information seamlessly.
The following XRT code snippet shows the OOTB Preview section. You can inject this source into your
custom style sheets to use the universal viewer.
<section titleKey="tc_xrt_Preview">
<inject type="dataset" src="Awp0GalleryViewer"/>
</section>
When the user selects an object, the universal viewer builds a list of available files and their associated
viewers from the AWC_defaultViewerConfig.VIEWERCONFIG preference values.
• datasetType.viewerName = namedReference
Active Workspace recursively searches the SEARCHORDER values of the preference to build a list of
datasets related to the selected object. These datasets form the list of available datasets for the gallery.
When each dataset is displayed, the universal viewer searches the preference values to find the viewer
associated with that dataset type. There can be only one line for each dataset type.
If you create custom relations, custom dataset types, or custom named references, you will need to add
them to this preference if you want the viewer to recognize them.
If the gallery does not find any content to be displayed, it displays the icon for the object type.
Example:
If you select a folder, and it contains an item revision, and the revision has a GIF dataset as
reference, then the values of the preference that are considered are as follows (spaces added for
readability):
SEARCHORDER.Folder = contents
SEARCHORDER.ItemRevision = ...,IMAN_reference,...
GIF.Awp0ImageViewer = GIF_Reference
The final result is the Awp0ImageViewer showing the *.gif file contained in the dataset.
Tip:
In some cases, the user selects an intermediary object, which represents another object in the UI.
This is common in structures and table rows. You must register the intermediary object for the
viewer, not the underlying object.
Available viewers vary depending on your installed options and the software release you have.
Following are some of the more common viewers and what they display:
Note:
Your list of available viewers may differ from the ones listed here.
• Awp0CodeViewer
Various source code files, such as JavaScript, XML, JSON, and so on rendered with the Monaco editor.
• Awp0HTMLViewer
Web-style content rendered using your browser.
• Awp0ImageViewer
Renders 2D files using your browser. This displays png, jpg, gif, and anything else your browser
supports.
• Awp0JTViewer
Single or monolithic JT files. Not for assemblies of JT files.
• Awp0PDFViewer
PDF files – uses a 3rd party PDF renderer.
• Awp0TextViewer
Text files.
Additional Active Workspace features may include additional viewers specialized for that functionality.
For example:
The Lifecycle Visualization server provides a 2D viewer for file types that your browser can not
normally render.
• Awp02dViewer
• Arm0RequirementPreview
• Arm0RequirementDocumentationACE
Depending on your needs, you can choose to render 3D data on the client or the server. To set the
rendering method for the universal viewer, use the AWV0ViewerRenderOption preference.
You can view and edit Microsoft Office files in the universal viewer if Teamcenter Office Online is
installed.
If you create a custom dataset or named reference, you must create new values in the
AWC_defaultViewerConfig.VIEWERCONFIG preference. For example, if you created a custom C9PDF
dataset with a C9PDF_Reference, you must create the following value (copied from PDF and modified)
for the viewer to display your files:
C9PDF.Awp0PDFViewer=C9PDF_Reference
Normally, you would not use the universal viewer to view your assemblies. Instead, use the Active
Content Structure feature's 3D viewer tab.
However, there are certain cases when you might want to use the universal viewer (displayed in the
Overview tab) for your assemblies instead. These special cases would be when your assemblies contain:
• No JT data at all.
• Your assemblies are non-CAD, consisting of other types of data, such as Microsoft Word documents,
PDF files.
To use the universal viewer as the default for assembly data, there are a few things to be aware of:
• You must add your business object type and relations on a new SEARCHORDER line.
• A selected BOM line object is actually the runtime business object named Awb0DesignElement, an
intermediary object.
• The relation that the design element object has to its target object is named awb0UnderlyingObject.
Example:
Add the following line to the preference to process any objects referenced by the design element
object.
SEARCHORDER.Awb0DesignElement=awb0UnderlyingObject
If you have an assembly of DocumentRevision objects that have datasets attached with the
TC_Attaches relation, Active Workspace does two things. It processes the new
Awb0DesignElement line, finding the underlying DocumentRevisions, and then because of the
OOTB line:
SEARCHORDER.DocumentRevision=TC_Attaches
It checks the DocumentRevisions for anything attached with the TC_Attaches relation.
Modifying commands
To help make your users' interface more streamlined and efficient, you can change various features of
commands using the Active Architect workspace.
Icon
What the command looks like is specified in its basic definition. Command icons can be changed in
the Icon Preview section on the Commands page of the Command Builder.
Placement
Where a command appears is part of its commandPlacements definition. Command placement can
be changed in the Placements section of the Command Builder.
Visibility
When a command appears is part of its commandHandlers definition. Command visibility can be
changed in the Handlers section of the Command Builder. Command visibility is determined by a
combination of server-side and client-side conditions.
Action
What the command does is determined by its commandHandlers and its action definition.
Command actions can be changed in the Handlers section and the Actions page of the Command
Builder.
Labels
The default setting of whether command names are displayed is controlled by the
AW_show_command_labels preference. If the user changes the Labels setting in the UI, a user
preference instance is created for that user.
You can also set the default at the workspace level by adding the showCommandLabel setting in
the workspace definition file. This can only be overridden by a user preference instance.
Example:
Contribute the setting to the Author workspace.
.../stage/src/workspace_contribution_{myContribFile}.json
{
"schemaVersion": "1.0.0",
"workspaceId": "TcAuthorWorkspace",
"settings": {
"showCommandLabel": false
}
}
Example:
Adding the setting to your custom workspace.
.../stage/src/workspace_{myWorkspace}.json
...
"workspaceId": "...",
"workspaceType": "Exclusive",
...
"settings":{
"showCommandLabel": false
},
...
• TC__thumbnail_relation_order
• TC__thumbnail_dataset_type_priority_order
• TC__thumbnail_dataset_type_order
1. If the current object is not a dataset, follow any existing relations listed in
TC__thumbnail_relation_order.
2. For each relation found, look for all datasets of the type listed in
TC__thumbnail_dataset_type_priority_order.
3. From the list of datasets located, or if the original target was a dataset, examine the referenced
files to locate a named reference listed in TC__thumbnail_dataset_type_order.
Design Intent:
If there are multiple files with the UG-QuickAccess-Binary reference (as with most NX
datasets), Active Workspace displays the one named images_preview.qaf first.
5. If no file was located, display the icon for the business object as the thumbnail.
Examples
TC__thumbnail_relation_order
...
IMAN_specification
IMAN_manifestation
...
TC__thumbnail_dataset_type_priority_order
UGMASTER
UGPART
...
TC__thumbnail_dataset_type_order
Image
...
UG-QuickAccess-Binary
...
Each of the following examples show two files and which one is chosen.
Example:
This example highlights an OOTB situation where you might want the Image reference to be
displayed instead of the UG-QuickAccessBinary, but it does not because UGMASTER has priority
over UPGART.
Example:
This example of a non-typical use case highlights how even though UGMASTER has priority over
UPGART, and Image has priority over UG-QuickAccessBinary, the relation order preference
ultimately has first priority.
A common configuration is to use a special dataset exclusively for thumbnails. This assumes you already
have a process to create and populate them. To configure your site to behave this way, you must modify
the TC__tumbnail preferences. There are many existing datasets already defined in Teamcenter that
you can use, or you can create your own.
Example:
In this example, your company decides to use the existing PNG_Thumbnail dataset to hold your
thumbnail images. As TC__thumbnail_dataset_type_priority_order does not check this type of
dataset, you must add it to the list. You decide to use the existing Thumbnail relation, as it is not
only already on the list of relations but also has the highest priority. The same is true for the
Image reference.
The only change you must make is to add the dataset type to the top of the type priority order.
You can find thumbnail images in many places throughout the UI.
In Active Workspace, you can view a list of the files tracked by a dataset from the FILES section of the
Attachments tab.
To view the actual Reference value for the files within a dataset, you must use the Named References
dialog box in the rich client.
You can use the Active Workspace home page to provide tiles for your users' most commonly used
pages, objects, and saved searches.
The home page displays the same content for a given user regardless of their device type, whether it is a
workstation, a laptop, or a mobile device.
The tiles are displayed on the page according to tile collections. Each tile collection is associated with a
scope and can have multiple tiles related to it. The tiles shown to a user are based on a combination of
all of the valid tile collections for their session context. All tiles from each valid collection are combined
onto the display. As a result, the user might see duplicate tiles if the same tile is defined in more than
one of their collections. To avoid duplicate tiles, Siemens Digital Industries Software recommends that
you plan your tile collections based on the desired visibility. For example, if everyone needs to see a tile,
place it in the Site collection. If you want only certain groups to see a tile, place it in those group
collections, and the same with roles, workspaces, and projects. You may also hide tiles in certain
collections, overriding a tile shown in another collection.
Users may have only one tile collection for each scope. All users get the tiles from the site collection.
Then the appropriate group, role, workspace, and project collections are added based on their session
context. Finally tiles in their user collection are added. If the user changes their session context, the
home page is rebuilt using the collections appropriate to their new session context
The following tasks require that you are familiar with the object model (following) of the various tile
objects.
Object model
A tile collection object maintains relations to a number of tile objects using Awp0GatewayTileRel
relations, and they have a reference property that points to a single scope object. Each tile object is
created using a tile template object.
• Awp0TileCollection
This object is a container for the tiles assigned to a given scope. The scope is attached to the untyped
awp0Scope reference property. The tiles are attached using the untyped Awp0GatewayTileRel
relation property array.
• Awp0Tile
These objects are the tiles that appear on the home page. They contain any information that is
specific to the instance, such as parameters and data for live tiles.
• Awp0TileTemplate
A tile template stores the overall configuration for a specific tile type. When you create a new tile
instance, you must specify which tile template it is based upon. The templates store information
about the tile's action, action type, icon, and content names for live tiles.
• awp0Scope (relation)
This relation must point to an object that is a valid scope object. This scope determines whether a
user can see the tiles in the collection based on their current session context.
Tile reference
The tile object (Awp0Tile) is the actual tile that a user sees on their home page. Each tile must reference
a single tile template. Together they make up the total functionality of the tile.
awp0TileId
This is the tile's unique internal identifier. When creating your own tiles, use your custom prefix
awp0DisplayName
This is the tile name that is displayed to the user for non-object tiles. (Tiles not based on
Awp0PinnedObjectTemplate) Almost all tiles provided OOTB will use this value as their display name.
However, for a tile that represents a business object (when the user uses the Pin to Home command, for
example) the tile will instead display the object_string property of the pinned object.
awp0TileTemplate
This is a reference to the tile template that this tile is associated with. This represents the type of tile —
its core functionality. The other tile properties allow tiles that share a tile template to have slightly
different behavior.
awp0Params
If the referenced tile template is a command (action type = 3), provide your parameters to that
command using this property.
Example:
If the tile template's command is to show a create object panel to the user, you can specify which
object types are displayed on the list. Only the types specified (not their subtypes) are displayed.
cmdArg=ItemRevision
cmdArg=Folder&Document
cmdArg=Text&MSWordx&MSExcel
awp0Style
A custom cascading style sheet (CSS) class that is added to the tile's <div> class list on the HOME page.
For example, add my-custom-css to the awp0Style property.
You can create a tile collection for a specific scope. You can then relate tiles to the collection so that
users whose session context include the appropriate scope can see the tiles. Each user's session context
consists of many pieces of information. Of these, the tile collection scopes are concerned with the user
and their current group, role, project, and workspace. The user's home page consists of all the tiles from
up to five tile collections, one from each scope.
The user's active tile collections have no order of precedence. The tiles from each active tile collection
are displayed. If a tile is hidden by an active collection, it is not displayed to the user regardless of how
many other active collections contain that tile.
Example:
In this example, the user's session context is as follows:
• user = ed
• project = none
• group = Engineering
• role = BOM Analyst
• workspace = Author
Design Intent:
If the user has only a single workspace available to them based on their current group and role,
the UI does not display the Workspace option in the context control panel, since they have no
choice. Regardless, every user is always part of a workspace, even if they don't know about it.
Example:
The user ed logs on and makes a change to their home page. Active Workspace creates an
awp0TileCollection object named ed-TileCollection, and the awp0Scope property references
ed's user object.
awp0Scope — Scope
In this property, you must add a reference to an object. The type must be one of the following:
User (POM_system_class)
Role (POM_system_class)
Group (POM_system_class)
TC_Project (POM_application_object)
Awp0Workspace (Fnd0UIConfigurationObject)
The gateway tile relation (Awp0GatewayTileRel) is the relation type that attaches a tile to a tile
collection. It includes the properties used for determining the tile's layout in this specific collection.
• Hide a tile
You can select the tile group in which this tile appears. There are a few groups provided, but you can
type in your own.
• Main
• Quick Links
• Favorites
The tiles are ordered within the group according to this integer. Leave a gap between the numbers to
make it easier to insert and rearrange the tiles later on.
The lowest order number within each group determines the order of the groups themselves.
This integer allows you to choose the size of the tile. You must choose from the list of available sizes as
defined in the tile template.
small 0 1x1
tall 1 1x2
wide 2 2x1
large 3 2x2
awp0Removed — Hidden
When you set this Boolean property to true, the tile does not appear on the user's home page. This can
be done to override a tile that is included in a collection from another scope. For example, consider that
the workspace-scoped tile collection contains a certain tile, and the user's current group-scoped tile
collection contains that same tile, but it is hidden. In such a case, the user will not see that tile. If they
change to a different group and this group's tile collection does not hide the tile, the user will see the
tile.
awp0Protected — Protected
If you set this Boolean property to true, the tile cannot be unpinned through the UI.
Before you can create a home page tile, you must have an appropriate tile template configured.
awp0TemplateId — Template ID
awp0Icon — Icon
Tile templates are used to provide actions to tiles. Following are the available values to use in the
awp0ActionType property.
Example:
If you want the tiles created from this template to send the user to their home folder
(Awp0ShowHomeFolder) and then run the show create object command
(Awp0ShowCreateObject):
awp0actionType=3
awp0Action=Awp0ShowHomeFolder;cmdId=Awp0ShowCreateObject;
The types of objects that can be created are defined on the tile.
A tile's theme index is categorized by its function, which also determines the tile's color scheme.
0 Admin locations
1 Pinned objects
2 Locations
4 Saved searches
small 0 1x1
tall 1 1x2
wide 2 2x1
large 3 2x2
To create a new tile using the rich client, follow these general steps:
1. Search for and copy a tile template (Awp0TileTemplate) object to the rich client clipboard.
1. Search for and copy a tile (Awp0Tile) object to the rich client clipboard.
3. Paste the tile onto the tile template using the Gateway Tile (Awp0GateWayTileRel) relation.
Compound properties are properties that are not defined on the selected object, called the primary
object, but instead defined on a related object, called the secondary object, or on a relation between the
objects.
• Traditional compound properties are static, defined in the Business Modeler IDE, and require a
schema change and deploy.
• Dynamic compound properties are defined using XML files, and are created and modified quickly and
easily.
You can:
• Override the display name of the target property to make column titles unique.
• Traverse to n-levels and n-cardinality, as well as both the primary-to-secondary and secondary-to-
primary directions.
You can use dynamic compound properties in tables. Tables that use data providers support dynamic
compound properties. If a table has its own data population mechanism, the dynamic compound
properties are not automatically supported. In addition to tables, you may use dynamic compound
properties in place of single properties in the following places:
• As a property in an XRT style sheet, including object set tables, table properties, and name-value
properties.
What about the compound properties created using the Business Modeler IDE?
The compound properties created in the Business Modeler IDE are static and require a TEM or
Deployment Center redeploy because of the change in the data model. Dynamic compound properties
can be used instead of static compound properties in nearly every case.
Note:
However, because dynamic compound properties cannot be indexed by Solr, they cannot be used
for searching, although they will appear in the results.
• When the retrieved property contains multiple values, Active Workspace displays a comma separated
list.
• When multiple objects match the traversal rule, Active Workspace displays each object's property on a
separate row in the table. If the dynamic compound property it is not displayed in a table, such as in a
summary view, then only the first object's property is displayed.
When you use Dynamic Compound Properties (DCP) in a table, they do not repeat information that has
already been presented.
Tip:
The following examples use style sheet object sets, but the same principle applies to declarative
tables.
In the following example, there are four document revisions attached to a review object.
An object set lists all DocumentRevision objects attached with the TC_Attaches relation to the review
object.
The object set can easily retrieve properties directly from the table source objects, like object_string,
object_type, and owning_user.
<section titleKey="tc_xrt_Documents">
<objectSet source="IMAN_specification.DocumentRevision"
sortdirection="ascending"
sortby="object_string"
defaultdisplay="tableDisplay">
<tableDisplay>
<property name="object_string"/>
<property name="object_type" />
<property name="owning_user"/>
</tableDisplay>
...
</objectSet>
</section>
The document revision objects have other objects related to them which contain properties that you
may also want to display on your table, such as the author and title from the document item's master
form, and the name of the word dataset.
You can use dynamic compound properties to easily retrieve those properties. For example, follow the
item_tag reference property to the Document item, then the item_master_tag reference property to
the Document Master form to retrieve the Author property.
<tableDisplay>
<property name="object_string"/>
<property name="object_type" />
<property name="owning_user"/>
<property name="REF(items_tag,Document).REF(item_master_tag,Document Master).Author"
titleKey="MyAuthors" />
<property name="REF(items_tag,Document).REF(item_master_tag,Document Master).Title"
titleKey="MyTitle" />
<property name="GRM(TC_Attaches,MSWordX).object_name"
titleKey="MyFilename" />
</tableDisplay>
The other properties can be retrieved in the same manner. Notice that the two properties retrieved from
the form and the single property retrieved from the dataset are listed together in the same row. This is a
convenience feature, but remember that the DCP columns from separate objects (relation paths) don't
have any correlation to each other, except that they were located from the same source object.
Object set behavior using DCP with more than one target
When there is more than a single destination object related to the table source object, the table displays
the results, but it does not repeat information from the other DCP columns.
Consider that a document revision may have more than a single word dataset attached.
A fifth row has been added to account for the fifth dataset. However, there are still only 4 objects that
are the source of the object set. Notice that the last row of the table repeats the data from the original
object set source object it is based from in the first three columns, but does not repeat the information
from the fourth and fifth columns, since they are not part of the same relation path.
Use dynamic compound properties (DCP) in your properties, tables, and table properties to display
property values from related objects.
Examples of use
Review the dynamic compound property syntax for more examples of how to use DCP.
Property names are unique on an object, but when displaying properties from several objects, you could
have duplicate property names shown on the table. To avoid user confusion, you may override property
names that you retrieve from related objects.
Example:
You create a table of datasets and you want to display current name of both the dataset and the
dataset's parent revision. This will create two columns with the title "Current Name".
To avoid confusion, you change the name of the parent revision's current_name property using
titleKey.
<property name="current_name"/>
<property name="GRMS2P(IMAN_specification,ItemRevision).current_name"
titleKey="tc_xrt_dsir_name"
/>
• Use the dynamic compound property syntax within the propertyName attribute.
For example, when viewing a dataset in a table, you can traverse the specification relation to find the
parent revision's current_name property, and then override the Current Name column title with
something you define in the TextServer.
<ColumnDef objectType="Dataset"
propertyName="GRMS2P(IMAN_specification,ItemRevision).current_name"
columnName="tc_xrt_ds_name"
width="300"
/>
If the columnName string is not found in the TextServer definitions, it will be presented as-is.
Note:
Use columnName only when traversing to other objects. Do not use columnName on regular
properties.
DCP Syntax
Following is a list of the traversal methods, the syntax required, and an example for each.
REF Traversal using the reference property. If the reference property is an array property,
there will be multiple source objects and therefore multiple property values.
REF(referencePropertyName,typeName).propertyName
REF(items_tag,Item).item_id
REFBY Traversal using reference property in reverse. If multiple objects are referenced by the
reference property, there will be multiple source objects and therefore multiple
property values.
REFBY(referencePropertyName.typeName).propertyName
Example: Traverse from an Item to an ItemRevision whose items_tag refers to it, and
then return the item_reivision_id property.
REFBY(items_tag,ItemRevision).item_revision_id
GRM Traversal using generic relationship management (GRM) rules, primary-to-secondary.
If the relation has multiple secondary objects, there will be multiple source objects
and therefore multiple property values.
GRM(relationName,typeName).propertyName
GRM(IMAN_specification,Dataset).object_name
GRMS2P Traversal using generic relationship management (GRM) rules, secondary-to-primary.
If there are multiple primary objects of the relation, there are multiple source objects
and therefore multiple property values.
GRMS2P(relationName,TypeName).propertyName
GRMS2P(IMAN_specification,ItemRevision).item_revision_id
GRMREL Traversal using generic relationship management (GRM) rules, primary-to-secondary,
but stopping on the relation instead of the other object.
Example: Find the related object and display it as a link. Compare this to GRM above
which displays the related object as a string.
GRMREL(IMAN_specification,Dataset).secondary_object
GRMS2PREL Traversal using generic relationship management (GRM) rules, secondary-to-primary,
but stopping on the relation instead of the other object.
GRMS2PREL(IMAN_specification,ItemRevision).relation_type
Advanced traversal
REF(items_tag,Item).REF(item_master_tag,ItemMaster).user_dat
a_1
Example REF
Traverse to the:
Example REFBY
Example GRM
Example GRMS2P
• Item revision that is based upon this one, and then retrieve that revision's ID.
Change property label to DCP_BasedOn_Rev.
Example GRMREL
• Relation between it and a dataset, and then retrieve a link to the relation type.
• Relation between it and a dataset, and then retrieve the link to the dataset.
Example GRMS2PREL
Column configuration
Configuring tables
Declarative tables
All tables in the primary work area are part of the declarative page definition, which is detailed in the
view and view model for the page. There are some locations that are completely declarative (no XRT
style sheet) and so even the secondary work area tables are declarative.
In this example, the table on the left (primary work area) is a Table with Summary showing the results
of the search in a table format. You may also see these tables when viewing assemblies or other lists of
objects that are the focus of the page.
In declarative tables, you control which columns are available to your users and in which order they
appear, by using column configuration.
The majority of the tables in the secondary work area are part of an XRT style sheet definition, which is
detailed by the page's objectSet element, but some locations are fully declarative and do not use a style
sheet. Examine the HTML UI elements of the table in your browser if you are unsure of the table type.
Example:
Following is an example of an objectSet table viewed using the browser's developer tools. Notice
the use of objectSet and xrt in the class names. These provide clues that the table is an object set
table rendered using a style sheet (XRT).
In this example, the table on the right (secondary work area) is part of the Summary style sheet for the
selected object on the left. Part of that summary is a page showing Attachments which are displayed in
a table in the FILES section. These types of tables will display properties of (or properties of objects
related to) the object selected in the primary work area.
In object set tables, you control which columns are available to your users and in which order they
appear, by using column configuration.
Tip:
Optionally, you can define an style sheet table's initial configuration by defining it directly in the
objectSet XRT element using property tags. However, if the user makes lasting changes to the
table, a new column configuration is automatically created to manage the table and the objectSet
properties are ignored. If the user uses the Reset command in the Arrange panel , then it
will remove the column configuration and return to the original objectSet definition.
Siemens Digital Industries Software recommends using column configuration exclusively.
Yes. Both declarative and style sheet tables are capable of using faceted filtering as long as it's enabled
in the table and supported by the data provider.
If you are creating a custom declarative table, set isFilteringEnabled=true in your table definition to
enable filtering. As long as your data provider supports it, filtering will be enabled. Get more information
from the UI Pattern Library on Support Center.
Table properties
Table properties are mentioned here because they look like a table full of many properties, but really
they are a single property that contains a table. Creating a new property requires using the BMIDE to
make schema modifications to your database.
Normally, changes to the value of an edited table cell are saved as soon as the user leaves the cell. This
behavior is controlled by the Autosave Tables setting, which can be changed by the user at any time.
The AWC_Autosave preference controls the default value of this setting. Since this preference has a
User scope, you may control this behavior at the group, role, or user level.
Yes. In the table's definition, add the enablePropEdit attribute, and set it to false.
This disables the user's ability to automatically start editing on this table. If the user wants to make
changes to values on this table, they must start editing manually.
• With style sheets, this works in object set tables, name value pairs, and with table properties.. For
example:
• In a declarative table, you can specify either a static boolean value, or a condition:
"enablePropEdit": false
"enablePropEdit": "conditions.isNoneContextNotActive"
Get more information from the Active Workspace 6.0 UI Pattern Library on Support Center.
Column configuration:
• Allows you to set a table's initial configuration by site, workspace, group, or role.
Active Workspace provides two utilities, export_uiconfig and import_uiconfig, that you work with to
specify table column configurations. You can specify normal properties and dynamic compound
properties in your configuration.
Column configurations have an order of precedence based on their scope. A scope is an instance of the
column configuration that allows each user, group, or role to have their own personalized layout of a
table. Several tables may share a column configuration, and the changes made to one table are
reflected in the others.
GroupMember
This scope is created when a user manually modifies their column configuration. It overrides all
other scopes for that column configuration. This scope cannot be exported and can only be
removed by:
• The user using the Reset command in the column configuration panel.
This is the default column configuration for the site. This scope only takes effect if there are no
other valid scopes assigned to the user.
You can provide several column configuration arrangements for your users to choose
from
By giving the column configuration a name (using columnConfigName), your users see that
configuration as an option in their Arrange panel for the table. This allows you to create several column
configuration arrangements for each ID and the user can choose between them. Users can also create
their own custom column configuration arrangements for each table.
While you can associate many column configuration names with a single column configuration ID, there
must only be a single column configuration ID associated with a client scope or object set URI.
To modify an existing column configuration or to create a new definition, you must define it in an XML
file and then import it. Creating the XML definition is easiest if you export the existing column
configurations for reference, copy one, and then modify it for import.
Caution:
Siemens Digital Industries Software recommends not moving or replacing the first column in a
tree display. The object icon does not move from the first column.
It is recommended to export and save a copy of the default column configuration for reference before
making changes.
1. Use the export_uiconfig utility to generate an XML file containing the column configuration used
by Active Workspace.
2. Examine the column configuration definitions in the exported XML file. The table definitions
shown in the file depend on the features you have installed for Active Workspace. For example, if
you have the Active Content and Requirements features installed, the generated file contains table
definitions for these features.
3. Use the exported XML file as reference to create the column configuration for your Active
Workspace table.
You determine the scope to which your new definitions apply when you import the XML file.
Tip:
When importing or merging your column configuration, remember that any user that has
customized their table arrangement has their own GroupMember column configurations and
they will not see your new configurations until they use the Arrange panel to choose a new
arrangement. You may delete all configurations for your target scope before you import by using
the delete_uiconfig utility.
.
Your column configuration definition gives you the following benefits. You may:
Note:
Column filtering is available in the Home folder primary work area tables, and in all style sheet
tables.
Use the import_uiconfig utility with the -action=merge option to add new columns to an existing
configuration without having to redefine the existing columns. Any columns you specify will be
appended to the end of the table. If they already exist in the definition, they will be moved into the new
position.
Export and save a copy of the default column configuration for reference before making changes.
If there were an existing column configuration in the database with four columns defined as follows:
...
<ColumnConfig sortDirection="Descending" sortBy="1" columnConfigId="sampleColConfig">
<ColumnDef propertyName="object_name" ... />
<ColumnDef propertyName="release_status_list" ... />
<ColumnDef propertyName="fnd0InProcess" ... />
<ColumnDef propertyName="ics_subclass_name" ... />
</ColumnConfig>
...
You could create a new XML definition containing two columns and then merge this into the existing
configuration:
...
<ColumnConfig sortDirection="Descending" sortBy="1" columnConfigId="sampleColConfig">
<ColumnDef propertyName="release_status_list" ... />
<ColumnDef propertyName="object_desc" ... />
</ColumnConfig>
...
If you then export this configuration, your final column configuration would look as follows:
...
<ColumnConfig sortDirection="Descending" sortBy="1" columnConfigId="sampleColConfig">
<ColumnDef propertyName="object_name" ... />
<ColumnDef propertyName="fnd0InProcess" ... />
<ColumnDef propertyName="ics_subclass_name" ... />
<ColumnDef propertyName="release_status_list" ... />
<ColumnDef propertyName="object_desc" ... />
</ColumnConfig>
...
The first configuration file contained four column definitions and the second contained two. The final
configuration only contains five column definitions because the release_status_list column was
present in both original XML files and is not duplicated, so it only exists once in the final column
configuration. Notice how it moved from being the second column to being the fourth.
You can also use the merge option to change the hidden, filterable, or width options for a column, but
because of the column re-ordering, you might consider importing without using the -action=merge
option so you can replace the configuration completely.
Tip:
When importing or merging your column configuration, remember that any user that has
customized their configuration has their own GroupMember column configuration and they will
not see your new configuration until they use the Reset command in the Arrange panel .
You may delete all configurations for your target scope before you import by using the
delete_uiconfig utility.
The XML file for column configuration consists of any number of column configurations and column
configuration references. A column configuration specifies which columns are displayed, while a
column configuration reference simply points to an existing column configuration, allowing multiple
tables to share a common configuration.
<Import>
...
</Import>
<Import>
<Client>
This element contains the name and abbreviation of the client which will use this definition. At this
time, the only valid client is Active Workspace.
abbreviation AWClient
name AWClient
<ClientScope>
This element wraps the column configuration and identifies the URI to which it applies.
To discover a state's client scope URI, examine the page's CTX object.
Example:
In this example, the My Tasks sublocation has a clientScopeURI of
fnd0mytasks.
<ColumnConfig>
When the client asks for a column configuration, this element defines the response. Internally, it either
contains a list of column definitions, or a reference to another column configuration. Either way, the
client does not know the difference.
columnConfigId The unique identifier of the configuration being defined. Each client scope
or object set URI can have only one column config ID associated with it.
columnConfigName The user-facing name of the configuration. Setting this attribute will add
(optional) this configuration to the users' Arrange panel, as a selectable choice. You
can define multiple named configurations for each columnConfigId.
Design Intent:
When you specify a named column configuration, it is always a site
configuration. Any command-line arguments specifying any other
sortBy Specify the column by which the table is initially sorted. Valid values are:
<ColumnDef>
This element specifies which property is to be displayed and must only be contained within a
<ColumnConfig> element. Each row of this column is a property taken from an object in the table.
columnName The TextServer key for the display name of the column. If this key string is
not found in by the TextServer, it will be displayed as-is by the UI.
Caution:
Only use custom column names for dynamic compound properties.
Do not override the names of real properties.
filterable Controls filtering for this column. The type of filter shown to the user will
depend on the data type of the column. Dates and numbers are
automatically detected and will allow a range filter, but everything else is
treated as a string.
<ColumnDef columnName="object_name"
filterable="false" ... />
hidden If set to true, this column will not be displayed, but will be available for the
user to display if they want.
<ColumnDef columnName="object_name"
hidden="true" ... />
objectType The type of object for which this column is valid. The column will only
appear if every object in the table is a valid objectType or one of its
children in the server-side POM.
Example:
ItemRevision will display Documents, Designs, Parts, and so on,
but not files. Dataset would show all file types, but not item
revisions. WorkspaceObject shows all normal objects, like item
revisions, files, folders, and so on.
Caution:
Avoid specifying the same column property twice if the types have a parent-child relationship.
Table columns do not display duplicate names in column definitions.
For example, if Schedule is a child type of MyItem, and the item_id is defined for both the
MyItem parent type and the Schedule child type, only one of these columns can be displayed in
the table.
Tip:
Active Workspace is designed primarily to display item revisions. If you decide to display an item,
the item_id property of the item will not be available by default. You must add the
awp0Item_item_id property to your column configuration XML file.
<ColumnConfigRef>
Use this tag instead of <ColumnConfig> when you want to share an existing configuration. The same
configuration will be shared by all URI locations that reference it. Changes made to the configuration
from one URI location will be reflected in all other locations.
In this example, you search for hard drive and then examine the search results when viewed in the table
format.
There are two pieces of information you need to determine which column configuration is used to
display the table; your current page and the configuration identifier. Both can be retrieved by using your
browser's developer tools to examine the context object.
• clientScopeURI
The current page, or client scope URI in this example, it is the Awp0SearchResults URI.
• columnConfigId
The column configuration identifier is part of the message for the network call that populates the
table. In this example, the performSearchViewModel3 call shows the searchResultsColConfig
identifier.
You might see a different version of the performSearchViewModel call, but the content will be
similar.
With the client scope URI and the ID of the column configuration, you can locate the definition of the
column configuration. Column configurations can be imported and registered for the Site, Group, Role,
and Workspace levels in addition to the Groupmember level created by the user in the UI. Be sure to
export the right one. Following is an example of the search result column configuration shown in the
exported XML file:
The column configuration associated with the search result table is a reference to another column
configuration, the Awp0ObjectNavigation URI. This is the configuration that you see in the search
results table. Following is an example of the object navigation column configuration:
There are 16 columns defined in this configuration, from object name and description, down to
published object creation date and type. They will appear in this order by default in the client.
Tip:
The object navigation page is the generic page used by Active Workspace when displaying a
generic object, like a folder for example. These two pages share a column configuration. When
one is modified, the other is affected as well.
The search produced multiple results, shown here in the table format. The objects returned are of
differing types, some are item revisions, some are files, and so on.
Even though there are 16 columns defined for this column configuration, you only see 6. That is
because the other 10 properties do not exist on all the different object types. For example, files do not
have an item ID or revision ID property, so that column is not displayed.
When using column configuration in an object set, all columns are shown regardless of type.
If you filter the results to show only Item Revisions, the ID and Revision columns appear, because all
the listed objects have that property.
After the column configurations have been created and stored in the system, the end user can modify
their column layout to a certain extent using the Active Workspace interface. They can:
• Change where the column freeze begins. Anything to the right of the frozen columns will scroll
horizontally if needed. The frozen columns will stay in place when the user scrolls to the right.
If the user does change which column is frozen, this change does not persist. If they navigate away
and come back, or even refresh the page, the frozen column returns to its original definition.
Tip:
All of the user's changes are stored in the Teamcenter database at the groupmember level (the
specific combination of user and their group/role). The import_uiconfig and export_uiconfig
utilities do not work with groupmember configurations. To clear a groupmember configuration for
a page, the user must go to the page as the correct group and role, and then use the Arrange
panel to Reset their configuration.
You can delete all configurations for all users for a specific page or scope by using the
delete_uiconfig utility.
Tables placed in the UI by style sheets (using the objectSet element) can only be located in the
secondary work area. A few of the most common examples of object set tables are:
The source attribute of an object set not only filters all related objects down to the few you wish to
highlight for a given purpose, showing the user only what they need to see at that time, but also
restricts the creation of objects and their relations to the source combinations.
Example:
You want to create a table in which the user will only see word files that have the Attaches
relation and PDF files that have the manifestation relation.
source="TC_Attaches.MSWordX,IMAN_manifestation.PDF"
This also has the benefit of showing the user only the Word and PDF types when they add new
objects to the table. If the user chooses to add a word object to the table, then they can only
choose the Attaches relation.
The initial list of properties and the column layout of object set tables is defined in one of two ways:
• Or assign an objectSetUri to the object set definition and define a corresponding column
configuration to it.
Either way, when the user makes a change to the table layout, a new column configuration is created to
manage their new layout. They can load any existing column configuration for that table by selecting an
Arrangement.
Column configuration
To configure your objectSet table's columns using column configuration, add the objectSetURI attribute
to the table display element, and then treat it like a declarative table for everything else. Use your
objectSetURI as if it were a clientScopeUri when you define the column configuration.
<tableDisplay objectSetUri="myObjectSetTableConfig">
</tableDisplay>
The column configuration will provide the table's initial property layout and track any changes the user
makes to the table in the UI, like arranging or hiding columns for example.
Property element
Optionally, you can define a style sheet table's initial configuration by defining it directly in the
objectSet XRT element using property tags. However, any changes to the table made by the user are
then managed by column configuration.
When Active Workspace uses XML rendering templates (XRT), also known as style sheets, to render a
table of objects and their properties, it takes its cues from the <objectSet> element.
The objectSet XRT element models its table data using several runtime business objects, organized by
the Awp0XRTObjectSet object.
You want to create a table to display the following when a user selects a DocumentRevision:
You create a style sheet entry for the DocumentRevision with an objectSet which uses
TC_Attaches.MSWordX and IMAN_manifestation.PDF as the sources. Following is a simplified
example:
When a user selects a document revision, Active Workspace renders the associated table as follows:
→ Awp0XRTObjectSetColumn → object_string
Awp0XRTObjectSet → Awp0XRTObjectSetColumn → object_type
→ Awp0XRTObjectSetColumn → owning_user
2. It then creates an Awp0XRTObjectSetRow for each object found that matches the source, in this
case, two. Each row references its target object with the awp0Target property.
3. Each row retrieves its target object's icon along with the properties specified by the column objects.
Caveats
The Awp0XRTObjectSetRow displays the base type icon of the awp0Target object. It does not consider
icons assigned declaratively. If you wish to display a different icon, you may dynamically assign an icon
to the Awp0XRTObjectSetRow based on what it is pointing to.
The Awp0XRTObjectSetRow does not have access to properties not defined at the source level. For
example, if you specify:
source="IMAN_reference.ItemRevision"
The table will display all ItemRevision objects attached as a reference, including any child types like
DocumentRevision, DesignRevision, and so on. However, if you added the following to the table's
properties:
<property name="DocumentTitle"/>
It would not be able to find it on related DocumentRevisions, because that property is not defined a the
ItemRevision level. In order for the object set to know about the property, you would have to modify
the source to include the object where the property is defined.
source="IMAN_reference.ItemRevision,IMAN_reference.DocumentRevision"
Normally the object set table retrieves the source objects and displays them, even if the source object is
an item type. However, if you want the table to dynamically show a configured revision of the item
instead of the item itself, you must set showConfiguredRev attribute to true in the objectSet
definition.
If showConfiguredRev="true" and one of the sources specified is an item type, the table still keeps track
of the item; it merely displays the configured revision. In this case:
• When a user cuts or copies a configured revision, it is the underlying source item that is acted upon.
• If a revision of a specified item type is pasted, the associated item is pasted instead.
• If the user pastes a specified item type, the item will be pasted, but the appropriate revision will be
displayed.
Many of the tables and folders in Active Workspace are already configured for this behavior, but this is
not the default behavior. If you create a custom table you must set showConfiguredRev="true" in your
object set definition.
Example:
Following is an excerpt from the style sheet of the folder summary page:
Data providers
Data providers are subclasses of the Fnd0BaseProvider business object. In Active Workspace, they can
be specified as the source of an objectSet.
Example
<objectSet source="Fgf0ParentPartitionsProvider.Ptn0Partition"
defaultdisplay="listDisplay"
sortby="object_string"
sortdirection="ascending">
Default relations
In Active Workspace, when a user creates a new attachment using a table, the relation is chosen using a
combination of Teamcenter's default paste relation preferences and the table's definition.
The source="..." attribute of the <objectSet> tag not only filters the related objects which are displayed
on the table, but also defines the list of allowed relations for new objects. Object-relation pairs that are
not defined in the <objectSet> are not allowed when adding to a table.
Following is the priority used when determining the relation of a newly attached object.
1. If the type1_type2_default_relation preference exists, and the relation specified in the value also
matches a relation defined in the table, then use it.
2. If not, then check the type1_default_relation preference. If it exists and its value specifies a
relation defined in the table, then use it.
3. If neither of the preceding were successful, then set the relation to the first value defined in the
table.
Example
ItemRevision_default_relation = IMAN_specification
ItemRevision_DirectModel_default_relation = IMAN_Rendering
ItemRevision_MSWORD_default_relation = TC_Attaches
To allow the user to modify the relation of an attachment in an objectSet, you must add the
modifiable="true" attribute to the relation property tag. For example:
<objectSet source="IMAN_specification.Dataset,IMAN_reference.Dataset,
IMAN_manifestation.Dataset, IMAN_Rendering.Dataset"
defaultdisplay="listDisplay" sortby="object_string" sortdirection="ascending">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="relation" modifiable="true"/>
<property name="release_status_list"/>
</tableDisplay>
<thumbnailDisplay/>
<listDisplay/>
</objectSet>
Doing this allows the user to change the relation type using a drop-down list.
To disable this ability, remove the modifiable attribute from the property tag.
<objectSet source="IMAN_specification.Dataset,IMAN_reference.Dataset,
IMAN_manifestation.Dataset, IMAN_Rendering.Dataset"
defaultdisplay="listDisplay" sortby="object_string" sortdirection="ascending">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="relation"/>
<property name="release_status_list"/>
</tableDisplay>
<thumbnailDisplay/>
<listDisplay/>
</objectSet>
Normally when retrieving related objects, you start with the primary object, and look for a secondary
object attached with a certain relation. This is called a primary-to-secondary relation. When defining the
source of an objectSet, this is the default behavior.
Secondary-to-primary relations
Active Workspace also allows you to retrieve a related primary object from a secondary object. This uses
the same relation but in the opposite direction, and is called a secondary-to-primary relation (S2P), also
commonly called where-referenced information.
Retrieving primary related objects in an objectSet table is accomplished by adding S2P: in front of the
relation type.
Example
If there is a Design Revision which has a Document Revision related to it using the References
relation, you can show the related Design Revision in an objectSet from the Document Revision XRT
as follows:
If you want to display a table of properties from objects that are more than a single relation away, you
must use dynamic compound properties (DCP) in your source attribute.
You can use any combination of DCP and regular source clauses in a comma-separated list. Pagination,
sorting, filtering, and editing are supported on tables using DCP source attributes.
Warning:
In object set tables, authoring commands like Add to, Paste, Delete, and so on are not supported
when you use DCP in your source attribute. Sometimes these commands might still be available
on the right wall toolbar, but they are not supported.
Because the source attribute is expecting objects, the DCP must point to an object, relation, or a
reference to an object. It cannot point to a regular property.
Example:
SUPPORTED — A DCP source pointing to a typed or untyped reference or an untyped relation:
This returns the owning_user typed reference which would point to a User object.
Example:
SUPPORTED — A DCP source resolving a reference, pointing to the target object, but without a
property at the end:
This returns the User object for the owner of the item, but doesn't specify a property.
Example:
NOT SUPPORTED — A DCP source pointing to a normal property.
<objectSet source="REF(items_tag,Item).REF(owning_user,User)
.user_name" >
This returns user_name, which is a string value from the User object, and will be ignored by the
source attribute.
Supported syntax
You can use the following DCP syntax types in your source attribute, including multiple-level traversal:
Full example
In this example object set table, from the item revision you want to show the datasets of related
documents without forcing the user to navigate through the document revisions.
Follow any specification relations to any document revisions, then follow any attaches relations to any
datasets.
<objectSet
source="GRM(IMAN_specification,DocumentRevision).GRM(TC_Attaches,Dataset)" ...>
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
...
</tableDisplay>
...
</objectSet>
Your table shows the properties of all datasets attached to documents that are related using the
specification relation.
A table property might seem like a table containing multiple properties, but it is actually a single
property containing a table of values.
Table A table property is a persistent table of property values stored on a single object. You
property can think of it like a spreadsheet as a single property.
Object set An object set is a runtime table of properties where each row is a set of properties from
a separate object.
Note:
Information on creating table properties is found in Configure your business data model in BMIDE
in the Teamcenter Help.
Example
You want to display a table property c9myTestTable that is defined on a custom business object
C9TestItemRevision.
The individual properties are stored on a child of the Fnd0TableRow object, in this example
C9myTableRowObject.
To display the table property in Active Workspace, use the tableProperty element in your custom Active
Workspace summary style sheet. For example:
XRT files use the XML format. They are used to configure layout in Teamcenter clients, including Active
Workspace, based on object type, group, and role. XRT files are also commonly referred to as style
sheets; however, they neither follow CSS or XSL standards, nor do they perform transformations.
In Active Workspace, XRT files control areas such as the secondary work area and the tools and
information panel.
AWC_<type-name>.*RENDERING
The value of the preference points to a style sheet dataset name, which is used by the Active Workspace
XRT renderer to produce the UI. Create a copy of an OOTB style sheet for your custom layout, and then
modify or override the preference value to use your new dataset instead. Use the XRT Editor to assist in
editing style sheets.
Although Active Workspace uses XRTs like the other clients do, there are some differences:
• Active Workspace XRT rendering preferences include AWC_ as a prefix to the preference name,
allowing for the assignment of style sheets that are unique to Active Workspace.
For example, normally the ItemRevision.SUMMARYRENDERING preference registers the XRT used
for the summary display for the ItemRevision in all clients, but there is also an
AWC_ItemRevision.SUMMARYRENDERING preference that overrides it for the Active Workspace
client, allowing a separate XRT for Active Workspace. The Active Workspace XRTs typically have an
Awp0 prefix when compared to the generic XRTs.
• Layout of Active Workspace XRTs in landscape mode is wide compared to the rich client and therefore,
requires multiple columns.
• When creating copies of the out-of-the-box XRT files for Active Workspace, create the XRT files with
unique names and assign them using the AWC_<type-name>.*RENDERING preferences.
• Active Workspace can share XRT files with the rich client for the Summary tab. The default summary
XRT preference for Active Workspace is AWC_ItemRevision.SUMMARYRENDERING. If you remove
this preference, Active Workspace uses the default summary XRT preference used by the rich client:
ItemRevision.SUMMARYRENDERING.
• If you do not want to use the header on the overview page, you can remove it from the XRT files used
by the AWC_<type-name>.SUMMARYRENDERING preferences.
This is always a percentage, even if the percent sign is not used. This is a percentage of the overall
screen width. When the column percentages add to less than 100%, Active Workspace will not fill.
When the column percentages add to more than 100%, Active Workspace will place overflow
columns on a new row.
• Labels
• Breaks
Note:
Embedded task actions replace the Perform Task button in the Task Overview. For customers
with custom style sheets that wish to retain the perform command in place of the embedded
actions set the WRKFLW_Hide_Perform_Task_Command_ToolAndInfo preference to false. The
default value is true.
The Active Workspace information panel displays details about the opened object and is accessed by
clicking the button.
Information panel
You use XRT datasets to configure the layout of the information panel. By default, there is an XRT
dataset for WorkspaceObject and ItemRevision object types. To modify the information displayed in
the information panel for other types, you must create an XMLRenderingStylesheet dataset, attach an
XML file to it, and then create a preference to point to the dataset. The XRT is registered using the
AWC_<type-name>.INFORENDERING preference.
Tip:
You can copy an existing XRT dataset and rename it rather than create a new one. Find
existing XRT datasets in the rich client by searching for XMLRenderingStylesheet dataset
types. Then copy an existing XRT dataset by selecting it and choosing File→Save As. Make
sure you change the named reference file attached to the dataset to point to a unique file
name.
• Keep it simple. Do not make the layout the same as the summary or overview pages.
• Active Workspace supports multiple pages with the visibleWhen tag, sections, and objectSet
tables (use the tile/list mode to fit the narrow display).
• The XRT used in the user interface is based on the selected object’s hierarchy. For example, if you
select an Item object type, but it does not have an XRT associated with it, the XRT for
AWC_WorkspaceObject.INFORENDERING is used because an Item is also a WorkspaceObject.
3. Use the rich client to create a preference using the following parameters:
If you want to have different style sheets in Active Workspace than you have in other Teamcenter
clients, you can create AWC_ preferences in the rich client to tell Active Workspace which style sheet to
use. This has no effect on the other clients or on any customer-created style sheets.
2. Attach the XRT style sheet to the new dataset as a named reference.
• Name:
AWC_<type-name>.SUMMARYRENDERING
AWC_<type-name>.CREATERENDERING
AWC_<type-name>.INFORENDERING
AWC_<type-name>.REVISERENDERING
AWC_<type-name>.SAVEASRENDERING
For example:
AWC_WorkspaceObject.INFORENDERING
When rendering style sheets, Active Workspace first searches for AWC_<type_name>.
[SUMMARYRENDERING, CREATERENDERING, ...]. If no match is found, it searches for <type-name>.
[SUMMARYRENDERING, CREATERENDERING, ...]. If it still does not find a match, it continues with the
standard lookup mechanism for style sheets.
It is possible to register style sheets to a specific location, sublocation, or object type in Active
Workspace.
type.location.sublocation.SUMMARYRENDERING
• location specifies the location in the UI. For example, if the context is
com.siemens.splm.clientfx.tcui.xrt.showObjectLocation, then the location is
showObjectLocation.
• sublocation specifies the sublocation in the UI. For example, if the context is
com.siemens.splm.client.occmgmt:OccurrenceManagementSubLocation then the
sublocation is OccurrenceManagementSubLocation.
As with normal registration preferences, the value of this preference is the name of the dataset. When
rendering a page, the system will search for the most specific case to the most general.
• type.location.sublocation.SUMMARYRENDERING
• type.location.SUMMARYRENDERING
• type.SUMMARYRENDERING
If none of the above preferences are found for the object, the immediate parent type will be searched in
the same manner. This process continues until a match is found.
It is possible to use the <inject> tag to refer to another XMLRenderingStylesheet dataset that
contains a block of XML rendering tags. This XML rendering style sheet would be incomplete on its own,
normally containing only a single page or section, but they allow a modular approach to style sheet
design and maintenance.
In the example below, a second XMLRenderingStylesheet dataset exists with the name myXRTblock.
If the preference contains multiple values, then each dataset will be located and injected in order.
As well formed XML files must have a root node in order to be well-formed, the XRT you inject must be
wrapped in a <subRendering> element.
<subRendering>
<label text="This text will get injected."/>
</subrendering>
Someone leveraging injection must think about the resulting XML file, so that the resulting XRT will be
correct. The injection mechanism does not make any assumptions about where it is injecting data.
Tip:
• Using a large amount of <inject> elements in your XML rendering templates can negatively
impact the performance of the client.
• Avoid using visibleWhen to check object types in an XRT. The object type is determined when
the XRT is registered. Do not attempt to create a single, over-arching XRT for all object types.
Conditional content
visibleWhen
Active Workspace supports the visibleWhen attribute for the following tags:
• <content>
• <page>
Note:
To test logical (Boolean) values, compare to true first, then if not true and not NULL, it is false. Use
Y, YES, T, TRUE, 1, or ON to match true.
Verify the property type you are comparing. Some object properties, like Owning User for
example, are reference properties, not strings.
In the Business Modeler IDE Operation Descriptor tab, it is possible to set a property to be both hidden
(Visible=false) and required (Required=true). This allows for a rare scenario where a custom client
programatically populates the property during the operation without prompting the user for input, and
yet won't allow the operation to continue if the client is unable to populate the required property.
For operations that use an Operation Descriptor, the Active Workspace XML rendering template (XRT)
processor does not automatically fill in all missing required properties, nor does it display any properties
which are hidden by the descriptor, even if they are requested by the operation's XRT.
In this special case, the Active Workspace client will not allow the operation to continue because the
required property cannot be populated.
To avoid this behavior, either change the property to be visible in the Business Modeler IDE Operation
Descriptor tab, or remove the property from the operation's XRT.
nameValueProperty
Name-value properties are a specialized form of the table property designed for name-value pairs.
To display a name-value property in Active Workspace, use the nameValueProperty tag instead of the
objectSet tag in your custom Active Workspace summary style sheet.
Attributes
name (required)
Give the name-value property a name.
source (optional)
Specifies the related object from which to retried the name-value property. You must use dynamic
compound properties to specify a source.
enablePropEdit (optional)
Set this to false to disable the user's ability to automatically start editing on this table. If the user
wants to make changes to values on this table, they must start editing manually.
Use the <property> element inside the <nameValueProperty> element. You must use the fnd0Name
and fnd0Value properties.
Example:
<section title=...>
<nameValueProperty
name="myNVProp">
<property name="fnd0Name"/>
<property name="fnd0Value"/
>
</nameValueProperty>
</section>
Summary
Examples
Example:
This example shows a name-value property on the selected object.
<nameValueProperty name="aw2_NameValue_Pair">
<property name="fnd0Name"/>
<property name="fnd0Value"/>
...
</nameValueProperty>
Example:
This example uses DCP to show a name-value property on a related object.
<nameValueProperty source="REF(IMAN_specification,AW2_NameValueRevision)"
name="aw2_NameValue_Pair">
<property name="fnd0Name"/>
<property name="fnd0Value"/>
...
</nameValueProperty>
The ItemID and ItemRevID properties are not displayed by default on the SAVEASRENDERING.
If you are using multiple naming rules for either of these properties, they must be added to the style
sheet.
As an administrator, you can add the ability to send a business object to a workflow while creating the
business object. To do so:
1. In Business Modeler IDE, locate the required business object, for example, ItemRevision.
4. In My Teamcenter, locate the XML rendering style sheet for the business object. For example,
locate the Awp0ItemCreate style sheet for the ItemRevision business object.
5. In the Viewer tab, add the following property to the style sheet:
<property name="revision:awp0ProcessTemplates"/>
6. Click Apply.
7. In Business Modeler IDE, locate the business object, click Operation Descriptor→CreateInput, and
verify that the awp0ProcessTemplates property is added.
This ensures that users can submit business objects to a workflow while creating the objects.
In Active Workspace, you can create a new form XML rendering style sheet to render only those form
properties you want to display.
There are three possible property display configurations for form style sheets in Active Workspace:
• To display only the properties belonging to that form type, use the following tagging:
<all type="form"/>
• To display the properties of the form type and include properties from objects in the form type's
hierarchy, use the following tagging:
<all type="property"/>
By default, if there is no style sheet defined for the form type, the default style sheet is loaded, which
includes the configuration for including all properties, for example:
<rendering>
<page titleKey="tc_xrt_Summary">
<all type="property"/>
</page>
</rendering>
• To display only the properties defined in the page tag, use tagging like the following:
<page>
<property name="property-1"/>
<property name="property-1"/>
<property name="property-1"/>
</page>
Tip:
For examples of Active Workspace form templates, see the Awp0FormSummary and
Awp0FormInfoSummary XML rendering style sheet datasets. (They use the
AWC_Form.SUMMARYRENDERING and AWC_Form.INFORENDERING preferences.)
The <htmlPanel> tag supports URL and HTML content to be included in an XML rendering.
• <htmlPanel> can be specified as a child tag in <page>, <column>, and <section> tags.
Note:
The <htmlPanel> tag is supported only in Active Workspace XML renderings.
• The URL and HTML content can have the value of properties of the currently selected object
introduced into them. This technique is known as data binding.
Instead of embedding HTML directly into an XRT, it is possible to use the <inject> tag to refer to an
HTML dataset instead. There are two methods of specifying which HTML dataset is to be used. The HTML
dataset must contain only valid HTML code, with no XML style sheet tags.
In the example below, an HTML dataset exists with the name myHTMLblock.
If the preference contains multiple values, then each dataset will be located and injected in order.
Caution:
Uncontrolled JavaScript code included in the HTML panels can be used to exploit a security issue or
other network policy violation. System administrators must exercise care to ensure the XML
rendering preferences, datasets, and any WAR build changes are monitored and require DBA level
access.
Specifying a URL
The src attribute is used to specify the fully qualified URL as the source of the content to display in a new
iframe.
• The src attribute can be complete or can contain references to various properties in the currently
selected object.
<htmlPanel src=”https://www.mycorp.com/info”/>
To display the contents of the given URL with the current value of the item_id property used as the ID in
the URL query:
<htmlPanel src=”https://www.mycorp.com/info?
id={{selected.properties[‘item_id’].dbValue}}”/>
If the item_id property for the selected object is Part 1234, the final <iframe> tag is encoded as:
<iframe src=”https://www.mycorp.com/info?id=Part%201234”/>
Note:
The resulting URL is made safe—all characters are encoded to assure they are valid for a URL.
For example, any space characters in the property value for the object are encoded as %20 in the
final URL.
HTML content in an <htmlPanel> entity can be rendered by using the declarativeKey property. In the
following example code snippets, the itemIdObjectStringView.html declarative view will be inserted.
Just like any other declarative view, there must be a corresponding declarative view model file along
with any other supporting files that may be needed.
Note:
These snippets are provided for reference only, and are not designed to be production-ready code.
htmlPanel
<htmlPanel declarativeKey="itemIdObjectString"/>
itemIdObjectStringView.html
<aw-panel>
<aw-label prop="data.objectString"></aw-label>
<aw-label prop="data.itemId"></aw-label>
</aw-panel>
itemIdObjectStringViewModel.json
{
"schemaVersion": "1.0.0",
"imports": [
"js/aw-panel.directive",
"js/aw-label.directive"
],
"data": {
"itemId": {
"displayName": "Item Id",
"type": "INTEGER",
"isRequired": "false",
"dbValue": 1075,
"dispValue": 1075
},
"objectString": {
"displayName": "Object String",
"dispValue": "Displaying object string value"
}
}
}
To call a Teamcenter service from an htmlPanel, create a simple view and a view model to perform the
service call as an action.
In the following code snipped example, the view defines two buttons; checkItOut and checkItIn. Only
one button is displayed at a time because of the visible-when conditions. When these buttons are used,
actions associated with the action attribute of the aw-button element is called. This action is defined in
the view model to make the requested Teamcenter service call and will also display the messages
associated with the service call's success or failure.
Note:
These snippets are provided for reference only, and are not designed to be production-ready code.
htmlPanel
htmlPanelCallTcServiceView.html
<aw-panel>
<aw-button action="checkItOut"
visible-when="selected.properties.checked_out.
dbValue==''">Check Out</button>
<aw-button action="checkItIn"
visible-when="selected.properties.checked_out.
dbValue!=''">Check In</button>
</aw-panel>
htmlPanelCallTcServiceViewModel.json
{
"schemaVersion" : "1.0.0",
"imports": [
"js/aw-panel.directive",
"js/aw-button.directive",
"js/visible-when.directive"
],
"data": {},
"actions": {
"checkItOut": {
"actionType": "TcSoaService",
"serviceName": "Core-2006-03-Reservation",
"method": "checkout",
"inputData": {
"objects": [
{
"uid": "{{ctx.selected.uid}}",
"type": "{{ctx.selected.type}}"
}
]
},
"outputData": {
"checkOutPartialErrors": "partialErrors"
},
"actionMessages": {
"success": [
{
"message": "checkoutSuccess"
}
],
"failure": [
{
"condition": "(ctx.selected && ctx.selected.length
=== 1)",
"message": "checkoutFailure"
}
]
}
},
"checkItIn": {
"actionType": "TcSoaService",
"serviceName": "Core-2006-03-Reservation",
"method": "checkin",
"inputData": {
"objects": [
{
"uid": "{{ctx.selected.uid}}",
"type": "{{ctx.selected.type}}"
}
]
}
}
},
"messages": {
"checkoutSuccess": {
"messageType": "INFO",
"messageText": "Checkout Successful",
"messageTextParams": [
"{{ctx.selected.length}}",
"{{ctx.selected.length}}"
]
},
"checkoutFailure": {
"messageType": "ERROR",
"messageText": "Failed to checkout",
"messageTextParams": [
"{{ctx.selected[0].props.object_string.uiValues[0]}}",
"{{data.checkOutPartialErrors[0].errorValues[0].message}}"
]
}
},
"functions":
{
},
"conditions":
{
},
"i18n":
{
}
}
Data binding
Data binding is a way to connect the current property values of an object model to attributes and text in
an HTML content view.
A section of HTML to be replaced with some other value is enclosed in double braces, {{xxxx}}, with xxxx
indicating a reference to a property in the current scope object.
In addition to standard HTML tags such as <b>, for bold text, and <br> (to force a line break), XML
rendering can use new specialized tags to simplify the work to display and edit Teamcenter data. This
new tag reduces the amount of HTML required to accomplish common tasks.
<aw-property>
The <aw-property> custom tag is used to simplify label and value display for Teamcenter properties. It
also handles the editing of these properties when appropriate.
You can use the <aw-property> tag to display all supported Teamcenter property types including single
and multiple values, images, object sets, and object references.
• prop
For labels and values, this required string attribute specifies the property to display. This attribute
supports data binding value substitution.
• hint
This optional string attribute specifies variations in the way a property is displayed.
The valid values are:
• label
• objectlink
• modifiable
This optional Boolean attribute specifies whether the property can be modified during edit
operations. It applies only when the property is otherwise editable.
<aw-frame>
The <aw-frame> custom tag is used to simplify displaying URL contents in an iframe. It supports a
single src attribute.
The <aw-frame> attribute inserts HTML structure and CSS styling to correctly display the iframe using
the full width and height available in the page, column or section in which it is placed.
• Some browser, site, and network settings prevent some scripts from running if they come from a
location other than the root location of a page.
This capability, also called cross-site scripting, is a potential source of network attack.
This tag supports the following attribute:
src
This required attribute specifies the URL to be displayed in the iframe.
The src attribute supports data binding value substitution.
Creators of HTML content are free to specify their styling in their application. However, all existing Active
Workspace CSS styling selectors are available for use in HTML content contributed by the <htmlPanel>
tag. Use these existing styling selectors to save time and ensure UI consistency.
You must use the command-line development environment to build and publish all your Active
Workspace customization changes.
In this example, you create a Customization Help command that opens the Siemens Web Framework
API documentation. You want this new command to be displayed in the same location as the default
help command, but you do not want it to be displayed for all users. In addition to the new command
name, you will change several other things:
Note:
This is an overview of using the Active Architect tools. It is designed to be a high-level reference
of the process. The individual steps are covered in greater detail later in this guide. If you are
already familiar with Active Workspace customization, you may be able to follow along.
To open the Command Builder location, you must be in the Active Architect workspace and you must
be connected using dev mode which means your URL contains the ?dev query.
Search for the existing Help command, and then use Save As to make a copy. Give your new command
a descriptive name, like myCustomHelp.
Your new command is an exact copy of Awp0Help. Remove the references to the existing localization
keys and then create your own. Leave the placements as they are.
Create a new action by changing the name to something unique, like showCustomHelp, and then open
your new action using Action Builder.
Add the URL for your new destination and configure it to open in a new window.
You don't want your new command to appear in other workspaces. Edit your custom workspace
definition files to exclude the command, or use workspace contribution files to modify the provided
definitions.
Contributing to the Author workspace is shown. In this case, since it uses excludedCommands, you
must create a contribution file to exclude your new command so it does not display in this workspace.
If you don't already have a declarative module, create one. Export your changes from Active Architect
into your new module.
Run the awbuild script to build the new client and push it over to the default production file repository.
Remove the dev mode query from your URL to see the production environment.
Notice that your new help command is not available in the Author workspace, but once you switch to
the Active Architect workspace, your custom command appears.
Using the Active Workspace development environment with the microservices framework requires
knowledge of how the gateway architecture is designed and how its components work together.
Note:
Not all communication goes through the microservices yet. Some functionality still
communicates directly to Teamcenter.
File Repository
A web-based file storage system. It stores both the baseline Active Workspace application web site
and the declarative artifact service overlays in two separate repositories.
Declarative Artifact Service
Manages any changes made by Active Architect's UI builder tools, like Command builder, Panel
Builder, and so on. The changes are stored in the file repository separately from the production site.
When you use the development mode of Active Workspace, those changes are overlayed onto the
production site.
Active Workspace Client
The STAGE directory, which is used for local development and builds.
Teamcenter GraphQL
An experimental assistant for Active Workspace which helps locate and consolidate data.
Teamcenter
The entirety of the 4-tier Teamcenter architecture. The Active Workspace application communicates
with Teamcenter as a 4-tier client.
What is happening?
This is how your regular users will connect to perform their everyday work.
The user connects to the gateway service using port 3000. They experience the Active Workspace site as
it exists in the file repository without seeing any changes from Active Architect or the local development
site.
• The gateway retrieves the Active Workspace site from the file repository.
• Any changes managed by the declarative artifact service or created in your local developer
environment are not displayed.
What is happening?
A user would connect using developer mode if they want to make or test changes made with the Active
Architect workspace tools.
The user connects to the gateway service using port 3000, but adds the ?dev query string in the URL to
activate developer mode. They experience the Active Workspace site as it exists on the file repository,
plus any changes that have been made using the UI builder tools, like Command Builder, Panel
Builder, and so on.
• The gateway requests the Active Workspace configuration from the declarative artifact service.
• The declarative artifact service retrieves and overlays its stored configuration deltas onto the full site.
• If the user has administrative privileges and has access to the Active Architect workspace they can
use the UI builder tools to make changes to the UI.
• Any changes made to the UI using the UI builder tools are stored by the declarative artifact service in a
separate section of the file repository as adds or deltas. No changes are made to the full site file
repository.
What is happening?
Use this mode when you want to verify your local declarative modules. You will not see any current
Active Architect changes stored in the Darsi repository.
The user connects to the dev server service using the configured port (default 3001). They experience
the Active Workspace site as it exists on the local stage\out\site directory. This allows developers to make
changes without impacting the full site served from the gateway.
Setup
• Run the initEnv script from the STAGE directory to initialize the environment.
• Wait for the following to be displayed in the command-line window. Use the URL provided when you
started the development server to connect to the Active Workspace application. In the command
output, it looks like this:
If you change your configuration, the host and port may be different.
Design Intent:
Stop any running dev server before performing a full build.
Use
• The gateway requests the Active Workspace site and configuration from the siteDir instead of the file
repository.
• Use this setup when working with declarative modules. For example, creating a new theme, location,
type icon registry, and so on.
Design Intent:
Do not use the ?dev in combination with devServer mode.
Since this is hosted locally and it monitors the files in the stage directory, any changes you make will be
reflected immediately without needing to manually refresh or rebuild the application.
You will still need to build and publish to the gateway when you are ready to implement your changes
into the production environment.
What is happening?
You can create and edit your declarative modules in this command-line environment. You have read
access to the repo directory, which contains the OOTB source for Active Workspace for reference and
builds. Even if you have write permissions to the repo directory, do not modify those files. Make all your
changes in your custom modules.
Setup
• If you haven't done so already, prepare your gateway to view your local site.
• Optionally, run the awbuild script to start with a clean build. You can run it directly, it runs the initenv
script to configure the environment.
• Use a JavaScript project editor to work in your environment. Our examples use Microsoft's Visual
Studio Code (not the same as Visual Studio).
Use
• Use your JavaScript project editor to load the entire STAGE directory.
Note:
Any changes you make will be automatically detected by the development server and you will see
your changes when your browser refreshes.
What is happening?
When you are done making your UI builder changes, you must export them from the declarative artifact
service into your declarative module to be able to publish them This is like a commit for your UI builder
changes, however they still only exist in the local module until they are published.
Setup
• If you are using Windows, run the initEnv script from the STAGE directory to initialize the
environment.
Use
• From the command-line, use the npm run exportToSrc script to contact the gateway service and
copy the UI builder changes into your custom module.
What is happening?
You can manually refresh or build your declarative modules along with the local source repository into
the local site.
Setup
• If you haven't done so already, prepare a declarative module and possibly export your UI builder
changes.
• If you are using Windows, run the initEnv script from the STAGE directory to initialize the
environment.
Use
• From the command-line, refresh or build the Active Workspace application from the local source files
into the local site.
What is happening?
You can publish your local site to the production file repository. This is similar to a full commit for all
your customizations.
Setup
• If you haven't done so already, export your UI builder changes and perform a build of your local
files. This ensures that your all of your Active Architect changes and your local modules are
incorporated into your local site.
• If you are using Windows, run the initEnv script from the STAGE directory to initialize the
environment.
Use
• From the command-line, use the publish script to contact the gateway service and push the Active
Workspace application from the local site to the gateway's file repository service.
Tip:
As a convenience you can use the awbuild script, which performs the following actions for you:
1. initenv
You can install Active Architect using either Deployment Center or Teamcenter Environment Manager
(TEM). The following must be installed:
Use Active Architect in your development and test environments. This helps improve your
implementation time for UI design changes.
Caution:
Dynamic configuration is designed for your development and testing sites, and Siemens Digital
Industries Software does not recommend using Active Architect or any other dynamic
configuration capabilities in your production environment. Perform user acceptance testing before
they are implemented into the production environment.
Gateway The first component is the Active Workspace Gateway, which consists of multiple
services and microservices that combine to provide the underlying architecture that
enables dynamic configuration.
This is a web application framework that resides between the Active Workspace client
application and your browser. It intercepts incoming requests and merges your new
and modified content with the main content so you can see your changes without
having to rebuild the web application.
Whenever you want, you can build a new Active Workspace client application that
wraps up all of your changes. You can then publish that new application and begin the
modification process again.
UI Builder The Active Workspace UI builder consists of several main locations that provide the
user interface for dynamic configuration. Dynamic configuration is designed for your
development and testing sites, and Siemens Digital Industries Software does not
recommend using Active Architect or any other dynamic configuration capabilities in
your production environment.
You can use the following pages included in Active Architect to visually modify the
Active Workspace UI:
• Command Builder
Use this location to dynamically modify declarative command definitions in Active
Workspace.
You can search for commands and modify almost all of their attributes — their icon,
title, placement, and even the handlers that determine what the command does.
You can see your changes in real time while using developer mode.
• Panel Builder
Use this location to dynamically modify declarative command panel definitions in
Active Workspace.
Panel Builder is a visual editor that you can use to quickly author declarative panels.
It is a WYSIWYG tool where declarative panels can be created and edited using drag-
and-drop operations.
• Action Builder
Use this location to dynamically modify declarative command action definitions in
Active Workspace.
This is a visual editor that you can use to quickly author actions. It is a WYSIWYG tool
where success and failure connections are drawn between actions using drag-and-
drop operations.
Tip:
Use the command builder to find, modify, or create a command, and then use
the panel builder to create or modify that command's panel.
Command builder
You can use Command Builder to modify existing commands or create new ones. You can configure
nearly every aspect of the commands for the Active Workspace interface.
Command Builder communicates with the Gateway Service to store your changes. New content is
stored as an add, while changes you make to content for which you do not have write access are stored
as a delta.
host:port/?dev
Commands
• Localized title
• Command type
• Icon
• Placements
• Handlers
Toolbars
Actions
Panel Builder
You can use Panel Builder to modify the layout of declarative panels.
Panel Builder communicates with the Gateway Service to store your changes. New content is stored as
an add, while changes you make to content for which you do not have write access are stored as a delta.
host:port/?dev
On all pages of this location, you can use the Tools panel to change to subpanel Views (and use the
breadcrumb trail to return) and to work with the drag-and-drop Elements.
Canvas
Actions
Editor
Preview
Action Builder
Use Action Builder to view and modify actions for declarative commands and panels.
Action Builder does not have a location of its own. Instead, it is part of the Command Builder and
Panel Builder locations. Its behavior is the same in both locations.
Command Builder
Panel Builder
• Open it without a target panel and use it to follow your main UI choices.
After making any changes, save your work by selecting Save Changes .
Follow the UI
In a duplicate browser tab, open the Panel Builder directly from the global navigation toolbar.
As you open the Active Workspace command panels in your original browser tab , the panel builder
detects them and opens the panel definition for that command in the editor .
You can open a command panel directly if you know the command ID. After opening Panel Builder, add
the following to the URL:
?viewModelId={commandID}
If the command ID you enter does not have a command panel defined for it, Panel Builder creates one.
If the command does not implement a panel, this new panel is not used.
Example:
To open the command panel for the Add command, use Awp0ShowCreateObject for the
command ID.
When using Command Builder, you can select Open in Panel Builder from the Open command
group.
This sends the command panel view ID to Panel Viewer and opens it for you.
Definition
Title
You can enter the title of the command in the field. This field displays the value for the current
locale. Select Edit Localization to see the table of locales and their values.
Description
You can enter the description of the command in the field. This is the default extended tooltip text.
This field displays the value for the current locale. Select Edit Localization to see the table of locales
and their values.
Extended tooltip
The tooltips for commands in Active Workspace are full declarative pages, complete with a view and
view model. The default view for extended tooltips displays the localized command name and
description. If you want to create a custom view and viewmodel for your extended tooltip, enter the
view name here. If it does not exist, the view and viewmodel will be created. There is no
requirement on the name of the view other than it must be unique. We recommend using the
command ID and add a custom ending.
In this example, you want to create a custom tooltip layout for the Awp0Copy command. You enter
Awp0CopyMyCustomTooltip for the ID. The new view file name is
Awp0CopyMyCustomTooltipView.html, and its view model file name is
Awp0CopyMyCustomTooltipViewModel.json.
Choose Save As And Replace to copy an extended tooltip view and view model.
Use Open in Panel Builder to edit your custom view and viewmodel.
Command Type
Choose the type of command. The command types and descriptions are shown on the list.
Icon Preview
Either choose the command's icon from the list of existing icons, or select Upload to provide your own.
Any icon you upload must conform to the requirements for Active Workspace command icons found in
the UI Pattern Library on Support Center.
https://www.plm.automation.siemens.com/locale/docs/
Placements
Change, remove, or create the command placements here. Add the command to a command group,
give it a priority, or place it relative to another command.
Handlers
You can Edit the handler's JSON definition directly, or Open in Action Builder to work in the UI.
Use the Save As command to create a copy of an existing command. You are prompted to give your new
command a unique command ID. All command metadata will be copied to the new command, like the
icon, handlers, placements, and so on.
Use the Panel Builder canvas to create or modify a panel using drag-and-drop.
1. The breadcrumb shows you where you are in the nested panel hierarchy. In this example, you are
at the top: Awp0ShowCreateObject.
2. The Views area shows you any subpanels that exists. Selecting one will change to that subpanel.
3. Subpanels are also shown in the main canvas area, and can be selected to change to that subpanel.
1. In this example, the breadcrumb shows that you are viewing the Awp0AddObject subpanel, and
that it has a parent.
Drag elements onto the canvas to create new panel widgets, layouts, or properties.
Edit properties
Select a UI element on the canvas to edit its properties in the props panel.
Use the Actions page of Command Builder or Panel Builder to define their behavior. If you make any
changes, select Save Action Flow to save your changes.
2. Use the Actions viewer to scroll and zoom around the action flow. Select an action or operator.
3. Use the Action Properties panel to view the various properties of the selected action or operator.
2. Use Operators for splits and events as well as the start and end of the flow.
3. Use Object Activities to define behavior during the action flow. Drag new activities onto the action
flow to create new nodes.
You can search for and add existing actions to your action flow.
Creating connections
1. Toggle the Enable connection setting to create flow lines between actions.
By default, a success connection is drawn. You can change it to a failure connection by selecting the
connection, and choosing Failure in the CONNECTION PROPERTIES panel.
Editing properties
Use this panel to view or edit properties for the action selected in the action flow. After making changes,
select Update to save the definition.
Like many JavaScript applications, Active Workspace uses npm to manage dependencies and other build
tooling. The primary files related to npm are the package.json file and the node_modules folder.
Following is a description of several of the important directories for Active Workspace customization.
Not all directories present in the environment are shown.
stage
This is the base directory for Active Workspace customization. It is located in TC_ROOT\aws2. This is the
root of the development environment. Open this folder with your JavaScript project editor.
repo
This directory contains the declarative source code for Active Workspace, and is required when building
the application.
You can use the declarative source definitions in this directory for reference; all of the installed OOTB
kits are located here in their respective directories.
Caution:
Siemens Digital Industries Software recommends not modifying any of the files in the repo
directory. Instead, create your own modules and add your customizations there.
out
site This directory is analogous to a WAR file. It is a live application web site which can be
served by the gateway, if you configure your gateway to view your local site. Doing
this ignores the normal site, which is stored in the file repository.
src
The files and directories located here are for your customizations. They are pre-populated with actual
source code and resources that are built along with the contents of the repo directory. The src directory
contains the following directories:
image Contains the icons used by the Active Workspace UI are located here. If you want to
add custom icons for your modules, place them in this directory. Follow the file and
naming conventions for icons as specified in the UI Pattern Library, located on Support
Center.
mysamplem This is an example custom module that you might create. If you use the
odule generateModule script, this is the module that is automatically created if you don't
use another one. You may have as few or as many modules as you need to organize
your content, but each module must be registered in the main kit.json file, which is
located in the solution directory.
Each module will have its own module.json file and must conform to the declarative
file and directory structure.
solution In this directory, you will find the Active Workspace kit.json file and all of the
workspace definitions. Your custom modules must be registered in this file for the build
script to find and process them. When you use the generateModule script to create
your module, it will register your custom module in the kit.json for you.
Development scripts
To create custom Active Workspace components, you must work within an environment configured for
Active Workspace development. Siemens Digital Industries Software provides several scripts to assist in
the development of component modules. Unless otherwise stated, all scripts must be run from the
stage directory.
initEnv.cmd
In a Windows environment, run this script to configure the command-line environment variables
necessary for Active Workspace development.
awbuild
This script (awbuild.cmd or awbuild.sh) performs both npm run build and npm run publish. It also
initializes the command-line environment.
This script assists you in creating boilerplate files and directories for individual components. This script
does not require any arguments. If you do not provide any, it prompts you to enter the information it
requires.
This script checks your declarative definitions against the stated schema version. It reports any errors it
encounters, which you must fix before continuing. The current schema file is available in the UI Pattern
Library on Support Center.
For example, if a view model file contains "schemaVersion" : "1.0.0", then it will be audited
versus schema version.1.0.0, even if 1.0.1 were current.
This script quick-builds the Active Workspace application locally from STAGE/src and STAGE/repo into
STAGE/out/site.
It does not clean first, nor does it perform minification. If you experience any issues with Active
Workspace after making changes and performing a refresh, then perform a build instead.
When you are done making your changes in the UI using Active Architect and you want to commit
them, you need to export them into your local source repository.
All of the changes that were made with Command Builder, Panel Builder, and so on, are stored in the
declarative artifact service, but any time Active Workspace (the artifact service specifically) is rebuilt,
that history and all changes are cleared. Think of exporting back to source as similar to checking in code
to source control.
• The name of module is the name of the existing module in which the changes should be stored. It will
not create one. You can create a custom module using the generateModule script.
After running the tool, you can rebuild Active Workspace as much as you want without losing those
changes. Any future changes will be stored in the artifact service until you run this script again. This
process is similar to checking your code into a source control manager.
Launch a temporary Express developer server. The default hosting port is 3001.
Additional options for this server are shown by running npm run devServer -- --help. (note the
two sets of double dashes)
Tip:
If you have run a build since the last time you ran the devServer, you must run a refresh first to
update the webpack configuration file.
This script performs a clean build and minification of the Active Workspace application from STAGE/src
and STAGE/repo into STAGE/out/site.
Caution:
This also clears out the declarative artifact repository, so any UI builder changes you have made
since your last exportToSrc will be lost.
Publishes the Active Workspace application to the gateway deployment specified in STAGE
\tem.properties.
The target gateway can be overridden by running npm run publish <gateway deployment URL>.
Imports SOA templates from the Business Modeler IDE for use in Active Workspace. The imported
templates are initially located in the out/soa/json folder and will override any files there. Once testing is
completed, move any files in the out/soa/json directory to the src/soa/json directory to avoid upgrade
issues.
This tool will generate a local site documenting all of the SOA APIs available in Active Workspace. The
output directory is STAGE/out/soa/api.
Your custom module must follow the declarative file and directory structure. Following is an example of
a module with several customizations (yours will differ):
Tip:
Use the generateModule script to create boilerplate files for you.
mysamplemodule
This is an example of a base directory for your custom module. It is located in the STAGE\src folder. Your
module.json file (required) is located here. Depending on your customizations, you may also have the
following files:
• aliasRegistry.json
Assign type icons to business objects in this file.
• typeIconsRegistry.json
Assign business objects conditionally to icons in this file.
• commandsViewModel.json
Define new commands here, including handlers and placements.
• states.json
Define your custom locations or sublocations here.
• indicators.json
Assign visual indicators in this file.
• typeProperties.json
Specify any additional properties that you want the client to pre-load. This can be useful when
defining visual indicators, for example.
src
This directory contains the main organizational directories for your module: html, i18n, js, and
viewmodel. If you created a theme, you will see your SCSS file here.
html
Your view definitions are located in this directory. The definitions have the following naming
convention:
sublocationNameView.html
sublocationNameListView.html
sublocationNameTableView.html
i18n
All your localization keys for your module are located in this directory. The English translation file is
named moduleNameMessages.json. Additional language files will have a suffix distinguishing them.
Example:
moduleNameMessages_de.json for German
moduleNameMessages_ja_JP.json for Japanese
For more examples, refer to the provided source files in the components\activeworkspace\repo\kit
directory.
js
If you created a command, the JSFunction method will be located in this directory. The default name of
the file is commandNameService.js
viewmodel
This directory contains your view model files. Each view (html) file must have an associated view model
(json) file.
You can install and use the development server to temporarily host the Active Workspace application
locally in order to quickly check your declarative module changes without affecting the main server or
having to rebuild the application.
Note:
The npm package manager and Express are the current choices for the Active Workspace
development server and are subject to change without notice.
When you run the devServer on your local computer, an instance of Express runs locally, using the local
build from your STAGE directory, but it connects to the regular web application server.
Run the developer server using the current package manager, npm. This must be done from an Active
Workspace development environment, and from the stage directory.
stage> initEnv
stage> npm run devServer
This process first compiles the source code (which may take a few minutes), and then runs in the
command-line window until you stop it with CTRL-C. While it is running, it will detect any changes made
to your custom native modules and update itself accordingly; there is no need to run refresh after each
change. This allows you to validate your changes before running a full build.
Design Intent:
You should stop your development server before performing a full build.
Connecting to devServer
Use the URL provided when you started the development server to connect to the Active Workspace
application. In the command output, it looks like this:
Since this is hosted locally and it monitors the files, any changes you make will be reflected immediately
without needing to refresh or rebuild the application.
You will still need to build and publish to the gateway when you are ready to implement your changes.
Development utilities
Currently, when you create commands using the Command Builder, the default extended tooltip view
is assigned to that command. This topic is not for those commands.
If, instead, you create new commands using the generateModule script or have older commands
defined with a previous release, they do not have an extended tooltip view assigned and you must
manually assign it if you want one. For a single or even a few commands this is feasible, however if you
want to assign an extended tooltip view to many commands at the same time, use this script.
Use the generateExtendedTooltip script to assign the default extended tooltip view to your commands
in bulk.
You can assign your own view or accept the default extended tooltip view provided with Active
Workspace, extendedTooltipDefault .
The most simple use case is to have the script modify all commands defined in your
commandsViewModel.json files in each of your modules. To do this, use the following syntax:
node node_modules/afx/build/js/generateExtendedTooltip.js
It will prompt you for the extended tooltip view name you wish to assign, and then add the
extendedTooltip entry and your view name to the command definitions.
Example:
If you had created a red theme, your commands view model file might look like this before you
run this script:
"commands": {
"red": {
"iconId": "cmdSettings",
"title": "{{i18n.redTitle}}" }
}
},
"commands": {
"red": {
"iconId": "cmdSettings",
"title": "{{i18n.redTitle}}",
"extendedTooltip": {
"view": "extendedTooltipDefault"
}
}
},
Options
• If you intend to use this script regularly, you can register it in your package.json by adding the
following entry into the scripts section:
• The script locates its source from the build.json file. If it cannot find this file, it will assume the STAGE
\src directory.
Although not recommended or supported, the use of JavaScript glue code was sometimes necessary for
your customization.
As the core code that Active Workspace relies upon (Siemens Web Framework) matures and the Active
Architect applications improve, your unsupported JavaScript workarounds become less needed. Part of
Active Workspace's removal of reliance on older JavaScript modules includes RequireJS (using AMD),
which is being replaced by the native ES6 import pattern. If you created any of your own JavaScript
customizations, you must update your code to ES6 standards.
You can view the Siemens Web Framework (SWF) changelog at STAGE/node_modules/afx/
CHANGELOG.md
Use the following scripts to help you identify and reduce the amount of older content in your custom
JavaScript files.
All scripts must be run from, and all paths are relative to, the STAGE directory.
amdToES6
Converts the requireJS define pattern to the ES6 import pattern in the specified file or files.
SYNTAX:
node node_modules/afx/build/js/amdToES6.js
--sourcePath=<filePath/GlobalPath>
Example:
node node_modules/afx/build/js/amdToES6.js
--sourcePath=src/**/*.js
convertTestToUseInjector
Refactors the unit tests in preparation for services conversion.
SYNTAX:
node node_modules/afx/build/js/convertTestToUseInjector.js
--sourcePath=<filePath/GlobalPath>
Example:
node node_modules/afx/build/js/convertTestToUseInjector.js
--sourcePath=src/**/*.js
sourceInspect
Inspect the codebase to identify the number of factories, services, and directives. Also produces the
dependency tree for services.
SYNTAX:
node node_modules/afx/build/js/sourceInspect.js
--sourcePath=<filePath/GlobalPath>
--destPath=<filePath/GlobalPath>
Example:
node node_modules/afx/build/js/sourceInspect.js
--sourcePath=src/**/*.js
--destPath=./out
convertService
Convert level 1 (leaf) services from the dependency tree produced by sourceInspect to insulate
AngularJS dependency.
SYNTAX:
node node_modules/afx/build/js/convertService.js
--baseSourcePaths=<filePath/GlobalPath>
--sourcePathsToConvert=<filePath/GlobalPath>
Example:
node node_modules/afx/build/js/convertService.js
--baseSourcePaths=node_modules/afx/src/**/*,src/**/*
--sourcePathsToConvert=src/thinclientfx/tcuijs/**/*
• Learn how the development environment works with the gateway architecture.
The gateway and microservices architecture are an important component in the development
environment. You must configure the gateway to read from your local site instead of the file
repository so you can see your command-line development changes.
NPM is the package manager for Active Workspace. The STAGE directory can be loaded by a JavaScript
project IDE, such as Microsoft's Visual Studio Code.
• The provided scripts help you define, build, and publish your customizations.
• Your custom module's file structure must be followed, and is created and maintained by the scripts.
These examples demonstrate how to use the generateModule script to create various declarative Active
Workspace customizations from the command line. For example, adding a new sublocation or creating a
new theme.
Tip:
Siemens Digital Industries Software recommends using the command builder page to create and
modify commands.
• Use a JavaScript-capable project editor, like Visual Studio Code for example.
Tip:
If you are using a Linux environment, you will need to install the version of Node.js specified in
the Hardware and Software Certifications knowledge base article on Support Center.
The Active Workspace development environment on Windows includes Node.js.
You can configure the following aspects of Active Workspace's behavior using the developer
environment.
• Add a command.
This example only requires that you rebuild and deploy. It does not require you to create a module.
In this example, you make the cell titles (normally the object name) clickable by adding an optional
section to the kit.json file.
"clickableCellTitleActions": {
"click": "Awp0ShowObjectCellTitle",
"ctrlClick": "Awp0OpenInNewTabCellTitle",
"shiftClick": "Awp0OpenInNewWindowCellTitle",
"doubleClick": "Awp0ShowObjectCellTitle"
}
The solutionDef section is an array, so you will have to add a comma either before or after this
section, depending on where you insert it.
{
"name": "tc-aw-solution",
...
"solutionDef": {
"solutionId": "TcAW",
"solutionName": "Active Workspace",
...
"commandVisibility": "js/tcCommandVisibilityService",
"clickableCellTitleActions": {
"click": "Awp0ShowObjectCellTitle",
"ctrlClick": "Awp0OpenInNewTabCellTitle",
"shiftClick": "Awp0OpenInNewWindowCellTitle",
"doubleClick": "Awp0ShowObjectCellTitle"
},
"bundler": { ...
}
},
...
"defaultDragAndDropHandlers": { ...
}
}
This functionality is part of the core framework upon which Active Workspace is built. For more
information about this topic, search for clickableCellTitleActions within the Digital Engineering
Services product on Support Center.
Active Workspace uses modules to contain your custom declarative definitions. Each module consists of
a folder which contains a mandatory module.json and other optional declarative definition files. The
modules are registered in the Active Workspace kit.json file. This is the master file for the entire Active
Workspace solution, and contains a list of modules, solution definitions, and other dependency
information. The npm system will automatically find and build any modules it finds under the stage\src
directory, but they must be registered in the Active Workspace kit.json to be added to the final build.
Caution:
Siemens Digital Industries Software recommends that you use the OOTB solution kit instead of
creating your own.
As long as you are working in the development environment (set up using initenv), you can use the
generateModule script. You do not have to be in any particular directory. The utility prompts you for the
input it requires, and it validates many of the choices you must make against existing options.
The utility currently assists you with the creation of the following declarative components.
• module
Create your own module to contain related declarative configuration files. The utility creates a
directory for each of your custom modules in the stage\src directory and creates any required module
files.
Note:
For all the following options, if you do not explicitly create or specify your own module,
mysamplemodule will be created for you.
• type
Despite the name, this does not create new business object types. Instead, use this option to assign
an icon to a type. The utility creates an aliasRegistry.json file in your module directory. Using the
alias registry allows you to register an icon from the stage\src\image directory to a given object type
or types.
• theme
Create a new theme that you can modify. The utility creates a ui-<themeName>.scss file in the
module's src directory. This new SCSS file is configured with your color choice, but can be modified if
desired.
• command
Legacy: Define a command. The utility creates a command definition in commandsViewModel.json
in the module directory.
Tip:
Siemens Digital Industries Software recommends installing the Gateway Client and the UI
Builder to make changes to commands. As part of Active Architect, these provide you with the
Command Builder and Panel Builder locations for easier command editing and creation.
• location
Create a new location to organize your sublocations. The utility creates a location definition in the
states.json file in the module directory. Locations contain no UI component; without corresponding
sublocations, there is nothing to see.
• subLocation
Create a new sublocation. The utility creates a sublocation definition in the states.json file in the
module directory. Sublocations contain the UI components for a page, and must be assigned to an
existing location.
• workspace
Create the client-side definitions of a new workspace. The utility creates a workspace definition file in
the solution directory, and adds an entry in the main kit.json file. In the module directory, it creates
an entry in the messages file.
Workspace definition and mapping is detailed here.
Variables defined in SCSS files control all of the colors for Active Workspace. When you change the SCSS
file, it propagates throughout the interface. Changing individual CSS files is not supported.
These steps must be performed in an Active Workspace developer environment. Your utility feedback
may differ based on which kits and modules are available.
Tip:
This method creates a new SCSS file for your use. If you choose to use mathematical division
within it, be sure to use math.div instead of the slash symbol '/'. The @use 'sass:math'; rule must
remain the first import in the file.
The following structure shows the stage/src/mysamplemodule folder after creating the theme.
These files are reviewed following the steps.
Various files and directories are created or updated, including a new command to switch to your
theme, but there are two main files of interest:
• theme scss
Your theme file is located in the module's src directory. In this example, ui-myRedTheme.scss.
This file contains the base color definitions, and can be modified to suit your needs. See the
color override example.
• messages json
Your messages file is located in the module's src\i18n directory. In this example,
mysamplemoduleMessages.json. This file contains translations for your module, including the
command title, myRedThemeTitle. In this example, change the title to something more easily
understood by the user.
"myRedThemeTitle": "Red"
Select your new theme with the Change Theme icon in the global toolbar. Notice the name of the
theme is translated using the messages file.
kit.json
The OOTB kit file is automatically updated with the name of your custom module. This file is not located
in your module directory.
"name": "tc-aw-solution",
"modules": [
"mysamplemodule",
"tc-aw-solution"
],
...
mysamplemodule
module.json
A module file is created and populated in your module directory with the basic information about your
custom module.
{
"name": "mysamplemodule",
"description": "This is the mysamplemodule module",
"skipTest": true
}
ui-myRedTheme.scss
This file contains your new theme definition. Its name is ui-themeName.scss and is referred to in the
actions and conditions sections of the command view model.
commandsViewModel.json
This file creates the client side model for the command, and defines the command handlers,
placements, actions, conditions, and a pointer to the messages file. Only a skeleton of the file is shown
here for brevity.
{
"commands": {
"myCommand": {
},
"commandHandlers": {
"myCommandHandler": {
},
"commandPlacements": {
"aw_rightWall": {
},
"actions": {
"activatemyCommand": {
},
"conditions": {
"objectIsSelected": {
},
"i18n": {
"myCommandTitle": [
}
}
mysamplemoduleMessages.json
This file contains all of the English localized text for the command. You can modify the displayed text by
making changes here.
{
"myRedThemeTitle": "Red"
}
You can copy this file and add the appropriate suffix to create a new translation file for another
language. Active Workspace will automatically find your files depending on the user's locale.
Example:
Add _de for a German language file.
mysamplemoduleMessages_de.json
You feel the red theme doesn't go far enough — search results are still highlighted in yellow, but you
want red. In this example, you change the color of Active Workspace's highlighting from yellow to red.
1. Examine the OOTB theme scss files to find the variable you want to override. In this case it is the
highlighted background color.
Find the provided theme files under the stage\repo directory. Custom themes are based on the _ui-
theme.scss and _ui-theme-settings.scss.
2. Copy the line defining the highlighted background color from the ui theme settings scss.
$aw_highlighted_background_color: $AW_SiemensAccentYellow5;
3. Paste the line into your custom theme SCSS file after the theme settings import, but before the ui
theme import.
@import 'ui-theme-settings';
$aw_highlighted_background_color: $AW_SiemensAccentYellow5;
@import 'ui-theme';
4. Change the color of the highlighting. You can specify any standard color or hexadecimal color
code. In this example, use one of the defined red highlight colors.
@import 'ui-theme-settings';
$aw_highlighted_background_color: $AW_SiemensAccentRed5;
@import 'ui-theme';
In this example, you create a visual indicator that shows when an object has an IP License attached. It is
assumed that you have an SVG icon.
1. If you don't already have a module created, use the generateModule script to create a module. In
this example, you create mysamplemodule.
The following structure shows the stage/src/mysamplemodule directory after creating the
module.
2. Create an indicators.json file in your module as a peer to the module.json, and enter the
information about your indicator.
{
"ipindicator": {
"iconName": "ipIndicator",
"tooltip": {
"pre_message": "",
"propNames": [
"license_list"
],
"post_message": ""
},
"modelTypes": [
"ItemRevision"
],
"conditions": {
"$and": [
{
"license_list": {
"$ne": []
}
},
{
"license_list": {
"$notNull": true
}
}
]
}
}
}
Notice the use of "$ne": [] (to check for an empty array) instead of "$ne": "" (to check for an
empty string) because license_list is an array property, and "$notnull": true to make sure the
property is not null.
3. Create a typeProperties.json file in your module as a peer to the module.json, and enter the
information about your properties.
{
"typeProperties": {
"ItemRevision": {
"additionalProperties": [
{
"name": "license_list"
}
]
}
}
}
4. Add your icon to the stage\src\image directory. The filename must begin with indicator and end
with 16.svg.
Since you specified a tooltip containing the value of the license_list property, the list of attached
licenses will appear when you hover over the object. In this example, IP_License_01.
kit.json
The OOTB kit file is automatically updated with the name of your custom module.
"name": "tc-aw-solution",
"modules": [
"mysamplemodule",
"tc-aw-solution"
],
...
module.json
A module file is created and populated with the basic information about your custom module.
{
"name": "mysamplemodule",
"desc": "This is the mysamplemodule module",
"type": [
"native"
],
"skipTest": true
}
indicator.json
Add the definition of your indicator in this file. The basic syntax is:
{
"INDICATORNAME": {
"iconName": "ICONNAME",
"tooltip": {
"showPropDisplayName": false,
"propNames": ["PROPERTYNAME1", "PROPERTYNAME2"]
},
"modelTypes": ["TYPE1", "TYPE2"],
"conditions": {
"PROPERTYNAME": {
"$eq": "This is a test"
}
}
}
}
typeProperties.json
In order to conserve time and memory, Active Workspace does not retrieve every property associated
with an object when it is retrieved; it only retrieves a few pre-determined properties that are required for
the initial display. Commands, sublocations, and even style sheets can specify additional properties to be
retrieved if they are needed. For example, the license_list property is not normally retrieved for initial UI
use, but when you select the Attach Licenses command, the definition for that panel is configured to
retrieve that property since it will be needed for the action.
In this example, the condition happens to test a property that is not one of these pre-loaded properties.
Because of this, you must add an entry to the typeProperties section to tell Active Workspace to also
load the license_list property whenever it loads an ItemRevision object.
In some cases, you may want to check the properties of an object that is related to the target object. For
example, if you want to check a specific property on a related object, instead of just the presence or
absence of that object. Normally, when Active Workspace is just displaying the target object in a list, like
search results or folder contents, the properties of any related objects are not loaded into memory. Only
when the target object is examined more closely, like its summary page, would some properties of
related objects be loaded.
The solution is to tell Active Workspace that when it loads the required properties of a certain target
object type, to also retrieve the properties of the related object. You do this by adding a modifier to a
relation or reference property. Remember that this comes at the cost of response time and memory
usage.
Example:
To retrieve just the list of release status objects on an item revision, you would use the following
code snippet. This property contains an array of typed references to all of the release status
objects that are attached. You can only test this property for null, not null, or empty.
"typeProperties": {
"ItemRevision": {
"additionalProperties": [
{
"name": "release_status_list"
}
]
}
}
Example:
If you want to test to see if a release status object with a specific name or date was present, you
would need to tell Active Workspace to load those properties from the related status objects as
well. Use the withProperties modifier to load the properties of the related objects.
"typeProperties": {
"ItemRevision": {
"additionalProperties": [
{
"name": "release_status_list",
"modifiers": [
{
"name": "withProperties",
"Value": "true"
}
]
}
]
},
"ReleaseStatus": {
"additionalProperties": [
{
"name": "object_name"
},
{
"name": "date_released"
}
]
}
}
}
Example:
Once the referenced object's properties are loaded, you can then test them by using code similar
to the following snippet. This OOTB example looks at all objects of type WorkspaceObject and
follows the release_status_list property to any attached ReleaseStatus objects. It checks those
objects to see if any of them have an object_name equal to Approved.
"indicators": {
"fx_release_status_list_approved": {
"iconName": "ReleasedApproved",
"tooltip": {
"showPropDisplayName": false,
"propNames": [
"object_name",
"date_released"
]
},
"prop": {
"names": [
"release_status_list"
],
"type": {
"names": [
"ReleaseStatus"
],
"prop": {
"names": [
"object_name"
],
"conditions": {
"object_name": {
"$eq": "Approved"
}
}
}
}
},
"modelTypes": [
"WorkspaceObject"
]
},
Tip:
Remember to add your new locations and sub locations to any exclusive workspaces where you
want them to be available. If you want to add to an exclusive OOTB workspace, you must use a
workspace contribution file.
In this example, you create a custom location and subLocation and add them to the Author workspace.
1. Use the generateModule script to create a location. In this example, you create myLocation.
The following structure shows the stage/src/mysamplemodule folder after creating the location.
2. Use the generateModule script to create a sublocation. In this example, you create
mySubLocation.
The following structure shows the stage/src/mysamplemodule folder after creating the
sublocation.
{
"schemaVersion": "1.0.0",
"workspaceId": "TcAuthorWorkspace",
"availablePages": [
"mySubLocation",
"myLocation"
]
}
Notice how the name of the sublocation is used in the URL, but is not shown in the UI because there is
only a single sublocation registered to that location.
kit.json
The OOTB kit file is automatically updated with the name of your custom module.
"name": "tc-aw-solution",
"modules": [
"mysamplemodule",
"tc-aw-solution"
],
...
module.json
A module file is created and populated with the basic information about your custom module.
{
"name": "mysamplemodule",
"desc": "This is the mysamplemodule module",
"type": [
"native"
],
"skipTest": true
}
states.json
Your locations and sublocations are defined in this file. All titles are localized, which leaves nothing here
to modify.
mysamplemoduleMessages.json
This file contains all of the localized text for the module. You can modify the display names by making
changes here.
{
"myLocationHeaderTitle": "myLocation",
"myLocationBrowserTitle": "myLocation",
"myLocationBrowserSubTitle": "myLocation",
"mySubLocationTitle": "mySubLocation",
"mySubLocationChartTitle": "mySubLocation"
}
mySubLocation{type}View.html
These files create the UI for each type of view available. By default there are three view types: list, table,
and image.
Each file defines a declarative layout for the sublocation. Descriptions of the declarative elements can be
found in the UI Pattern Library found on Support Center. The list view is shown:
<aw-scrollpanel>
<aw-list dataprovider="data.dataProviders.listDataProvider" show-context-menu="true">
<aw-default-cell vmo="item"></aw-default-cell>
</aw-list>
</aw-scrollpanel>
mySubLocation{type}ViewModel.json
These files create the client side model for each view. These define any needed actions, data providers,
events, and so on. Only a skeleton of the file is shown here for brevity.
{
"schemaVersion" : "1.0.0",
"imports":
[
"actions":
{
"reveal":
{
"search":
{
],
"dataProviders":
{
"listDataProvider":
{
},
"onEvent": [{
"eventId": "dataProvider.reset",
"action": "reveal"
}, {
"eventId": "mySubLocationList.contentLoaded",
"action": "reveal"
}]
}
Caution:
Although it is possible to create custom commands using the steps shown here, Siemens Digital
Industries Software recommends using the command builder page instead. Not only can it create
new commands, but it can also modify OOTB commands.
This example is provided as-is for historical reference, but will be removed in a future release.
1. Use the generateModule script to create the command. In this example, you create myCommand,
choosing an existing icon and placing it on the right wall command bar. Learn more about
command placement.
The following structure shows the stage/src/mysamplemodule folder after creating the command.
These files are reviewed following the steps.
2. Edit your module's messages file to give your command a user-readable name.
View your results in the UI. Notice how the command appears on the right wall command bar.
kit.json
The OOTB kit file is automatically updated with the name of your custom module. This file is not located
in your module directory.
"name": "tc-aw-solution",
"modules": [
"mysamplemodule",
"tc-aw-solution"
],
...
mysamplemodule
module.json
A module file is created and populated in your module directory with the basic information about your
custom module.
{
"name": "mysamplemodule",
"description": "This is the mysamplemodule module",
"skipTest": true
}
commandsViewModel.json
These files create the client side model for the command. These define the command handlers,
placements, actions, conditions, and a pointer to the messages file. Only a skeleton of the file is shown
here for brevity.
{
"commands": {
"myCommand": {
},
"commandHandlers": {
"myCommandHandler": {
},
"commandPlacements": {
"aw_rightWall": {
},
"actions": {
"activatemyCommand": {
},
"conditions": {
"objectIsSelected": {
},
"i18n": {
"myCommandTitle": [
}
}
mysamplemoduleMessages.json
This file contains all of the English localized text for the command. You can modify the displayed text by
making changes here.
{
"header": "Header",
"body": "Body",
"footer": "Footer",
"checkBoxName": "Enable the OK button in footer",
"save": "Ok",
"textValue": "Contents here",
"myCommandTitle": "myCommand"
}
You can copy this file and add the appropriate suffix to create a new translation file for another
language. Active Workspace will automatically find your files depending on the user's logon language.
Example:
Add _de for a German language file.
mysamplemoduleMessages_de.json
The following are considerations for the Active Workspace client when you perform platform
customizations:
These examples assume you have already installed Active Workspace. In addition, you will need:
a. Import the Active Workspace (aws2) template into your Business Modeler IDE project.
b. Create the new business object and create custom properties on the business object.
c. Use the Operation Descriptor tab to ensure the custom properties appear on the creation
page in Active Workspace.
d. Ensure that the custom business object and its properties are included in searches by applying
the Awp0SearchIsIndexed business object constant and property constant.
If you have installed Active Content Structure and you want to make the custom business
object available on the Content tab, add the custom business object to the
Awb0SupportsStructure global constant.
For details about using the Business Modeler IDE, see Configure your business data model in
BMIDE in the Teamcenter help.
2. Update the search indexer by merging the Teamcenter schema with the Solr schema and
reindexing.
3. Most custom object types will automatically appear in the Create panel. However, if you create an
unusual type of object and it does not appear, add your object type to the
AWC_DefaultCreateTypes preference.
4. If you want a unique page layout for the business object, set up style sheets for the business
object’s create page, summary page, and information panel.
Active Workspace uses a naming convention for its icons. As long as you follow this convention, it is easy
to add icons for your custom business object types. The icons that get compiled into the web application
are located in the STAGE\src\image directory. Simply add your new icon into this directory, and then
build the Active Workspace application.
typetypename48.svg
To use this method, typename must be the database name of the object type.
Example:
For example, if you want to add a new icon for the Robot Revision, you need to find the database
name of that type:
The database names of the objects can be located using the Business Modeler IDE.
You find that Mfg0MERobotRevision is the database name of the Robot Revision business
object. So you would name your icon:
typeMfg0MERobotRevision48.svg
Custom business objects follow the same rule. For example, if you have created a new business object
called C9BoltRevision with a display name of Bolt Revision, you would add a new icon with the
following name:
typeC9BoltRevision48.svg
Note:
If a business object type does not have an icon specifically assigned to it either by an
appropriately-named icon in the source directory or by an advanced method, then Active
Workspace will display the default icon for that class of objects.
The aliasRegistry contains the icon/type pairing when the names do not match.
The aliasRegistry.json file is a sibling to your custom module.json. Use the generateModule script to
create this file automatically.
This file must contain a JSON object listing icons and the business objects to which they are assigned.
Example:
The following registers the typemyTypeIcon48.svg to the myCustomTypeRev business object.
{
"typemyTypeIcon48": [
"myCustomTypeRev"
]
}
The following registers two different icons to a total of three business objects.
{
"typemyTypeIcon48": [
"myCustomTypeRev",
"myOtherCustomTypeRev"
],
"typemyNewCustomIcon48": [
"myNewCustomTypeRev"
]
}
You can register type icons based on conditions using typeIconsRegistry. This technique is commonly
used when your custom object is being represented by an intermediary object, like a BOM line or table
row, for example. The intermediary object's icon changes based on the object it's representing.
The typeIconsRegistry is contributed from within a typeIconsRegistry.json file in your custom module.
This file is a sibling to your module.json. You must create this file manually.
This file must contain a JSON array of JSON objects which define a business object, and how its icons are
associated.
• Type names are logically ORed, which means a single definition can apply to multiple types.
• Property names are logically ANDed, which means all properties and their conditions are evaluated,
and if one of them is false the icon is not returned.
• Icon registration supports a priority value for specifying precedence. If you define an entry in your
custom typeIconsRegistry.json file but it doesn't appear, they may already be a higher priority defined
OOTB.
Example:
In the following example, for any objects of type Ase0FunctionalElement, Ase0LogicalElement
or Ase0LogicalElement that have a reference property awb0Archetype, the type icon for the
referenced object will be shown.
[{
"type": {
"names": [
"Ase0FunctionalElement",
"Ase0LogicalElement",
"Awb0Connection"
],
"prop": {
"names": [
"awb0Archetype"
],
"type": {
"names": [
"BusinessObject"
]
}
}
}
}]
Example:
In the following example, for any objects of type Bhv1BranchNode has a reference property
bhv1OwningObject, the type icon for the referenced object will be shown only if it is of type
Fnd0Branch.
[{
"type": {
"names": [
"Bhv1BranchNode"
],
"prop": {
"names": [
"bhv1OwningObject"
],
"type": {
"names": [
"Fnd0Branch"
]
}
}
}
}]
Example:
In the following example, for any objects of type EPMTask that have a property fnd0PerformForm
which has a non-null value, the type icon for typeFormTask48 will be shown
[{
"type": {
"names": [
"EPMTask"
],
"prop": {
"names": [
"fnd0PerformForm"
],
"iconFileName": "typeFormTask48",
"conditions": {
"fnd0PerformForm": {
"$ne": ""
}
}
}
}
}]
Example:
In the following example, for any objects of type EPMTask that have a property fnd0PerformForm
which has a non-null value, the type icon for typeFormTask48 will be shown
[{
"type": {
"names": [
"EPMTask"
],
"prop": {
"names": [
"fnd0PerformForm"
],
"iconFileName": "typeFormTask48",
"conditions": {
"fnd0PerformForm": {
"$ne": ""
}
}
}
}
}]
Example:
In the following example, there are two icon assignments for the EPMTask object. One that checks
the fnd0PerformForm property, and the other checks the type_description property.
If either condition is true, then the object will have the appropriate icon. However, if both
conditions are true, then the object will have the typeWorkflowIcon48 icon, because the second
condition has a higher priority.
[{
"type": {
"names": ["EPMTask"],
"prop": {
"names": ["fnd0PerformForm"],
"iconFileName": "typeFormTask48",
"conditions": {
"fnd0PerformForm": { "$eq": "HelloWorld" }
}
}
},
"priority": 50
},
{
"type": {
"names": ["EPMTask"],
"prop": {
"names": ["type_description"],
"iconFileName": "typeWorkflowIcon48",
"conditions": {
"type_description": {"$eq": "HelloTypeDescription"}
}
}
},
"priority": 65
}]
Without a corresponding JSON file, the Workflow Designer handler panel offers no assistance to the user
for that handler.
The Active Workspace client reads the handler JSON files to create a handler panel populated with
available arguments and value hints, instead of making the user type them in manually, reducing errors
and increasing efficiency. The handler panel:
Add your custom JSON file to the provided files in the TC_DATA\workflow_handlers directory. The
filename must match the handler name. Reference the OOTB files as examples when creating your own.
Example:
The handler named EPM-auto-assign-rest has a file:
TC_DATA\workflow_handlers\EPM-auto-assign-rest.json
In the JSON file, you must define all arguments as either mandatory or optional. For any arguments
you defined, you may also specify if they are dependent upon each other, if they are mutually exclusive,
required, allowed to be left blank, or never take any value at all. The following syntax allows you to
create all of these possibilities.
Syntax
{
"mandatory": [...],
"optional": [...],
"dependent": [...],
"mutex": [...],
"required_one_of": [...],
"nullable": [...],
"nullvalue": [...],
"undefined_arg_value": [...]
}
Or, if the handler takes no arguments, then you can define it as follows:
{
"no_arguments": true
}
Design Intent:
If a handler has no corresponding JSON file, or if the definitions are blank, then the user can
(must) manually type in any arguments and values they want.
Attributes
mandatory
Define any arguments which are mandatory, along with the list of available value hints for each
argument. Required arguments will appear pre-populated in the handler panel. If no value hints are
provided, the user must type in the values.
Example:
Shown are two mandatory arguments: -name which has three value hints to choose from,
and -assignee (which requires the user to manually enter a value).
"mandatory": [
{
"-name": [
"PROPOSED_RESPONSIBLE_PARTY",
"ANALYST",
"CHANGE_SPECIALIST"
]
},
{
"-assignee": [ ]
}
]
Tip:
dynamic hints and multiselect are available when defining argument values.
optional
Define any arguments which are optional, along with the list of available value hints for each
argument.
Example:
Shown are two optional arguments: -from_attach (which has three values to choose from)
and -target_task (which requires the user to manually enter a value).
"optional": [
{
"-from_attach": [
"target",
"reference",
"schedule_task"
]
},
{
"-target_task": [ ]
}
]
Tip:
dynamic hints and multiselect are available when defining argument values.
dependent
Specify which arguments that are dependent upon other arguments being chosen. This is a one-way
relation. If you have arguments that are dependent upon each other, you need to specify all
combinations.
Example:
Shown are two sets of dependent arguments. If the user selects -latest or -targetstatus, then
-status is required. However, if there are no other restrictions, the user could select -status by
itself.
"dependent": [
{
"-latest":["-status"]
},
{
"-targetstatus":["-status"]
}
]
mutex
Specify which arguments are mutually exclusive. Each group is processed separately.
Example:
Shown are two sets of mutually exclusive arguments. If the user selects -primary_type they
cannot also select -secondary_type, and vice-versa. The same with -
"mutex": [
{
"-primary_type": "",
"-secondary_type": ""
},
{
"-check_only_for_component": "",
"-check_only_for_assembly": ""
}
]
required_one_of
Specify arguments from which at least one must be chosen.
Example:
"required_one_of": [
{
"-allowed_status": "",
"-include_related_type": "",
"-relation": ""
}
]
You can specify multiple sets of required arguments. In the following example, the user must
choose either arg1 or arg2 and also choose either argA or argB.
"required_one_of": [
{
"-arg1": "",
"-arg2": ""
},
{
"-argA": "",
"-argB": ""
}
]
nullable
Specify which arguments may have a value. The user is allowed to provide a value, but it is not
required.
Example:
"nullable": [
"-ce",
"-auto_complete",
"-clear_signoffs",
"-check_first_object_only",
"-required"
]
nullvalue
Specify which arguments can not have a value. The user can not add any value to the arguments.
"nullvalue": [
"-bypass",
"-check_first_target_only"
]
undefined_arg_value
If a JSON file has this specified, then the user would be allowed to add any argument name and a
corresponding value for it of his\her choice. The handler panel will have a free text to provide any
argument name as well as argument value that may not be specified in the JSON mandatory or
optional sections.
Dynamic hints
Within the argument definition sections (mandatory and optional), you can add dynamic hints. The
server will replace the following keywords with a list of values before sending to the client. Supported
keywords are:
Example:
The following provides a list of all relations when the user selects the -from_relation argument.
{
"-from_relation": [
"DYNAMIC_HINT_RELATIONS"
]
}
Multiselect
Within the argument definition sections (mandatory and optional), you can allow multiselect.
Use multiselect=true to allow the user to pick multiple values for the argument. This should be present
as the first value in the list of values for a given handler argument.
Example:
The user is allowed to choose several values from the list of types.
{
"-to_include_type": [
{
"multiselect": true
},
"DYNAMIC_HINT_TYPES"
]
}
Examples
Explore all the provided JSON files for examples. Following are some examples chosen from the provided
JSON files. They each have interesting content to examine for sample content.
EPM-assert-targets-checked-in
As there are no arguments for this handler, this JSON file is empty. A blank template.
EPM-check-target-object
An example of using a combination of multiselect, explicit values, and dynamic hints.
EPM-attach-related-objects
An example of several mutually exclusive groups of arguments.
In order to perform some administrative activities, you must run command-line utilities. Even if it's not
the only option, sometimes using command-line utilities can also make some administrative tasks
easier.
To run command-line utilities, you must have access to the Teamcenter platform command-line
environment.
For information about working with command-line utilities, refer to the Utilities Reference in the
Teamcenter documentation.
clear_old_newsfeed_messages
Purges messages based on the purge threshold (in number of days) that you set using the
SCM_newsfeed_purge_threshold preference. Messages that are older than the threshold will be
deleted. When the -process_only_read_messages option is provided, the utility only considers already
read messages for deletion. Unread messages, even those that exceed the threshold, are not deleted.
Note:
This utility can only be run by a Teamcenter administrator.
SYNTAX
ARGUMENTS
-u
Specifies the Teamcenter administrator's user ID.
This is a user with Teamcenter administration privileges. If this argument is used without a value,
the operating system user name is used.
Note:
If Security Services single sign-on (SSO) is enabled for your server, the -u and -p arguments
are authenticated externally through SSO rather than being authenticated against the
Teamcenter database. If you do not supply these arguments, the utility attempts to join an
existing SSO session. If no session is found, you are prompted to enter a user ID and password.
-p
Specifies the Teamcenter administrator's password.
If used without a value, the system assumes a null value. If this argument is not used, the system
assumes the user-ID value to be the password.
delete_uiconfig
SYNTAX
ARGUMENTS
This is a pre-upgrade utility to delete column configuration objects and their related BusinessObject
instances. Execute the utility by using one argument at a time. If multiple arguments are used, then only
one argument is considered and the rest are ignored. The order of precedence is as follows.
1. -prefix
2. -client_scope
3. -column_config_id
4. -column_config_name
5. -col_def_obj_type
Only administrative users are allowed to run the utility and is not intended to be used as a general
purpose utility.
-u
Teamcenter user ID.
-p
Teamcenter password.
-g
Teamcenter group.
-prefix
Deletes all client scopes and column configurations whose ID starts with the specified
prefix. ColumnDef objects referencing the column configuration are also deleted.
-client_scope
Deletes the client scope, its associated column configurations, and the ColumnDef objects
referenced by the client scope.
-column_config_id
Deletes the column configuration object specified by this ID. Multiple values can be provided using
comma separators.
-column_config_name
Deletes the column configuration object specified by this name. Multiple values can be provided
using comma separators.
-col_def_obj_type
Deletes the ColumnDef objects referencing the specified type. Multiple values can be provided
using comma separators.
-log
Full path to write execution results. If the log file option is not specified, then the default log file will
be created in the TEMP directory.
-h
Displays the help for this utility.
export_uiconfig
SYNTAX
ARGUMENTS
-u
Specifies the user ID.
This is a user with Teamcenter administration privileges. If -u is used without a value, the operator
system user name is automatically applied.
Note:
If Security Services single sign-on (SSO) is enabled for your server, the -u and -p arguments
are authenticated externally through SSO rather than being authenticated against the
Teamcenter database. If you do not supply these arguments, the utility attempts to join an
existing SSO session. If no session is found, you are prompted to enter a user ID and password.
-p
Specifies the password.
If used without a value, the system assumes a null value. If this argument is not used, the system
assumes the user-ID value to be the password.
To specify more than one group, use commas to separate the group names.
-for_role
Specifies role or roles to which user interface configuration objects are exported.
To specify more than one role, use commas to separate the role names.
-for_workspace
Specifies workspace or workspaces to which user interface configuration objects are exported.
To specify more than one workspace, use commas to separate the workspace names.
-client_scope_URI
Specifies, for export only, the column configurations and command contributions corresponding to
the indicated client scope only.
Note:
Client scope refers to a sublocation in the client, not group or role.
-client
Specifies, for export only, the column configurations and command contributions corresponding to
this client only.
-h
Displays help for this utility.
EXAMPLES
To export the inbox table column configuration specific to the Engineering group.
export_wsconfig
SYNTAX
ARGUMENTS
-u
Specifies the user ID.
A user with administration privileges is used as the value name for the user ID. If -u is used without a
value, the operator system user name is automatically applied.
Note:
If Security Services single sign-on (SSO) is enabled for your server, the -u and -p arguments
are authenticated externally through SSO rather than being authenticated against the
Teamcenter database. If you do not supply these arguments, the utility attempts to join an
existing SSO session. If no session is found, you are prompted to enter a user ID and password.
-p
Specifies the password.
If used without a value, the system assumes a null value. If this argument is not used, the system
assumes the user-ID value to be the password.
To specify more than one workspace, use commas to separate the workspace names.
-file
Specifies the path and file name for the output file.
-h
Displays help for this utility.
EXAMPLES
import_uiconfig
SYNTAX
ARGUMENTS
-u
Specifies the user ID.
This is a user with Teamcenter administration privileges. If -u is used without a value, the operator
system user name is automatically applied.
Note:
If Security Services single sign-on (SSO) is enabled for your server, the -u and -p arguments
are authenticated externally through SSO rather than being authenticated against the
Teamcenter database. If you do not supply these arguments, the utility attempts to join an
existing SSO session. If no session is found, you are prompted to enter a user ID and password.
-p
Specifies the password.
If used without a value, the system assumes a null value. If this argument is not used, the system
assumes the user-ID value to be the password.
To specify more than one group, use commas to separate the group names.
-for_role
Specifies role or roles to which user interface configuration objects are imported.
To specify more than one role, use commas to separate the role names.
-for_workspace
Specifies workspace or workspaces to which user interface configuration objects are imported.
To specify more than one workspace, use commas to separate the workspace names.
-action=<value>
override (default): Specifying this option will override the existing column configuration with the
new one.
skip: Specifying this option will cause the existing column configuration to be retained and will not
be updated. However, if there is no existing configuration, then one will be created.
merge: Specifying this option will merge the new column configuration with the existing one. This
may cause column order to change.
-h
Displays help for this utility.
Note:
If neither -for_group or-for_role arguments are included, user interface configuration objects are
imported with Site scope.
EXAMPLES
To import the configuration specified in the XML file for multiple roles, in this case: Designer and
engineer.
To import the configuration specified in the XML file for the Engineering group.
To import the configuration specified in the XML file for multiple groups, in this case Engineering,
system and "Validation Administration".
Note:
A parameter containing spaces, such as Validation Administration in the preceding example,
must be enclosed in double quotation marks (").
import_wsconfig
SYNTAX
ARGUMENTS
-u
Specifies the user ID.
A user with administration privileges is used as the value name for the user ID. If -u is used without a
value, the operating system user name is automatically applied.
Note:
If Security Services single sign-on (SSO) is enabled for your server, the -u and -p arguments
are authenticated externally through SSO rather than being authenticated against the
Teamcenter database. If you do not supply these arguments, the utility attempts to join an
existing SSO session. If no session is found, you are prompted to enter a user ID and password.
-p
Specifies the password.
If used without a value, the system assumes a null value. If this argument is not used, the system
assumes the user-ID value to be the password.
Specifies the path and file name for the input file.
-h
Displays help for this utility.
EXAMPLE
ac0_migrate_s2cldata
Note:
If you have used Active Collaboration in a non-retail industry solution in previous versions of
Active Workspace, you can perform a one-time migration using this utility to migrate your existing
questions and comments data to the new Active Collaboration discussions feature.
Migrates previous Active Collaboration questions and comments data (S2clSocial objects) to the new
Active Collaboration discussions feature that uses Ac0ActiveCollaboration objects.
Caution:
Perform this migration only once to prevent a duplication of data.
If your Collaboration tab is present after running this utility, run the following from the command
line to remove the Collaboration tab components that include questions, answers, comments,
and rating summaries.
If your Questions tab is present after running this utility, run the following from the command line
to remove the Questions tab, along with its components.
SYNTAX
ARGUMENTS
-u
Specifies the user ID.
A user with administration privileges is used as the value name for the user ID. If -u is used without a
value, the operating system user name is automatically applied.
Note:
If Security Services single sign-on (SSO) is enabled for your server, the -u and -p arguments
are authenticated externally through SSO rather than being authenticated against the
Teamcenter database. If you do not supply these arguments, the utility attempts to join an
existing SSO session. If no session is found, you are prompted to enter a user ID and password.
-p
Specifies the password.
If used without a value, the system assumes a null value. If this argument is not used, the system
assumes the user-ID value to be the password.
EXAMPLE
Troubleshooting
Open source software (OSS) attribution for Active Workspace can be found in the
OSSAttributionInfo.json file. You can find this file in the config folder within the web application's
assets directory.
In the development environment, you can find this file in the TC_ROOT\aws2\stage\out\war\assetsxxxx
\config folder.
appCtxService
The appCtxService maintains a ctx object that contains context information for the current Active
Workspace session. This dynamic runtime object can be used by conditions for the declarative UI.
To examine the contents of this object, enter the following command into your browser's console.
angular.element(document.body).injector().get('appCtxService').ctx
Expand the various nodes to discover the information available. The contents of this object changes
each time the interface is used, so your results vary depending on where you are and what you are
doing at the time.
There is a lot of information available in the ctx object. Be sure to examine it fully. For example, while
the class name of a selected object is found at
ctx.selected.modelType.name
ctx.selected.modelType.typeHierarchyArray
Following are some examples of declarative conditions using the ctx object.
Logical Objects
• Eliminate the need for the end user to know the data model by presenting a flat list of properties.
A logical object is a runtime object designed to consolidate properties. If you have related business
objects in Teamcenter and they contain useful properties, you might want to see them all in a single
place.
• Logical objects can be created and maintained from within Active Workspace.
• Dynamic compound properties are a display capability. While flexible, they are not real properties nor
real objects to be queried or exported.
• Traditional static compound properties are a change to the Teamcenter schema, and must be created
using the Business Modeler IDE, and then deployed.
You must use the Logical Objects administrative tool in Active Workspace in order to create or modify a
logical object. This tile is only visible to administrators.
Example scenario
In this example, you have a process object which has a reference relation to a document object. That
document object has two attached files, one word and one PDF.
No properties are desired from the word object , since this is internal to your department.
1. Log in to Active Workspace with administrator privileges and go to the Logical Object
Configuration page.
2. Define a new logical object , specifying the process object as the root object. In this
example you do not want to inherit configurations from other logical objects, so select the
Fnd0LogicalObject as the parent.
3. Add the two Members by specifying their relationship and object segments. All member
objects must be defined from the root object.
However, the PDF object is two segments away from the root, and so you must define both
segments.
4. Add the four Presented Properties, specifying from which Member object they will be
retrieved.
Active Workspace automatically saves your progress at each step, so you are done. The new logical
object is available.
Result
You can edit existing logical objects from the Logical Object Configuration page.
• To add a new member or property, select the logical object you want to edit and select Add Member
or Add Property near the respective table.
• To modify an existing member, select the row in the Members table you want to edit, and then select
Edit Member .
The page configuration changes based on what you have selected, so if you do not see the icons you
expect, check your table selections.
Destination criteria
A destination criterion is a way for the system to filter out destination objects at runtime.
Depending on the destination object type, you may have a list of one or more to choose from. Choose
only one. If you wish to use more than one criterion, you will need to define a second rule with the same
relation and destination object. Following is a list of your choices based on what type of object you
choose as your destination object:
• Type of WorkspaceObject
Current user session project
If your destination object is another logical object, then its root type is considered for this purpose, even
though logical objects are runtime objects.
The destination object will be chosen at runtime based on the user's current project.
• No options
The destination object will be chosen at runtime with no special considerations.
When adding a new Member to a logical object or editing an existing member, each segment asks for
Destination Criteria.
A compound logical object is a logical object that displays the properties from other logical objects.
Since it is possible for a single logical object to contain as many properties as you require, and from
many target business objects, you may wonder why you would need to reference another logical object
at all.
One reason is compartmentalization. Imagine a scenario where several groups are each contributing
properties to an overall logical object. Each group would have to edit the members and presented
properties of the same logical object. This could become a logistical nightmare.
If instead, each group creates a single logical object from which to present their properties, then a single
corporate-wide logical object could include those logical objects from the individual groups. This
provides a single overall object for reference while still maintaining each group's ability to modify their
own object as needed.
Another reason is to create a base logical object that contains a set of properties that you want several
logical objects to share. Then the other logical objects can inherit that configuration, but each add their
own properties.
There are two methods to retrieve properties from other logical objects that can be used as needed:
• During creation, specify a parent logical object from which to inherit a base set of properties.
• After creation, choose some included logical objects and which of their properties to present.
When creating a logical object, you may choose one other logical object to be its parent.
Your new logical object will inherit its configuration from this parent.
When viewing a logical object, use the Add command from the Included Logical Objects table.
Workspaces
You can:
Following are some of the workspaces available to the Active Workspace client. This is not a complete
list; certain features will install more workspaces as needed.
These workspaces are provided as examples that you can use as-is or as reference to create your own.
Siemens Digital Industries Software recommends that you create your own exclusive workspaces for
your users, with a task-based organization in mind.
• Author - TcAuthorWorkspace
This is an exclusive workspace which limits users to a select group of commands and pages for
creating content. Assign this workspace to your CAD designers, simulation engineers, and so on.
Tip:
This is the default workspace. You may change the default workspace for your site by using the
AWC_Default_Workspace preference.
• Consumer - TcConsumerWorkspace
This is an exclusive workspace which limits users to a select group of commands and pages for
viewing content. Assign this workspace to your users that are not authors and are assigned a
consumer license. For example shop floor personnel, sales team members, and so on.
• Simplified - TcXSimplifiedWorkspace
This optional workspace is an exclusive workspace which provides a streamlined UI for basic
document management users who have no access to other Teamcenter applications or integrations.
• Default - TCAWWorkspace
An inclusive workspace, meaning that it has access to all pages and commands. This workspace is not
meant for use in your production environment, but is provided for use in a development environment
so you can explore content right away without having to do an initial configuration.
You can create a custom workspace using a native module. The client-side portion of a workspace is
defined using a JSON file, which can be added to an existing module, or you could create a new one.
generateModule
kit.json
The OOTB kit file is automatically updated with the name of your custom module and your workspace
ID.
"name": "tc-aw-solution",
"modules": [
"mysamplemodule",
"tc-aw-solution"
],
...
"solutionDef": {
...
"workspaces": [
"TCAWWorkspace",
"TcAdminWorkspace",
"TcAuthorWorkspace",
"TcConsumerWorkspace",
"myExclusiveWorkspace"
],
"defaultWorkspace": "TcAuthorWorkspace",
...
Optionally, use the includeInSolutions entry in your workspace definition file to register your
workspace without the need to modify the kit.json file.
Design Intent:
Siemens Digital Industries Software recommends against using inclusive workspaces except for
exploration and testing. Create and use only exclusive workspaces in your production
environment.
Active Workspace ignores the defaultWorkspace entry in kit.json and instead uses the
AWC_Default_Workspace preference. This allows you to easily change the default workspace
without having to rebuild the application.
module.json
A module file is created and populated with the basic information about your custom module.
{
"name": "mysamplemodule",
"desc": "This is the mysamplemodule module",
"skipTest": true
}
workspace_{workspaceName}.json
This file contains the definition of your workspace. It must follow the naming convention shown and be
next to the kit file. If you used the generateModule utility, this is created automatically.
schemaVersion (Mandatory)
Version of the declarative schema to which this workspace definition complies.
workspaceId (Mandatory)
A unique identifier string for the workspace.
workspaceName (Mandatory)
A JSON structure providing lookup details for the localizable string of the workspace name. The
source attribute points to the message file, and the key attribute tells the system which definition
to use.
workspaceType (Mandatory)
A string value specifying the type of workspace. There are two choices.
• Exclusive: The user will only be able to see the UI elements which are exclusively mapped in the
availablePages attribute. This is the recommended selection.
• Inclusive: The user will see all UI elements defined within the solution. This is not recommended
for your production environment.
defaultPage (Mandatory)
The page which will be shown by default when the user logs in or changes workspace. The value is
one of the states defined by the solution or in your custom states.json.
availablePages (Optional)
An array of pages which can be navigated by the user while working within the workspace. Each
value is one of the states defined by the solution or in your custom states.json. You may also include
all commands from an entire kit by specifying "kit::kitname" in the list.
includeInSolutions (Optional)
Instead of adding the workspaceId to the kit.json file, it is possible to register your workspace
indirectly from in the workspace itself. The solution name for Active Workspace is TcAW.
"schemaVersion" : "1.0.0",
"workspaceId": "..." ,
"workspaceName": {
"source": "...",
"key": "..."
},
"workspaceType": "...",
"includeInSolutions": [
"TcAW"
],
"defaultPage": "...",
{moduleName}Messages.json
This file contains the localized messages for the module. In this example, it shows the display name of
the workspace.
Since the main purpose of a workspace is to control which pages and commands are available to the
user, you will want to configure your workspace definition to fit your needs.
Following are the three main sections of the workspace definition file that control which UI elements are
available or are restricted. None of these have any effect in an inclusive workspace definition.
Tip:
Workspaces only control the declarative interface. Any commands that are provided using style
sheets are outside the control of the workspace and may still be available to the user. Be certain to
review your style sheets, and register custom style sheets to your workspace if desired.
availablePages
List the pages that you want the user to have access to. For convenience, you can include all pages from
a kit as well by specifying kit:: in front of the kit name.
For a list of kits, see the STAGE\repo directory in your development environment.
Example:
To include all pages defined within the workflow kit, use:
"availablePages": [
"kit::workflow"
]
includedCommands
If you use this option, the workspace will only include the commands listed. Similar to pages, you can
include all commands from a kit by specifying kit:: in front of the kit name.
Example:
The following includes a list of eight specific commands, plus all the commands defined within the
workflow kit.
"includedCommands": [
"Awp0ObjectInfo",
"Awp0GoBack",
"cmdSignOut",
"cmdViewProfile",
"Awp0ManageGroup",
"Awp0HelpGroup",
"Awp0Help",
"Awp0HelpAbout",
"kit::workflow"
]
excludedCommands
• If you also specify included commands, then the workspace will subtract these excluded commands
from that included list.
• If you do not specify any included commands, then the workspace will automatically include all
commands in the workspace, and then subtract these.
Example:
The following excludes two specific commands from the workspace. They will not be available
through the declarative interface. Remember however, that a style sheet could still present them.
"excludedCommands": [
"Awp0SuspendTask",
"Awp0AbortTask"
]
Similar to pages, you can exclude all commands from a kit by specifying kit:: in front of the kit name.
You can modify which commands and pages are available to users of an out-of-the-box (OOTB)
workspace.
It is not recommended to modify the existing workspace definition files that are provided OOTB. Instead,
create a workspace contribution file in the same directory (STAGE\src\solution). This file allows you to
contribute the same definition sections as if they were in the target workspace definition file.
Workspace contribution file names must begin with workspace_contribution, but the rest of it is up to
you. It is recommended that you also add the name of the target workspace somewhere in the file
name.
Mandatory fields
schemaVersion
The version of the declarative schema to which this workspace contribution definition complies.
workspaceId
The target workspace to be modified.
Optional fields
These are the same fields as you will find in the workspace definition file. Full explanations are found in
modifying your custom workspace.
availablePages
An array of pages (declarative states) which can be navigated by user working in the workspace.
When a sub location is specified, the associated location must also be included.
includeCommands
An array of commands IDs which can be used by a user working in the workspace.
excludedCommands
An array of commands IDs which can not be used by a user working in the workspace.
Example
You want to add your custom sub location (mySubLocation) to the Author and Consumer workspaces.
1. You must create a workspace contribution file for each target workspace. You decide to add the
name of your custom declarative module (mysamplemodule) as well as the name of the target
workspace to the file names.
2. Add the sub location ID and its associated location ID in the list of available pages.
workspace_contribution_mysamplemodule_TcAuthorWorkspace.json
{
"schemaVersion": "1.0.0",
"workspaceId": "TcAuthorWorkspace",
"availablePages": [
"mySubLocation",
"myLocation"
]
}
workspace_contribution_mysamplemodule_TcConsumerWorkspace.json
{
"schemaVersion": "1.0.0",
"workspaceId": "TcConsumerWorkspace",
"availablePages": [
"mySubLocation"
"myLocation"
]
}
Your custom sub location will now be available in the two workspaces.
You can create workspace mappings by first exporting the list of existing workspace mappings provided
with Active Workspace, adding your new workspace, and then importing the list. You can also update
existing workspaces with these utilities.
Use the export_wsconfig utility to export workspace definitions from Teamcenter. This is a Teamcenter
platform command, and must be run in a Teamcenter command-line environment. Information on how
to manually configure the Teamcenter environment can be found in the Teamcenter Utilities Reference
documentation.
<Workspace id="TcActiveAdminWorkspace">
<WorkspaceMapping group="dba" role=""/>
<WorkspaceMapping default="true" group="dba" role="DBA"/>
</Workspace>
<Workspace id="TcAuthorWorkspace">
<WorkspaceMapping default="true" group="Simulation" role="engineer"/>
<WorkspaceMapping default="true" group="Product" role="desginer"/>
<WorkspaceMapping group="dba" role="DBA"/>
</Workspace>
...
</Import>
Many of these examples are mapped to organization groups and roles. Some are labeled as
default=true. Use the exported examples and the following rules to create your own workspaces.
• If group="" and role is assigned to something, then this workspace will apply to that role
regardless of group.
• If role="" and group is assigned to something, then this workspace will apply to every role within
that group.
• If both group and role are assigned, then this workspace will only apply to that combination.
• If default="true", then this workspace takes precedence over others for that group or role.
If one or more workspaces are set to default="true" for a given group or role, then when a user logs
in, the default workspace is picked in following order:
You use the import_wsconfig utility to import your custom workspace definitions.
In the following example, you import your custom file ws.xml, which contains your workspace
definitions.
You can associate XML rendering templates (XRT), also known as style sheets, to a workspace similar to
how you assign them to a group or role. When a user is in a specific workspace, Active Workspace will
look for the workspace-specific XRT to render. If it cannot find one, then it will proceed as normal.
The XRTEditor does not support workspace-based style sheets at this time.
To associate an XRT to a workspace, follow the same process you would normally use for groups or roles,
with the following differences.
To associate a style sheet with a workspace, use the workspace name in addition to AWC. The
preference name syntax is similar to regular, non-workspace, style sheet preference naming.
Following is the precedence for these workspace preferences. As usual, the more specific assignments
will take priority over the less specific.
• AWC_workspaceId.typeName.location.sublocation.stylesheetType
• AWC_workspaceId.typeName.location.stylesheetType
• AWC_workspaceId.typeName.stylesheetType
• If none of these are found, then it will proceed as normal, looking for preferences starting with
AWC_typeName per the normal rules.
For example, you would create the following preference to assign an XRT to the summary page of a
revision when it is part of an assembly when the user is in the myWorkspace workspace.
AWC_myWorkspace.ItemRevision.showObjectLocation.OccurrenceManagementSubLocation.SUMMARYRE
NDERING
The general process to assign a workspace as a scope instead of a group or role, for example, is
essentially no different; the tile collection object references the scope object with its awp0Scope
property.
You can use a Teamcenter platform command-line utility to perform the association of a workspace to a
tile collection scope. This command reads an XML file that contains the definition for the tile collection
scope assignments.
Caution:
Siemens Digital Industries Software does not support the use of this utility for any other purpose.
At this time, there is no export functionality, only import. If you wish to use this utility, you must copy
this XML content and modify it.
Tip:
To assign the tile collection to all users, replace
with
<SiteScope/>
instead.
The rich client was never designed to display the newly designed Awp0Workspace object type. The only
way to find them using the rich client is to create a custom query designed specifically to find
Awp0Workspace objects, and the search results will appear very strange.
Since Awp0Workspace is not a child of WorkspaceObject it has neither an object_name property nor a
default icon. The rich client relies on the object_string property, which is based on object_name.
In order to see which workspace is which, you need to examine their awp0WorkspaceId property. You
can add this property to the column layout in the Details view to make it easier to find which workspace
is which.
Now you can copy and paste them like you would a group, or role, and so on.
You can use the export_uiconfig and import_uiconfig utilities to create column configurations
associated with a workspace.
You use the export_uiconfig utility to export a column configuration from Teamcenter. This is a
Teamcenter platform command, and must be run in a Teamcenter command-line environment.
Information on how to manually configure the Teamcenter environment can be found in the
Teamcenter Utilities Reference documentation.
You can use the -for_workspace option to export the column configuration for a specific workspace.
...
</Import>
Use the exported examples as a guide to create your own column configuration file (myui.xml for
example) or modify the existing one.
You use the import_uiconfig utility to import your custom column configuration file.
In the following example, you import your custom workspace definition file, myui.xml, for use in your
custom workspace.
Precedence
• GroupMember
• Workspace
• User
• Role
• Group
• Site
The only way a column configuration with the GroupMember scope is created is if a user manually
modified theirs using the UI. The user can remove their custom column configurations by using the
Reset command in the column configuration panel of the UI.
You can verify that your workspace has been successfully created by viewing the Client Configuration
location in the UI. If you have dba permissions, you will find the Client Configuration tile in your
gateway.
This location contains a list of the Workspaces and Pages. This may have more functionality in future
versions, but for now it is simply a way to verify that the system knows about your workspace.
Remove a workspace
• Client-side
Remove the client-side portion of the workspace by removing the declarative definition. This is a JSON
file located in your STAGE\src\solution folder.
If your workspace was added to the solutionDef portion of the kit.json file, remove its entry.
"solutionDef": {
"solutionId": "TcAW",
• Server-side
Delete the server-side configuration by using the -action=delete argument of the import_wsconfig
utility.
You can control the layout of certain portions of the declarative interface by using XML rendering
templates (XRT), also called style sheets. These XML files are stored in the Teamcenter database and are
read as needed, so changes made to these rendering templates are reflected in the UI without the need
to build or deploy an application file.
You will need to validate the positioning and usage of these elements manually. There is no schema for
XRT.
Top elements
One of these elements must be the overall element for the XML file.
<rendering>
The overall wrapper element for the panel’s XML file.
<subRendering>
Used instead of rendering when the XML file is injected into another XRT.
Main elements
The main rendering of the view typically consists of a single header followed by one or more pages.
Headers typically contain property elements, and pages typically consist of any number of the property,
container, or layout elements.
<header>
Displayed at the top of the rendered view.
<page>
The way to organize properties onto multiple pages.
Property elements
These elements display information to the user. They are the reason for the rendering. All other
elements are for organization and ease-of-consumption by the user.
<property>
Displays a single property by name. This is the database name of the property, not the localized
display name. You can choose a property on the selected object, or a related object.
<objectSet>
Displays a table of properties from related objects.
<command>
Displays a functional command icon.
<tableProperty>
Displays a special property that is a table. Contrast this with the <objectSet>, which is a collection
of individual properties in a table format, whereas the tableProperty is a single property that
contains a table of information.
<classificationTrace>
Displays the classification hierarchy information for an object, if present.
<classificationProperties>
Displays the classification properties and the hierarchy information for an object, if present.
Container elements
These elements help you group and organize your property elements.
<column>
Creates a column of properties.
<section>
Creates a visible, collapsible grouping.
<content>
Provides logical grouping, typically for conditional content.
<inject>
Allows you to insert additional XRT content from another file.
<htmlPanel>
Layout elements
These elements help you separate and highlight your property elements.
<separator>
Inserts a visible separator between other elements.
<break>
Inserts empty space between other elements.
<label>
Insert a static text string between other elements.
You can use the XRTEditor to view and edit the style sheets that are used to render certain content
within Active Workspace.
This editor allows you to directly edit the XRT controlling the current page's layout. The editor will
automatically find the associated XMLRenderingStylesheet dataset, and present it for view and edit.
By default, administrative users have access to the XRT EDITOR tile on the home page.
The editor will open in a new browser tab. For convenience, you may move this tab to its own browser
window.
The editor in the secondary tab is now linked to your primary tab. The editor will follow your navigations
in the primary tab, displaying the style sheet used to render each page when applicable.
Since editor window is linked to the first window, the editor will follow your navigations in the first
window, displaying the style sheet used to render each page when applicable.
In this example, you have navigated to an assembly with your primary browser tab.
Meanwhile, the editor in the secondary browser tab has detected that a style sheet is used, and is
displaying the XRT contents of the style sheet as well as the registration information.
In this example, you have opened the Add panel with your primary browser tab and selected the Item
type.
Meanwhile, the editor in the secondary browser tab has detected that a style sheet is used, and is
displaying the XRT contents of the style sheet as well as the registration information.
Alternate usage
It is also possible to use the drop-down menus and the Load button to select an XRT by its registration.
This does not require navigation, and can be used to make edits as needed if you already know what you
are looking for.
break
You can insert a non-visible break between elements. This appears as additional space.
USAGE
ATTRIBUTES
None.
Summary
Create
Information
Revise
Save As
EXAMPLE
<section titleKey="tc_xrt_properties">
...
<property name="effectivity_text" renderingHint="label"/>
<inject type="dataset" src="Cm1AuthoringChange"/>
<break/>
<property name="owning_user" renderingHint="objectlink" modifiable="false"/>
<property name="owning_group" renderingHint="objectlink" modifiable="false"/>
...
</section>
classificationTrace
You can display the classification trace (hierarchy) of the object. For example:
TC Classification Root > Classification Root > Material Families > Bar Families > Solid Bar > Rectangular
Bar.
USAGE
This element is typically used within the header element, but may be used anywhere the various
property elements can be used.
ATTRIBUTES
None.
Summary
EXAMPLE
<column>
<section titleKey = "tc_xrt_properties">
<property name="object_name"/>
<classificationTrace />
</section>
<section titleKey="tc_xrt_ClassificationProperties">
<classificationProperties/>
</section>
</column>
classificationProperties
You can display the classification properties of the object, including the classification trace. Properties
and their values are rendered as name/value pairs in static text.
USAGE
This element may be used anywhere the various property elements can be used.
ATTRIBUTES
None.
Summary
EXAMPLE
<content visibleWhen="ics_classified!=null">
<section titleKey="tc_xrt_ClassificationProperties">
<classificationProperties/>
</section>
</content>
column
The column element is a container element that can help organize your style sheet content.
In the XRT hierarchy, sections and columns must not be siblings. Typically, columns are children of the
page element and help make the page easier to read due to the typical wide-screen layout.
ATTRIBUTES
width (optional)
This is a percentage of the overall screen width, even if the percent sign is not used.
If the column percentages total less than 100%, the empty space will not fill.
If the column percentages total more than 100%, overflow columns are placed on a new row.
Summary
EXAMPLE
ADDITIONAL INFORMATION
As the browser tab narrows, the contents of extra right-hand columns will move onto the end of the first
column.
command
Specifies a command representation to be displayed on an object set table. Use of the <command>
element anywhere else on an Active Workspace style sheet is not supported.
ATTRIBUTES
commandId
Specifies the command to be executed. The attribute value must be a key into a property file and
must be a valid command ID.
Copy
localSelection = true (required)
You must provide a target for the Copy command, which is passed from the UI when local selection
is true.
Add
visibleTabs = {new | palette | search} (optional)
You can specify which panels are available when the user creates an object. If this parameter is not
used, all available tabs will appear.
Following is an example of displaying only the palette and search tabs, effectively hiding the new
tab.
<command commandId="com.teamcenter.rac.common.AddNew">
<parameter name="visibleTabs" value="palette,search"/>
</command>
Caution:
Do not leave spaces in the comma-separated list of tabs.
Summary
EXAMPLE
In this example, the command element adds the Add New and Paste buttons in the object set.
content
The content element is a logical container element that can help organize your XRT elements. Use this
element if you want conditional control the display of a property, a group of properties, a section, and so
on.
USAGE
You may use the content element to group all other elements, including other content elements, but not
rendering elements.
ATTRIBUTES
visibleWhen
Defines the conditional display of the element based on a property value or a preference value. This
attribute behaves the same as the one for the <page> element.
Summary
EXAMPLE
<column>
<section titleKey="...">
<property name="..."/>
<property name="..."/>
...
<break/>
<content visibleWhen="...">
<section titleKey="DCP Properties">
<property name="..." titleKey="..."/>
<property name="..." titleKey="..."/>
...
</section>
</content>
</section>
<content visibleWhen="...">
<section titleKey="Custom Properties">
<property name="..."/>
<property name="..."/>
...
</section>
</content>
...
</column>
EXAMPLE
Following is sample code from the ItemSummary.xml XML rendering style sheet showing the section
element:
<page titleKey="tc_xrt_Overview">
<column>
<section titleKey="tc_xrt_AvailableRevisions">
</section>
<section titleKey="tc_xrt_ItemProperties">
</section>
<section titleKey="tc_xrt_ClassificationProperties">
</section>
</column>
<column>
<section titleKey="tc_xrt_Preview">
</section>
<section titleKey="tc_xrt_actions" commandLayout="vertical">
</section>
</column>
</page>
header
USAGE
This is typically at the top level of the style sheet, a direct child of the rendering or subrendering
elements.
ATTRIBUTES
None.
Summary
EXAMPLE
ADDITIONAL INFORMATION
The <header> element is optional. If it is not included, or if it does not contain any elements, the header
is automatically populated with the object_string property as a label. This label is not selectable.
• <image>
• <property>
• <classificationTrace>
htmlPanel
ATTRIBUTES
declarativeKey
The name of a declarative View file to insert.
src
The URL of a web page to insert.
Summary
Create
Information
Revise
Save As
EXAMPLE DECLARATIVEKEY
Following style sheet snippet shows how to implement a declarative view as your html content. In this
example, the Rv1RelationsBrowserView.html declarative view will be inserted. Just like any declarative
view, there must be a corresponding view model file, and any other supporting files that may be
needed.
Optionally, use the enableresize attribute to control the user's ability to change the size of the
declarative panel.
EXAMPLE SRC
Following style sheet snippet shows an inserted web page from the customer's site, including a
reference to a property. You must specify any properties used in the URL by using the <property>
element inside the HTML panel element. When used in this way the property element is not displayed in
the UI, it is only present to ensure the property is loaded in the client.
<htmlpanel src="www.customersite.com/parts/app/
{{selected.properties['item_id'].dbValue}}">
inject
You can break up larger XRT content into smaller, more manageable, logical groups of elements, and
then inject them back into the main rendering file. You can also inject HTML content instead.
ATTRIBUTES
type
Specify whether you will give the name of a dataset, or the name of a preference that contains the
name of the dataset.
dataset Use this option if you will directly specify the name of the dataset.
preference Use this option if you will indirectly specify the name of the dataset through a
preference.
This allows you to take advantage of the ability to have the value of a preference
vary based on a user's credentials.
src
Specify the name of the dataset or preference.
• If type="dataset", this is the name of the dataset that contains the code to be injected.
• If type="preference", this is the name of the preference that contains the name of the
dataset that contains the code to be injected.
Summary
Create
Information
Revise
Save As
EXAMPLE
...
<inject type="dataset" src="S2clScalarRatingOverview"/>
<inject type="dataset" src="ProjectListInfo"/>
<inject type="dataset" src="LicenseListInfo"/>
</column>
<column width="25%">
...
</column>
<column width="45%">
...
</column>
</page>
Dataset: S2clScalarRatingOverview
<subRendering>
<section titleKey="tc_xrt_Ratings">
<htmlPanel declarativeKey="ratingOverViewPanel"/>
</section>
</subRendering>
Dataset: ProjectListInfo
<subRendering>
<section titleKey="tc_xrt_Projects">
<property name="owning_project" renderingHint="label"/>
<property name="project_list"/>
</section>
</subRendering>
Dataset: LicenseListInfo
<subRendering>
<section titleKey="tc_xrt_Licenses">
<property name="license_list"/>
</section>
</subRendering>
ADDITIONAL INFORMATION
Avoid using a large amount of <inject> elements in your XML rendering templates. It can negatively
impact the performance of the client.
Do not use the visibleWhen attribute with the inject element to check the object type. Style sheets are
registered against object types Use multiple stylesheets, each registered to a different object instead. Do
not attempt to create a single, over-arching XRT for all object types.
label
ATTRIBUTES
textKey
Specifies the key used for localization. If it is not defined or otherwise found, the string defined by
the text attribute is used.
text (optional)
Specifies a static string of the title for this tab. This attribute is used when the textKey is not found
by localization.
class
Defines the cascading style sheet (CSS) class used to provide the style for the label text. The CSS
class must be an existing class.
Summary
Create
Information
Revise
Save As
EXAMPLE
If you add a URL address in the text attribute, it will be automatically rendered.
Example:
<section titleKey="tc_xrt_properties">
...
<property name="object_type"/>
<separator/>
<label text="***My label URL http://www.siemens.com ***" />
<separator />
...
</section>
Because a URL is included in the label tag, it is automatically rendered on the page.
nameValueProperty
Name-value properties are a specialized form of the table property designed for name-value pairs.
To display a name-value property in Active Workspace, use the nameValueProperty tag instead of the
objectSet tag in your custom Active Workspace summary style sheet.
Attributes
name (required)
Give the name-value property a name.
source (optional)
Specifies the related object from which to retried the name-value property. You must use dynamic
compound properties to specify a source.
enablePropEdit (optional)
Set this to false to disable the user's ability to automatically start editing on this table. If the user
wants to make changes to values on this table, they must start editing manually.
Use the <property> element inside the <nameValueProperty> element. You must use the fnd0Name
and fnd0Value properties.
Example:
<section title=...>
<nameValueProperty
name="myNVProp">
<property name="fnd0Name"/>
<property name="fnd0Value"/
>
</nameValueProperty>
</section>
Summary
Examples
Example:
This example shows a name-value property on the selected object.
<nameValueProperty name="aw2_NameValue_Pair">
<property name="fnd0Name"/>
<property name="fnd0Value"/>
...
</nameValueProperty>
Example:
This example uses DCP to show a name-value property on a related object.
<nameValueProperty source="REF(IMAN_specification,AW2_NameValueRevision)"
name="aw2_NameValue_Pair">
<property name="fnd0Name"/>
<property name="fnd0Value"/>
...
</nameValueProperty>
objectSet
You can use an object set in your style sheets to place a table of properties in the UI. These properties
can be from the selected object, or from related objects. The initial definition of the table columns and
any changes a user makes, like arranging, hiding or showing columns for example, are tracked in a
column configuration.
ATTRIBUTES
defaultdisplay (required)
Specifies the default format to use when displaying the set of objects. The value must be any valid
display element.
source (required)
Specifies the comma-delimited set of run-time properties or relations that return the desired set of
objects. The format for the attribute value is relation.type, where relation is the name of a relation,
run-time, or reference property or a GRM relation, and type represents the type of objects to be
included. You can also use dynamic compound properties to specify a source. Multiple sources
can be specified as a comma-separated list.
Subtypes of the specified object type are recognized, so specifying the ItemRevision type will also
return all DocumentRevision objects, Design Revision objects, and so on. When using a relation
however, you must explicitly specify the relation. Subtypes of the specified relation are not
considered.
The source definition also determines which properties are available to the display types. If you
specify a parent object, but the property you are interested in is defined on one of the child objects,
then the property may not display properly. Add the child object as a source as well.
showConfiguredRev (optional)
If any of the defined sources is an item type, then setting this attribute to true uses revision rules to
determine which of the item's revisions to display instead of the item itself.
maxRowCount (optional)
The maximum number of rows displayed in the tableDisplay regardless of available vertical space.
sortby (optional)
Specifies the object property to sort the set of objects by prior to rendering.
The default value is object_string.
sortDirection (optional)
Specifies the direction in which the set of objects should be sorted. Valid values are ascending or
descending.
The default value is ascending.
enablePropEdit (optional)
Set this to false to disable the user's ability to automatically start editing on this table. If the user
wants to make changes to values on this table, they must start editing manually.
filterable (optional)
Allow this column to be filtered by the user using the UI. The type of filter shown to the user will
depend on the data type of the column. Dates and numbers are automatically detected and will
allow a range filter, but everything else is treated as a string. Set to false to prevent filtering.
You can set filterable=false on individual properties in the table display or in your column
configuration, or set it on the source to prevent filtering for all columns.
Example:
Filtering will be disabled on all columns, regardless of their individual settings.
Example:
Only the second column will have filtering disabled.
hidden (optional)
Allow this column to be hidden by default. The benefit of hiding a column is that it allows the user
to expose the property if they want, but otherwise the client will not load the information which
saves time when loading a page. Set to true to hide the column.
Example:
The second property will not be displayed on the table, but a user could arrange their table to
show it.
frozen (optional)
Use frozen="true" on a property to freeze horizontal scrolling at that column and all previous
columns. If you specify frozen multiple times, only the last one matters.
Example:
The following produce the same result: the first two columns will be frozen.
<tableDisplay> <tableDisplay>
<property name= ... /> <property name= ... frozen="true"/>
<property name= ... frozen="true"/> <property name= ... frozen="true"/>
<property name= ... /> <property name= ... />
... ...
</tableDisplay> </tableDisplay>
DISPLAY ELEMENTS
The following elements are defined within an object set to determine the availability of the display
types.
<tableDisplay>
<listDisplay>
<imageDisplay>
<thumbnailDisplay>
Column configuration
You can use the same column configuration system for your object set tables that are used for
declarative tables by specifying the objectSetUri attribute. If you use column configuration, any
properties listed in the table display section will be ignored.
Using this method creates a URI for the column configuration to reference, just like a declarative
page's clientScopeURI.
<tableDisplay objectSetUri="myFilesColumnConfig"/>
If you do not specify a column configuration, one will be created automatically for each user when
they modify the table. You can disable this behavior by adding the enableArrange attribute and
setting it to false — your users will not be allowed to modify the table.
<tableDisplay enableArrange="false">
Property elements
You can use a list of <property> elements.
If a user customizes the table by arranging or hiding columns, a column configuration will
automatically be created for that user to store their changes, and then any property elements in the
style sheet will be ignored. If that user ever resets their columns, the table will revert back to the
object set's property elements.
COMMAND ELEMENT
The <command> element can be added to an object set to display an existing command on the table.
This is the same as the declarative uiAnchor known as aw_objectSet_right. If you define a custom
command handler using this anchor point, this XRT element is redundant. Use this when you only want
the command to appear on this specific table.
<command commandId="Awp0ShowAddObject"/>
You can optionally provide arguments to the command using parameter elements.
<command commandId="myCustomCommand">
<parameter name="myParameter" value="some value"/>
</command>
Since Active Workspace can use style sheets that were originally designed for the rich client, there are
two commands that are internally translated.
In these examples, you are creating the source definition for an object set on folders.
• You want to display any common object that is in a folder. The Folder object uses the contents
property to maintain this list. The WorkspaceObject is the parent of all common user-facing objects.
<objectSet source="contents.WorkspaceObject">
• You only want to display documents. You decide that this would include the DocumentRevision,
MSWordX, and PDF object types. This time, even though the folder might contain other objects, they
are ignored and the table only displays your documents. This will also include children of the
DocumentRevision, like the Specification Revision object, for example.
<objectSet source="contents.DocumentRevision,contents.PDF,contents.MSWordX">
Because the following table display section of an object set table defines an <objectSetUri>, the listed
<property> elements will be ignored.
<tableDisplay objectSetUri="myObjectSetTableConfig">
<property name="object_name"/>
<property name="object_desc"/>
<property name="owning_user" renderingHint= ... />
...
</tableDisplay>
The following column configuration will determine which columns appear in the object set's table:
The following example was taken from an OOTB style sheet, but all rich client elements and attributes
have been removed for clarity. Also, a hypothetical custom command and column configuration have
been added.
<objectSet source="IMAN_specification.Dataset,IMAN_reference.Dataset,
IMAN_specification.Dataset,IMAN_reference.Dataset,
IMAN_manifestation.Dataset,IMAN_Rendering.Dataset,
TC_Attaches.Dataset,IMAN_UG_altrep.Dataset,
IMAN_UG_scenario.Dataset,IMAN_Simulation.Dataset"
defaultdisplay="listDisplay"
sortby="object_string"
sortdirection="ascending">
<tableDisplay objectSetUri="myFilesColumnConfig"/>
<thumbnailDisplay/>
<listDisplay/>
<command commandId="Awp0ShowAddObject"/>
<command commandId="myCustomCommand">
<parameter name="myParameter" value="some value"/>
</command>
</objectSet>
parameter
Use this element is not used on its own, rather it is used to pass values to other elements. The other
elements will specify when and where you can use the parameters element.
ATTRIBUTES
name
The name of the parameter being passed.
value
The value of the parameter being passed.
This tag is not specifically supported on a style sheet, but rather can only be used in conjunction with
another element.
EXAMPLE
Other elements will provide the specific parameter names and possible values available for use in each
case.
page
Presents a tab panel in a dialog box or view. If the page element is not defined in the XML file, a default
page is created.
USAGE
This is typically at the top level of the style sheet, a direct child of the rendering or subrendering
elements, although it may be the child of a content element.
ATTRIBUTES
titleKey Specifies the key used for localization. If it is not defined or otherwise found, the string
defined by the title attribute is used.
title Specifies a static string of the title for this tab. This attribute is used when the titleKey
(optional) is not found by localization.
visibleWhen Defines the conditional display of the element based on a property value or a
preference value. More information about this attribute follows.
Summary
Create
Information
Revise
Save As
You specify when the page will be visible with a condition. The value checked against can be null or a
string, and you can compare that value to the value of a:
visibleWhen="property-name==xxx"
visibleWhen="property-name==xxx"
• Teamcenter preference
visibleWhen="{pref:preference-name} == xxx"
visibleWhen="{pref:preference-name} !== xxx"
visibleWhen="{const:global-constant-name} == xxx"
visibleWhen="{const:global-constant-name} !== xxx"
xxx can be a string or {prop:property-name} or null (representing the given constant is not defined).
visibleWhen="{const:type-name:type-constant-name} == xxx"
visibleWhen="{const:type-name:type-constant-name} !== xxx"
type-name must be either a BMIDE type name or equal to the static string ContextType, which
represents the current business object type.
visibleWhen="{const:type-name:property-name:property-constant-name} == xxx"
visibleWhen="{const:type-name:property-name:property-constant-name} == xxx
type-name must be either a BMIDE type name or equal to the static string ContextType, which
represents the current business object type.
You can:
• Compare a single string value to a list of property values, but array matching with the visibleWhen
value is not supported.
For example: If myProp=[string1, string2, string3] and the evaluation is visibleWhen
“myProp==string1, string2, string3”, this would not work.
However visibleWhen “myProp==string1” would work, because string1 is in the myProp array.
• Check the following property types for null and not null (only).
typed and untyped reference, typed and untyped relation, external reference, date
Example:
Display the page if myProp contains no value (null).
Example:
Display the page if the TC_Enable_MyPref preference has no value.
Example:
Display the page if the Item_ColumnPreferences preference contains object_string and
object_type, as the first two values.
Example:
Display the page if a related document revision attached with a reference relation has a subject
"FMEA".
Caution:
If there is only one page, and the visibleWhen condition hides this page, Active Workspace
ignores this condition and makes the page visible.
EXAMPLE
property
Use this element to display a property name and value from the selected object. You must include at
least one property in the XML definition, otherwise, the system displays an empty panel. Note the
following:
• You cannot add the same property multiple times in the same style sheet.
• Using style sheets to edit reference properties and reference property arrays which utilize non-
workspace objects (not a child of WorkspaceObject in the BMIDE) is not supported.
For example, owning_group is a TypedReference property whose Referenced Type is
POM_system_class, which is not a workspace object type.
ATTRIBUTES
border
Determines whether the border is displayed. Valid values are true and false. This works only with
the titled style.
modifiable
Set this to false to prohibit the user from editing a property that is normally modifiable. For
example, if you want users to see but not change the object's description on this sheet, then use:
Set this to false on a property for which you do not want the client to ask the server for an auto
assigned value until the user selects the Assign button.
name
Specify the database name of a property on the object, not the display name. This is a required
attribute.
<property name="object_name"/>
You can also use dynamic compound properties to specify a property from a related object.
<property name="GRM(IMAN_specification,DocumentRevision)
.item_revision_id"/>
Note:
When using this attribute on a create style sheet, there is additional functionality. You can
specify a property from another object that is related to the original object by the revision,
IMAN_master_form, or IMAN_master_form_rev relations. To do this, specify the relation
trail followed by the name of the property on the destination related object, separated by a
colon.
For example, if a create style sheet is registered for an item,
name=revision:item_revision_id
name=IMAN_master_form:project_id
• to display the serial_number property from the item revision master form, you need to
traverse from the item to the revision, and then to the revision's master form.
name=revision:IMAN_master_form_rev:serial_number
renderingHint
Specify the component used to render this property. This is an optional attribute. If not defined, the
default renderer is used based on the property type. For more information, see Rich Client
Customization in Teamcenter help.
renderingStyle
Define the rendering style used in the rendering component. There are three styles: headed,
headless, and titled.
• Headed
This is the default rendering style. The property name is displayed on the left followed by the
property value renderer.
• Headless
This style renders only the property value without displaying the property name in front of it.
• Titled
The property name is displayed on the top of the property value renderer.
visibleWhen
Defines the conditional display of a property based on one of two types of expressions comparing a
property or preference to a value. The value can be null or a string, including a string containing
wildcard characters. Multiple values can be checked with an array property or preference. When
checking an array value, use a comma as a delimiter for the values. The two types of expressions
check the following:
• To check the value of a property on the selected object, use the real (database) name of the
property in the expression.
If you want to show a "myprop" property only if the object_desc property begins with the word
Testing, use the following:
searchFilter Use this parameter to configure a search prefilter on the list of objects presented to the
user when they add a row to the table.
Summary
Create
Information
Revise
Save As
EXAMPLE
rendering
This is the root element of a style sheet. All XRT elements must be contained within this root element.
ATTRIBUTES
These attributes define the schema namespace attributes for the style sheet. These should not be
modified.
xmlns:xsi
Specifies the default xsi prefix.
xsi:noNamespaceSchemaLocation
Active Workspace style sheets do not have a specific schema namespace.
Summary
Create
Information
Revise
Save As
EXAMPLE
section
The section element is a container element that can help organize your style sheet content.
In the XRT hierarchy, sections and columns must not be siblings. Typically, sections are placed within
columns to further divide up the properties into collapsible groupings.
ATTRIBUTES
titlekey Specifies the key used for localization. If it is not defined or otherwise found, the string
(optional) defined by the title attribute is used.
title Specifies a static string of the title for this tab. This attribute is used when the titleKey
(optional) is not found by localization.
initialstate Specifies whether the view or section should be expanded or collapsed on initial
rendering. Valid values are expanded or collapsed. The default value is expanded.
This attribute is optional.
You may also use the collapsed attribute, but Siemens Digital Industries Software
recommends that you use initialstate instead to avoid confusion.
Summary
EXAMPLE
<page titleKey=...>
<column>
<section titleKey=...>
...
</section>
<section titleKey=...>
...
</section>
</column>
<column>
<section titleKey=...>
...
</section>
<section titleKey=...>
...
</section>
</column>
</page>
separator
You can insert a visible break between elements. This appears as a thin line.
USAGE
ATTRIBUTES
None.
Summary
Create
Information
Revise
Save As
EXAMPLE
<section titleKey="tc_xrt_properties">
...
<property name="effectivity_text" renderingHint="label"/>
<inject type="dataset" src="Cm1AuthoringChange"/>
<separator/>
<property name="owning_user" renderingHint="objectlink" modifiable="false"/>
<property name="owning_group" renderingHint="objectlink" modifiable="false"/>
...
</section>
subRendering
This element must logically be a child of the rendering element. Use this element as the root element in
an XRT file that is being injected into another.
ATTRIBUTES
None.
Summary
Create
Information
Revise
Save As
EXAMPLE
Then, in the main style sheet, use the <inject> element to insert this XML.
tableProperty
ATTRIBUTES
name (required)
Give the table property a name.
source (optional)
Specifies the related object from which to retried the table property. You must use dynamic
compound properties to specify a source.
enablePropEdit (optional)
Set this to false to disable the user's ability to automatically start editing on this table. If the user
wants to make changes to values on this table, they must start editing manually.
Get more information about how table properties are not tables.
Use the <property> element inside the <tableProperty> element to choose which of the columns from
the table you wish to display, and in which order.
Example:
<tableProperty name="..">
<property name="..."/>
<property name="..."/>
...
</tableProperty>
Summary
EXAMPLES
Example:
This OOTB example shows a table property on the selected object.
<tableProperty name="cae0KPITable">
<property name="cae0KPITableName"/>
<property name="cae0KPITableValue"/>
...
</tableProperty>
Example:
This OOTB example uses DCP to show a table property on a related object.
<tableProperty source="GRM(IMAN_specification,UGMASTER)"
name="nx0MaterialsTable">
<property name="nx0MaterialAssignmentType"/>
<property name="nx0MaterialName"/>
...
</tableProperty>
Active Collaboration, accessed using the DISCUSSIONS tile on your home page, is an internal
collaboration application in Active Workspace that allows:
• Threaded discussions, both public and private messages, with multiple users working on any given
workspace object.
• Product snapshots (3D data associated with a product), which requires Teamcenter lifecycle
visualization.
• Tracked discussions with an assigned status (Open, In Progress, and Closed) and priority (Low,
Medium, and High) for discussions you want to track.
• Automated messages that show changes to a discussion or action, such as a status change,
participants added or removed, and changes to privacy.
• Role-based permission to specific users to delete discussions that are no longer needed.
Active Collaboration can be installed using either Teamcenter Environment Manager (TEM) or
Deployment Center.
Install Active Collaboration from either Teamcenter Environment Manager (TEM) or Deployment Center.
Note:
If you have existing questions, replies, and comments from Active Collaboration 5.0 or earlier or
Active Collaboration for Retail, you may optionally do a one-time migration of these questions,
replies, and comments to Discussions using the ac0_migrate_s2cldata utility.
Preference Definition
Ac0AutoMessagesEnabled Indicates whether automated messages are enabled. If set to true,
automated messages are generated on the Active Collaboration
Discussion panel whenever:
Preference Definition
The default is true.
If you are using snapshots shared in discussions, you must configure two access control lists (ACLs) in
the rich client. Use Access Manager to create an SnapshotDiscussionAccessor rule and
PrivateVisSessionDiscussionACL. These enforce participant checks and give permission to those
participants to view a snapshot shared in a discussion.
Assistant configuration
The Assistant suggests the next possible actions to perform and provides the relevant data required to
perform them. These suggestions are based on the context, history, and usage frequency of actions
performed by other previous users belonging to the same role and group.
You can configure the Assistant panel using the provided site and user preferences.
Before you can configure the Assistant panel, you must install the features and the microservice.
Install the following from the Features panel of Teamcenter Environment Manager (TEM):
• Assistant (server)
Installs the server-side definitions for the Assistant.
Select the Active Workspace→Server→Active Workspace Assistant feature in the corporate server.
• Assistant (client)
Installs the user interface elements for the Assistant.
Select Active Workspace→Client→Active Workspace Assistant.
You can manage the settings for the Assistant panel using the provided site and user preferences. The
availability of options such as Like, Dislike, Show, or Tutor Mode can also be configured using
preferences.
Find the list and description of these preferences in the Active Workspace Assistant product area.
The Assistant uses the Command Prediction Service microservice, which stores data in a dedicated
database that you configure during installation.
This procedure assumes that Teamcenter and Active Workspace, including the microservice framework,
are installed.
1. Ensure your environment includes the Teamcenter Foundation, Active Workspace, and Teamcenter
Microservice Framework software.
• Deployment Center
• TEM
• In the Media Locations panel, specify locations of these software kits. If you use a minor
release version of Teamcenter, make sure you include the major and minor release software
kits.
• Deployment Center
• TEM
• In your server and client configurations, add the corresponding server and client Active
Workspace Assistant feature.
For information about the TEM panels, in TEM, see the Help button
Note:
• When you configure the database for the Command Prediction Service microservice, make
sure you have the database system user credentials, and make sure you do not use the same
tablespace as the Teamcenter database. The PredictiveUI user,database, and tablespace must be
different from the Teamcenter and Server Manager database.
If you choose to use an existing database for the Command Prediction Service microservice,
make sure that you manually create the database before the installation.
If you choose to use an existing database for the Command Prediction Service microservice, you must
create the database using template scripts prior to install.
These scripts can be modified to create the database user, the tablespace, and the schema that includes
the tables and indexes. Apart from changing tokens to appropriate values, no other changes to the
scripts are advisable.
Note:
The steps of running these scripts are similar to manually creating a Teamcenter database.
For more information, see Create an Oracle database and Create an SQL Server database in
the Teamcenter help.
The CPS_manage_password password management utility is used for generating an encoded database
user password for the Command Prediction Service database. Changing the database user password for
Command Prediction Microservice database requires updating the same in the microservice to be able to
connect to the database. Failure to update the password results in database connection failure. This
utility encodes the given input string, which can be replaced in the pred.pwd file.
The Command Prediction Microservice reads the database user password from the pred.pwd file for
connecting to the Command Prediction Service database.
CPS_manage_password
On Windows
1. Traverse to the location <microservice_root>\commandprediction-<service_version> and
execute the following command:
2. Copy the generated string with the above command and update the pred.pwd file to replace
the existing string with newly generated string.
3. Restart the Teamcenter Process Manager to enable the microservice to read the updated
password from the file.
On Linux
1. Get the container ID of the running container for the Command Prediction Service.
docker container ls
2. Generate a new encoded password string by executing the utility inside the container.
docker service ls
docker secret ls
The CPS_migrate_user_data utility migrates MD5 hashed data for users, groups, and roles to SHA256
hashed data in the Command Prediction Service database. Before running this utility, you must use the
admin_data_export utility export the Teamcenter user, role, and group data to a file.
CPS_migrate_user_data [OPTION]
-dbplat - Database platform used for Command Prediction Services such as MSSQL, ORACLE, or
POSTGRESQL.
-namedinstance - For MSSQL platform, connect with named instance instead of database port.
-instance - Command Prediction Service database instance name. In the case of the Oracle
database, the instance is SID, while in the case of POSTGRESQL and MSSQL databases, the instance
is the name of the database
-inputfile - Full file path of the Organization.XML file generated using the Teamcenter
admin_data_export utility.
-batchsize - Number of user profiles to be updated during the user data migration run. If not
provided, the utility migrates the data of all the users.
1. Run the admin_data_export utility to export Teamcenter user, group and role data.
For Windows
a. Open the Teamcenter command prompt.
2. Extract the newly created ZIP file and locate the Organization.XML file in the <extracted_folder>
\ADMINISTRATION_DATA\Organization folder.
For Windows
a. Open the Command prompt at the <Microservice_Root>\CommandPrediction-<version>
folder.
CPS_migrate_user_data -dbplat=<db_platform>
-hostname=<db_hostname> -username=<db_user>
-password=<db_password> -port=<db_port>
-instance=<db_instance> -inputfile=<path_to_organization_xml>
docker container ls
docker cp <path_to_oraganization_XML_on_host>
<command_prediction_container_id>:/app/
The stand-alone confidentiality agreement, which must be configured, appears during post logon. When
the user selects I agree and clicks Continue, it ensures that the user has accepted the agreement and is
then able to gain access to the client. By selecting I agree, the user agrees to comply with the
confidentiality agreement.
Note:
The acceptance of the confidentiality agreement is not recorded anywhere in the system.
However, if you require your users to agree to a confidentiality agreement, for example, for
authorized data access (ADA) requirements, you can configure a custom confidentiality
agreement statement to be displayed following the selection of their current working
location. This information can be stored so you can generate a report for audit purposes.
To configure the stand-alone confidentiality agreement, you must use the AWC_PostLoginStages
preference. This preference lists the postlogon stages in the sequence displayed on the Active
Workspace client after successful authentication. You must add the string ConfidentialityAgreement
when defining this preference. Doing so displays the confidentiality agreement page after the user
successfully logs on.
Change management is an organized way to implement changes to products and ensure the quality of
every change. Users can access the changes they have implemented by clicking the CHANGES tile to
display the Changes page.
How your organization processes changes is unique, and you can configure aspects of how changes are
handled to match your organization's process. For example, you can set a different default workflow to
be initiated when a user submits a change request.
Before you can configure change management, you must install the features. Install the following from
the Features panel of Teamcenter Environment Manager (TEM):
User-defined child objects of the ChangeItem business object must only be available in the Create
Change menu available in the primary toolbar in Active Workspace.
To implement this behavior, you need to add the internal names of the custom child objects of the
ChangeItem business object to the AWC_TypeSelectorExclusionTypeList site-level preference.
Note:
If you don’t add these custom child objects to the preference, they will also be available in the Add
command on the Home page, which is incorrect.
The internal names of the following child objects are included in the
AWC_TypeSelectorExclusionTypeList site-level preference:
• ChangeNotice
• ChangeRequest
• ProblemReport
• Cm0GnWorkOrder
Use the following Teamcenter rich client preferences to set the default workflow that should start when
a user submits a problem report, change notice, or change request in Active Workspace. The default
workflow is ChangeItemRevisionDefaultWorkflowTemplate, which is a simple process to select a
signoff team and then have each participant of the team perform his/her signoff task to approve the
change.
When deriving a change object from a Set the relations propagated using
You configure which change object users can derive from another using the CM_change_derivations
preference.
For more information, refer to Environment Variables Reference in the Teamcenter help.
Use the Teamcenter Business Modeler IDE deep copy rules to set what objects and attributes are copied
when a user creates a copy of a change. Deep copy rules define whether objects belonging to a business
object instance can be copied when a user performs a save as or revise operation on that instance. Deep
copy rules can be applied to any business object type and are inherited by children business object
types.
Using deep copy rules, you can configure whether the following are copied for a change:
The figure shows the deep copy rules defined by default for a ChangeItemRevision in the Deep Copy
Rules editor. The rules define that when copying a change, copy the problem, impacted, and reference
objects, but do not copy the incorporates and solution items.
Refer to the Configure your business data model in BMIDE in the Teamcenter help for more information.
Note:
Copying changes is not available in the Teamcenter rich client.
Define deep copy rules for copying options from an ECR to an ECN
Use Teamcenter Business Modeler IDE deep copy rules to configure the copying options when a user
derives an ECN from an ECR. Deep copy rules define whether objects belonging to a business object
instance can be copied when a user performs a Derive operation on that instance. Deep copy rules
configure the copy option, providing the ability to select individual objects from the Affected Items and
Reference Items in an ECR.
Using deep copy rules, you can configure whether the following are copied into the ECN:
• Impacted Items
• Problem Items
• Reference Items
You can create rules for the default relation types CMHasImpactedItem, CMHasProblemItem,
CMReferences.
Refer to the Configure your business data model in BMIDE in the Teamcenter help for more information.
You can create a Derive deep copy rule for GnChangeRequestRevision and
GnProblemReportRevision.
• Select the Show Inherited Rules check box to display all rules inherited from parent business
objects.
• Select the Organize by Inheritance check box to sort the rules by parent business object names.
• Use the Add, Edit, or Remove buttons to work with the deep copy rules.
3. Select the Deep Copy Rules tab and click the Add button to add a row for each rule.
4. Choose the business object that the deep copy rule is applied to.
Parameter Description
Parameter Description
Action Choose the kind of copying to be allowed for the business object. The
available options differ depending on the type of target business
object.
Select CopyAsReference. This creates a new relation between the new
revision and the related object. Therefore, modifications performed on
the copied object are propagated to the source object.
Secured Select if you want to prevent the deep copy rule from being modified or
overridden by another template.
Copy Properties on Select if you want persistent properties on relation objects carried
Relation forward when the primary objects participating in relations are revised
or saved as new objects.
If not selected, only mandatory properties are carried forward.
5. Click Finish.
The rule is created and appears in the table in the Deep Copy Rules editor.
As an administrator, you can configure the list of values (LOV) for the requested change types available
for the Impacted Items table.
• Revise
• Create New
You can set the properties that filter the changes that appear in the Changes page for changes found
when selecting the Submitted tab. The changes are change business objects of the
ChangeItemRevision type and its subtypes.
To set the filter, in the Business Modeler IDE, set the following property constants on the property of the
change object on which you want to filter.
• Cm1ChangeCanFilter
Indicates that change business objects can be filtered on the property.
• Cm1ChangeFilterPriority
Indicates the priority of the property that determines its order in the list of filters displayed in the
Changes page. The lower the value, the higher its priority and, therefore, the higher its position in
the list of filters.
Siemens Digital Industries Software recommends that you assign values from a range to
accommodate additional properties in the future. For example, assign priorities such as 100, 200, and
300, instead of 1, 2, and 3.
By default, the following properties are shown as filters for Change business objects:
• Logical
Refer to Configure your business data model in BMIDE in the Teamcenter help for more information.
You can define which queries are used for each sublocation within the Change location.
The queries used for each sublocation must be the server-side Teamcenter platform saved queries.
Active Workspace saved queries will not work in this case.
You can see a list of server-side saved queries (and execute them manually) in the Active Workspace
client by using Advanced Search.
You can view the definition of and create new server-side Teamcenter platform saved queries by using
the Query Builder application in the rich client.
Redefining the queries of the tabs is particularly helpful when you have defined custom participants or
changes. You can replace your custom participants and changes with those in the default queries so the
tabs show your company’s content.
You must modify the CMMyChangesSublocationQuery preference to modify which queries are used
for each sublocation. The Cm1MyChangesProvider uses the preference value pairs to select the query
which provides the data to the page. The preference definition contains the details of implementation.
Following are the default queries for each tab to display changes with a closure setting of Open and the
logged-on user is the requester, analyst, or change specialist:
• All tab
Get all ChangeItemRevs where Closure=Open AND (Requestor = Logged-in User OR Analyst =
Logged-in User OR Change Specialist1 = Logged-in User)
• Submitted tab
Get all ChangeItemRevs where Closure=Open AND (Requestor = Logged-in User OR Analyst =
Logged-in User OR Change Specialist1 = Logged-in User) AND ProcessStageList != NULL
• Saved tab
Get all ChangeItemRevs where Closure=Open AND (Requestor = Logged-in User OR Analyst =
Logged-in User OR Change Specialist1 = Logged-in User) AND ProcessStageList = NULL
• Approved tab
Get all ChangeItemRevs where Closure=Open AND (Requestor = Logged-in User OR Analyst =
Logged-in User OR Change Specialist1 = Logged-in User) AND Disposition = Approved
• Disapproved tab
Get all ChangeItemRevs where Closure=Open AND (Requestor = Logged-in User OR Analyst =
Logged-in User OR Change Specialist1 = Logged-in User) AND Disposition = Disapproved
Classification configuration
What is classification?
Classification is a process where you group objects into classes to make it easier to find for reuse. During
the classification process, you assign attribute values that help in the searching of the object, such as
measurements, material, or unit of measure. The more attribute values you provide, the easier the
object is found.
Classification can support both traditional classification classes or classification standard taxonomy (CST)
classes. CST classes are available for eCl@ss-compliant data. If your company is just starting with Active
Workspace classification, Siemens Digital Industries Software recommends proceeding with CST
configuration.
• Ensure that the type of workspace object that you want to classify is listed in the
ICS_classifiable_types preference. If your business use case requires classifying items instead of item
revisions, you must remove the ItemRevision entry from this preference.
You use the eCl@ss standard for classifying data and want to download and use such hierarchies and
data. Or, you are just beginning with classification and want to create hierarchies so you can easily
share your data.
• Configure classification for using both traditional and classification standard taxonomy hierarchies.
You have some users who want to use the traditional classification hierarchy but others want to work
in an eCl@ss compliant hierarchy. Using this procedure, the type of hierarchy displayed is user-
dependent.
Before you begin, you must decide which type of classification installation you require. Read through
these scenarios to assist you with your decision.
• To find out more about using classification in Active Workspace, see Filtering by classification.
• To find out more about classification standard taxonomy, see About classification standard taxonomy
and Configuring classification standard taxonomy.
• To find out more about traditional Classification, see Classification and Classification Admin in the
Teamcenter help.
A digital signature is a mathematical stamp on an object used to confirm that the object has not been
modified since the signature was applied. It also identifies who applied the digital signature.
After installing digital signature using Teamcenter Environment Manager (TEM), it is not fully functional
unless you configure it. You must perform additional steps to enable digital signature.
Before you can configure digital signature, you must install the features. Install the following from the
Features panel of Teamcenter Environment Manager (TEM):
A digital signature is a mathematical stamp on an object used to indicate if that object has been
modified after the signature was applied. It also identifies who applied the digital signature. You must
use public key infrastructure (PKI) authentication when applying the digital signature.
Note:
Digital signature in Teamcenter is dependent on the ActiveX plugin. If your browser does not
support the ActiveX plugin, you cannot apply or void a digital signature.
1. Install and configure your Teamcenter four-tier server for digital signature as described in
Teamcenter Security Administration.
2. Patch your environment to a version of Teamcenter. Refer to the general patch instructions in the
Teamcenter documentation, as well as the readme file for the patch.
For information about installing patches on a Teamcenter server, see the appropriate server
installation guide (for Teamcenter Server Installation on Windows or Teamcenter Server
Installation on Linux).
3. Install Active Workspace and include the digital signature features shown in the Teamcenter
Environment Manager (TEM) Features panel:
4. Configure your system by adding the following code to all style sheets specific to Active Workspace.
Note:
Generally, these style sheet names begin with the prefix Awp0 (for example,
Awp0DatasetSummary). The Awp0 and Summary are standard for each style sheet to be
modified. The middle portion denotes the object type to be updated, for this example,
Dataset).
<section title=”Signatures”>
<objectobjectSet source = "Fnd0DigitalSignatureRel.Fnd0DigitalSignature"
sortdirection = "ascending" sortby = "object_string"
defaultdisplay = "listDisplay">
<tableDisplay>
<property name = "owning_user"/>
<property name = "fnd0State"/>
<property name = "creation_date"/>
</tableDisplay>
<thumbnailDisplay/>
<listDisplay/>
<command actionKey = "addDigitalSignatureAction"
commandId = "com.teamcenter.rac.applyDigitalSign"
renderingHint = "commandbutton"/>
<command actionKey = "voidDigitalSignatureAction"
commandId = "com.teamcenter.rac.voidDigitalSign"
renderingHint = "commandbutton"/>
</objectSet>
</section>
Note:
This is available from Microsoft.
When the wizard prompts you to enter the hash algorithm, type the hash algorithm value to be
used, such as SHA256, SHA384, SHA512, or SHA1.
The default value is SHA256. However, if the PKI infrastructure requires any other algorithm, it
must be configured here and the same needs to be configured in the Teamcenter server in the
tc_profilevars file. The hash algorithm is stored in the TC_DS_HASH_ALGORITHMS environment
variable.
Geography access allows you to configure both a geography entry and a custom confidentiality
agreement prior to users logging on to an Active Workspace session.
For example, in the following Active Workspace session, users must first select the country in which they
are currently located before the home page is displayed. If the user does not select a country, the only
other option is to log off.
If you require your users to agree to a confidentiality agreement, for example, for authorized data access
(ADA) requirements, you can configure a custom confidentiality agreement statement to be displayed
following the selection of their current working location. The I agree button is unavailable until a valid
country is selected in the drop-down list.
You can run a report, License Login Report, that displays the logon information. This report is displayed
in My Teamcenter by choosing Tools→Reports→Report Builder Reports→License Login Report.
Note:
You can also assign site geography using the Organization application.
Note:
If you add a custom LOV to the User.Geography attribute, you must remove it before
starting a Teamcenter upgrade.
You can assign geography to a single user using the -Geography argument of the make_user
utility. To change the geography for all users at the same time, you can perform a batch mode
change using the -allUserDeclaredGeography argument and the two-character ISO 3166 country
code; for example, to set geography to Germany (DE) for all users, enter:
-allUserDeclaredGeography=DE
Note:
You can also assign user geography using the Organization application.
• LoginCountry_selection_enabled
Enables the Country Selection dialog box for users to select the country from which they are
logging in.
True Displays the Country Selection dialog box.
False Allows the logon process to continue and display the user's home page.
• AWC_PostLoginStages
Lists the postlogon stages in the sequence displayed on the Active Workspace client after
successful authentication.
Setting this preference ensures the user cannot bypass the postlogon page.
PickGeograp Displays the Geography entry on the postlogon page.
hy
• LoginCountry_save_previous_selection
Allows/denies the ability to save the previous country selection in the Country Selection dialog
box. If users are logging on from the same site each time, you can configure it so the user does
not have to make the country selection each time.
Note:
This preference is ignored when LoginCountry_selection_enabled is set to False.
True Downloads the previously selected country and fills in the combination box in
the Country Selection dialog box with the value stored on the
User.Geography attribute.
5. After the geography access is enabled for users, you can generate the License Login Report. This
report, which is also helpful for audit purposes, displays the following data:
• User ID
• Month
• Year
• Geography
This report documenting logon information of users can be stored and used for future reference.
Note:
By default, there is no confidentiality agreement configured.
In Active Workspace, you can configure a custom confidentiality agreement statement to be displayed
following logon.
• If AWC_PostLoginStages is set with value PickGeography, then users must select their current
geography.
• If AWC_PostLoginStages is set with value ConfidentialityAgreement only, then users are not
required to select their current geography.
You can use the following HTML formatting tags in both the Geography and Confidentiality
Agreement sections of the post-logon page. These HTML formatting tags are not supported in the rich
client.
Note:
language_locale is the JAVA standard language name. For example, fr_FR.
• Create the new language directory in a location other than TC_ROOT or TC_DATA to prevent its loss
during migrating or patching. A typical custom structure might be:
d:\custom-localizations\
en_US\
conf_messages_test.xml
fr_FR\
conf_messages_test.xml
de_DE\
conf_messages_test.xml
• The conf_messages_test.xml file has different contents in each directory. For example:
set TC_USER_MSG_DIR=d:\custom-localizations
Note:
Users of this feature must have administrative privileges. Generally, this feature is used by project
managers.
To provide time-limited grants or denials of access to users who do not have access to classified data
based on their clearance level, you can attach and detach licenses to workspace objects. For example,
you can restrict access of ITAR-controlled items to only those users in the United States.
Use the Attach Licenses command to add one of the following licenses to a workspace object:
• ITAR
The ITAR license grants discretionary access to specific users or groups to workspace objects with
International Traffic in Arms Regulations (ITAR) classifications for a specified period of time.
• IP
The IP license grants discretionary access to specific users or groups to workspace objects that have
intellectual property (IP) classification. It grants the access for a specified period of time.
• Exclude
The Exclude license denies specific users or groups access to the attached workspace objects for a
period of time.
Active Workspace ships with the License List panel visible on the following XRT style sheets:
• Awb0ItemRevSummaryForShowObjectLocation.xml
• Awp0ItemRevSummary.xml
To add the License List panel to your custom XRT pages, insert the following line in the XRT style sheet:
Attaching licenses
Using licenses
Note:
Users of this feature must have administrative privileges. Generally, this feature is used by project
managers.
To provide time-limited grants or denials of access to users who do not have access to classified data
based on their clearance level, you can attach and detach licenses to workspace objects. For example,
you can restrict access of ITAR-controlled items to only those users in the United States.
Use the Attach Licenses command to add one of the following licenses to a workspace object:
• ITAR
The ITAR license grants discretionary access to specific users or groups to workspace objects with
International Traffic in Arms Regulations (ITAR) classifications for a specified period of time.
• IP
The IP license grants discretionary access to specific users or groups to workspace objects that have
intellectual property (IP) classification. It grants the access for a specified period of time.
• Exclude
The Exclude license denies specific users or groups access to the attached workspace objects for a
period of time.
Attach licenses
Note:
Using this feature requires ADA administrative privileges. Generally, this feature is used by Data
Security Administrators or Controllers.
2. Click Attach License to select the available licenses (ITAR License, IP License, Exclude License,
or a custom license type).
If you select ITAR License, you must edit the Authorizing Paragraph for the license before adding
the license.
5. Select This Revision or All Revisions. Then, click Attach to attach the selected license(s).
You can confirm the selected license(s) were successfully added by clicking Manage > Attach
Licenses.
Detach licenses
Note:
Using this feature requires ADA administrative privileges. Generally, this feature is used by Data
Security Administrators and Controllers.
2. Select any license to detach and click Detach License . This detaches the license(s) from the
selected items.
Localization configuration
What is localization?
Localization is the presentation of an application's text in the local language. You can install Active
Workspace to be displayed in many different languages.
After installing Active Workspace to run on a localized Teamcenter server, additional setup may be
required to present text in the local language.
Before you can configure localization, you must ensure that the server-side of Teamcenter is configured
for the locales you want.
You can configure Active Workspace to support various languages in addition to English. Use the
Deployment Center or the Teamcenter Environment Manager to manage your available locales.
Tip:
When creating custom content, the parenthetical value is post-fixed to the JSON file name in the
i18n folder of your custom module.
Deployment Center
The list of available locales is not a required parameter in the Deployment Center, so you must show all
parameters when choosing locales.
The list of available locales is found when you Update Active Workspace client settings.
1.
2.
You can configure the Active Workspace client to display the user interface in any of the supported
Teamcenter locales. However, some visualization data, such as Product and Manufacturing Information
(PMI), requires a Visualization Server Manager (VSM) configured for the same locale as the information.
For visualization data to display correctly in the Active Workspace client, you must have at least one VSM
configured to run in each locale for which you have data. With this system in place, visualization
processes are then routed to the appropriate server based on locale.
French Japanese
You can configure a VSM with any one of these languages. If you want to configure a cluster of VSMs to
support more than one language, you need at least one VSM per language.
To change the language of a VSM, set Windows to the required language, location, and locale. You can
adjust these settings using the Region and Language options found in the Windows Control Panel. You
must adjust the Date and time formats, the Current location, and the Current language for non-
Unicode programs values. After changing your Windows settings, reboot the system. When the VSM is
started again, it inherits the new language configuration of the operating system.
If all VSMs are configured to use the same language, all clients use the available language regardless of
browser preferences.
Note:
If you have a VSM system configured for two or more different languages, then Siemens Digital
Industries Software highly recommends that at least one VSM be configured for English, even
though this may require a minimum of three VSMs.
When the server system is configured with multiple languages, if at least one VSM is configured
for English, then the English locale is a default.
The following table shows the VSM system response to a visualization data request from client
when the client is not in one of the pre-configured languages.
VSM for English exists The data request is routed to an English VSM.
Program Planning enables organizations to efficiently coordinate the various work activities of multiple,
functional teams by providing enterprise-wide visibility into top-level projects and their major event
dates.
Prior to configuring Program Planning, you must complete the preconfiguration tasks.
• Ensure that LOVs more accurately reflect your business use by configuring the out-of-the-box LOVs.
• Define the Schedule Template Attribute Maps (STAM) and Schedule Template Value Maps (STVM) to
define which attributes and attribute values your organization uses when automatically generating
schedules from ECNs.
• Define whether program objects are automatically added to the program's Teamcenter project by
setting the program security.
After you have installed Program Planning, there are several post-installation tasks that must be
completed, including changes made to Organization, Access Manager, and Dispatcher.
Before you can configure Program Planning, you must install the features and load the necessary
templates in Business Modeler IDE.
Install the following from the Features panel of Teamcenter Environment Manager (TEM):
• Dispatcher Server
• Dispatcher Client
• Program Planning
• Dispatcher Components
• Dispatcher Scheduler
• Dispatcher Client
• Dispatcher Module
• Select Translators
• AsyncService
After installing Program Planning, you must complete the following tasks:
• Navigate to Organization in Teamcenter and modify the site name in the SOA URL box using the
pattern: http://<MachineName>:7001/tc.
• To support async operations, in the Dispatcher installation directory, run the .bat files located in the
bin folders of Scheduler, Module, and Dispatcher Client directories. The required files are listed
below in the order they should be run.
1. \Scheduler\bin\runscheduler.bat
2. \Module\bin\runmodule.bat
3. \DispatcherClient\bin\runDispatcherClient.bat.
Refer to the Installing and Configuring Dispatcher in the Teamcenter help for configuration
instructions.
Async operations are required in Program Planning for generating schedules.
The following out-of-the-box Schedule Manager LOVs can be configured in Business Modeler IDE
(BMIDE) to better represent your business.
• State
Reflects the current state of the program.
Predefined values are: Not Started, In-Progress, Complete, Closed.
• Classification
Used to label a program, project, or subproject. For example, an organization could classify a
program's significance to the organization (high, medium, low) or program's complexity (complex,
moderate, simple).
This LOV has no predefined values.
• State
Reflects the current status of the event.
Predefined values are: Not Started, In-Progress, Complete, Closed.
• Event Code
Identifies the events that are applicable to your business. This LOV has no predefined values. Your
organization's programs may include kickoff events, design review events, and release to market
events as values to define.
In addition to defining the event code values, you can define a unique color to each event code
value.
• State
Reflects the current status of the criterion.
Predefined values are: New, Open, In-Process, Ready, Pass, Fail.
• Deliverable Type
Identifies a functional or other classification of the program deliverable.
Predefined values are: End Item, Sourced Item, Internal Item, Program Management, Quality
Management, Other.
• State
Reflects the current status of the program risk, issue, or opportunity.
Predefined values are: In Progress, Closed, Canceled.
• Priority
Indicates the importance of the program issue.
Predefined values are: Critical, High, Medium, Low.
• Impact
Indicates the effect of the program risk or opportunity on the plan. Each value is associated with a
number (5 - 1), which is used to calculate the Risk Score (Impact x Probability = Risk Score).
Predefined values are: Severe, Major, Moderate, Minor, Insignificant.
• Strategy—Risk
• Strategy—Opportunity
Identifies the plan of action for handling this program opportunity.
Predefined values are: Not Applicable, Accept, Enhance, Exploit, Share.
As an administrator, in addition to defining the Event Code LOV (Prg0EventCode) on the program Add
Event panel, you can assign each program event value a different color (Pgp0Color) for easy
identification on the program timeline. For example, kick-off events may show as green, design review
events may show as blue, and release events may show as yellow. The default event code color is
AW_Boston_Blue (#388ba6).
Use the Prg0EventCode LOV to define the Event Code value based on your company's best practices.
Use the Pgp0Color LOV to define a library of colors, including hex codes, which can be assigned to
events. Use the Pgp0EventToColor LOV to map a defined Event Code to a defined color.
Note:
Maximum allowable length for the Event Code value is 12 characters.
In Active Workspace, the end user picks the desired event type from the Event Code LOV, and the event
displays in the program timeline in the color associated with that event type.
Instructions for adding values to existing LOVs is discussed in the Business Modeler IDE.
Define Program Planning program security using the following preference and program field. When
program security is configured, program objects are automatically added to the program's Teamcenter
project when the object is created.
When the Program_Management_Security preference is set to 1 and the Content Security field value
for the program, project, or subproject is set to True, the Tc_project security also propagates to program
deliverables, deliverable instances, changes, schedules, events, event criteria, attachments, risks, issues,
opportunities, and checklist associated with the program, project, or subproject. The Content Security
field is located on the Overview tab of the program, project, and subproject.
Note:
The Content Security field must be set at each plan level (program, project, and subproject) in
order to propagate all plan objects to the Teamcenter project. If this field is not set for one level of
the plan—for example, the project—then only the objects for the program and subproject are
propagated to the Teamcenter project.
Use this procedure to add custom subtype objects to the Prg0AbsProgramPlan and
Prg0AbsProjectPlan Program Planning objects. Unlike how other custom business objects within
Teamcenter are subtyped, the parent-child relationship for these two objects is governed by the
Prg0PlanAllowsChildren and Prg0PlanAllowedChildTypes business object constants.
Note:
The Prg0AbsEvent and Prg0AbsCriteria objects are directly subtyped like any other business
objects in Teamcenter.
2. Add the new custom subtype object under the selected business object.
3. Select the business object (Prg0AbsProgramPlan or Prg0AbsProjectPlan) where you added the
custom object and under the Business Object Constants section, do the following.
• In the Prg0PlanAllowedChildTypes constant, enter the name of the custom subtype object. If
you created more than one custom subtype object, enter then names as comma separated
strings.
4. Create a corresponding XML rendering style sheet (XRT) for the custom object (project, event, or
criteria).
c. Search for the appropriate dataset, depending on the custom object: Pgp0ProjectPlanCreate
(custom project), Pgp0Prg0EventCreate (custom event), or Pgp0Prg0CriteriaCreate (custom
criteria).
d. Click the Viewer tab and copy the contents of the dataset.
e. Paste the copied content into your custom XML rendering style sheet.
g. Restart the Teamcenter server and then log off and back on to Active Workspace.
As an admin, you can export Program Planning data from one Teamcenter site and import it into
another Teamcenter site. For example, if you want to move data from a test environment into a
production environment.
Prerequisite Steps
Before exporting and importing data, complete the following steps at both the source and destination
sites.
• In Teamcenter, click Windows > Open Perspective > Other > PLM XML/TC XML Export Import
Administration and verify that ProgramPlanningDefaultTM is installed in Teamcenter.
• Generate the Administration Data Comparison report to compare the source and destination
structures, since both sides must have the same data structure, including Tc_project, objects, and
users.
Use the Teamcenter plmxml_export and plmxml_import utilities to export Program Planning data from
one Teamcenter site and import it into another Teamcenter site.
1. On the source site, navigate to the Teamcenter command prompt and enter the following.
The ProgramPlanningBulkExtractDefault option set is mandatory for export. If you do not specify
the output file path, then the Briefcase file is generated in <TC_ROOT>\tc_menu\.
3. On the destination site, paste the Briefcase file in <TC_ROOT\tc_menu> (or in a custom folder).
4. On the destination site, do the following to add the bulk load argument to the plmxml_import
utility.
b. Search for the BulkLoadDefault option set and add the opt_bulk_load_in_prod option.
c. On the destination site, navigate to the Teamcenter command prompt and enter the
following.
Note:
If the file is in a custom file, use the full path name as shown above. If the file is in
<TC_ROOT>\tc_menu\ then enter only the file name (=<name of file>.bcz).
Program save as behavior can be configured through deep copy rules in BMIDE. The table below shows
the default deep copy rules used when saving a program as a new program.
The Schedule Template Attribute Map (STAM) defines which attribute your organization uses when
automatically generating schedules from ECNs. The Schedule Template Value Map (STVM) defines the
actual value of the attribute you defined in the Schedule Template Value Map (STAM). You can create
more than one STAM/STVM pair for each schedule.
Before the program manager can automatically generate schedules from change notices, a system
administrator must create Schedule Template Attribute Maps (STAM) and Schedule Template Value
Maps (STVM). These two maps work together to identify which attributes and values are used when
schedules are automatically generated from the change. Typically, the system administrator creates the
necessary STAMs and STVMs prior to the start of the program, and the same STAM/STVM pairs are used
throughout the duration of the program.
Example:
The system administrator creates the Schedule Template Attribute Map (STAM) to define which attribute
your organization uses when automatically generating schedules from ECNs. You can create more than
one STAM/STVM pair for each schedule.
2. Click Add .
3. In the Add panel, in the filter box scroll and select Schedule Template Attribute Map.
5. Click Add.
The system administrator defines the Schedule Template Attribute Map (STAM) attributes.
Source Object Identifies the Teamcenter object class for Varies, depending on your
Type which schedules are automatically Teamcenter configuration.
generated from the designated schedule
Source Object Identifies the attribute on the object class Example: object_name
Attribute identified in the Source Object Type box.
This value is optional.
Specify a value only if the template
selection is based on the object class and
value of the attribute on the object class.
Enter the attribute name exactly as it
appears in the Business Modeler IDE
(without the object class prefix). If an
attribute is specified, the system looks for a
corresponding STVM.
Default Identifies the schedule template to use Select from the list of defined
Schedule when a change schedule is automatically schedule templates for your
Template generated. The default schedule template is organization.
used when the template selection is based
only on the object class (for example, there
is no STVM) or when the Source Object
Attribute is specified but Teamcenter could
not find a corresponding STVM.
The system administrator creates the Schedule Template Value Map (STVM) to specify the schedule
template to be selected by the autogeneration process for a given object class and the value of the
specified attribute on that object class. As a system administrator, create an STVM only after you have
created the STAM for the object class.
2. Click Add .
3. In the Add panel, in the filter box scroll and select Schedule Template Value Map.
5. Click Add.
The system administrator creates the Schedule Template Value Map (STVM) to specify the schedule
template to be selected by the autogeneration process for a given object class and the value of the
specified attribute on that object class. As a system administrator, create an STVM only after you have
created the STAM for the object class.
Schedule Identifies the STAM for which this STVM is Click the to select a STAM,
Template being created. and then click Set.
Attribute Map
Relations configuration
Relations are the associations between two Teamcenter objects. The Relations tab in Active Workspace
allows you to see all the relationships for a selected object.
You may want to change how relations are displayed to end users or change which relations are
displayed.
Before you can view relations graphically, you must install the following Active Workspace features using
the Teamcenter Environment Manager (TEM):
• Relationship Browser
Installs the user interface elements for viewing relations in Active Workspace.
Select Active Workspace→Client→Relationship Browser.
• Relationship Viewer
Installs the server-side definitions for viewing relationships.
Select Active Workspace→Server Extensions→Relationship Viewer.
You can configure aspects of relations' appearance and behavior using configuration files. These are
stored in the Teamcenter database as datasets, which are located using the following preferences:
• RV1_DARB_UI_configuration_file_name
• RV1_DARB_GraphStyle_file_name
• RV1_DARB_PresentationRule_file_name
1. Find the name of the dataset by getting the value of the config file preference.
Example:
In this example, the RV1_DARB_UI_configuration_file_name preference value is
RelationBrowserConf.
• Download the file, edit it in a text editor, and then upload it back into Active Workspace.
OOTB, the universal viewer may not recognize the relation configuration file dataset type (Rv1XML) as
an editable file type and it will only show the generic dataset type icon in the PREVIEW section.
To tell the universal viewer how to open this file type, add Rv1XML.Awp0CodeViewer=Rv1XMLFile to
the preference.
This is because the Relations Configuration File dataset type's database name is Rv1XML and the
named reference for the XML file is Rv1XMLFile.
Now the universal viewer knows to open the configuration files with its code viewer.
There are many preferences that can help you configure relations for your users. Their names begin with
Rv1_ to make them easy to find. Inspect each of these preferences and update their content if
necessary.
The RV1_DARB_RelationBrowserViews.Relations preference lists the available views. You can update
this preference to add new views or update existing views.
The first view on this list is the default view. This preference is overridden by any other preference with
an object type name appended.
If you append the name of an object type to the preference, the list of available views changes for that
class of objects and all of its children. You can create as many of these preferences as you need. For
example, the RV1_DARB_RelationBrowserViews.Relations.ChangeItemRevision preference controls
the list of views (and the default) for change revisions.
You can configure how the system expands the relations forward and backward, and also how many
levels. For example, when users open an object in the Relations tab, the system may automatically
expand the relations forward one level. If your users are not interested in confirming the data attached
by outgoing relations but rather confirming incoming relations, you can set the expansion to
automatically expand backward. Set the expansion of relations with the following preferences.
• RV1_DARB_Expand_All_1_Level_Command_Visible
• RV1_DARB_Expand_Incoming_Levels
• RV1_DARB_Expand_Outcoming_Levels
• RV1_DARB_Expand_Selected_1_Level_Command_Visible
No additional action is required to localize the names that appear in a custom relations view. If you
localize the Active Workspace client in the declarative definition (messages.json file) and the
Teamcenter TextServer, names in the Relations view are localized.
The file name for relation browser keys in the TextServer is relationshipviewer_text_locale.xml.
Relation browser uses a k_relations_keyword_ prefix to help promote unique keys throughout the
product.
RV1_DARB_GraphStyle_file_name
The configuration file value stored in this preference uses the following options:
• PresentationRule
Defines rules for one type of object. It the object satisfies the conditions specified by the rule, the
style will be applied to the object.
This element has the following subelements:
• type
Specifies the type of object: node for object and edge for relation.
• styleID
Specifies what style to apply. styleID must be the same as defined in the GraphStyle XML file. (The
name of the GraphStyle XML file is defined in the RV1_DARB_GraphStyle_file_name preference).
• Conditions
Specifies a condition value that must be satisfied before the style is applied to the object. The
condition value is a logical operator.
This element has the following subelements:
■ Property
Only used when the PresentationRule type is edge. Name specifies the relation type. Value
specifies the relation name.
For Property elements, only the equalTo operator is supported.
■ Type
Only used when PresentationRule type is node. Value specifies the name of the object.
■ Conditions Operator
Specifies what conditions must be must before the style is applied. Valid operators are: and (all
rules must be met) and or (at least one of the rules must be met).
Valid operators for Type are equalTo and isTypeOf. When property is edge, only the equalTo
operator is valid.
RV1_DARB_UI_configuration_file_name
The configuration file value stored in this preference uses the following options:
• view name
Specifies the name of the view, for example, General.
• ruleName
Specifies the name of the dataset that implements the traversal logic of the view. The GenericRule
dataset is the default rule file.
• group name
Specifies if this is a list containing objects or relations. These lists are presented in the Relation
Controls section of the Relations browser.
The order of the objects filters is important. Your object is displayed using the first filter on the list
that successfully matches. The last filter in the objects section, Other, matches all objects because it
is associated with WorkspaceObject. It is there to ensure all objects receive some formatting. Do not
place any filters after the Other filter.
• filter name
Specifies the name of the relation or object name.
For example:
• parameterSet
Specifies the name of the parameterSet element in this configuration file. The parameterSet
element defines the Teamcenter objects and relations that map to the filter name.
• color
Specifies the display color of the object or relation.
Use Schedule Manager to plan and track project tasks. A properly executed schedule ensures that
projects are completed on time, within budget, and to the satisfaction of the project stakeholders.
The instructions for configuring Schedule Manager can be found in Configuring Schedule Manager in
the Teamcenter help.
Before you can configure Schedule Manager, you must install the features. Install the following from the
Features panel of Teamcenter Environment Manager (TEM):
• To use any async operation in Schedule Manager, such as Save As, task reassignment, or shifting a
schedule, in Enterprise knowledge Foundation select the following:
• Dispatcher Server
• Dispatcher Client
• Dispatcher Components
■ Dispatcher Scheduler
■ Dispatcher Client
■ Dispatcher Module
• To initiate workflows on schedule tasks where the workflow trigger type is Scheduled start date,
Both Scheduled start date and predecessors complete, or Either Scheduled start date and
predecessors complete, install and configure the Workflow to Scheduling Integration option in
Teamcenter Environment Manager (TEM).
Workflow to Scheduling Integration is discussed in Teamcenter features.
• To enable schedule coordinators to view resource workload data, the schedule coordinator must be
added to the Resource Graph Viewer role.
If you have installed Dispatcher to support async operations in Schedule Manager, refer the Configuring
the AsyncService topic in the Enable default translators chapter in Installing and Configuring Dispatcher
in the Teamcenter help for configuration instructions.
Async operations are required in Schedule Manager for the following operations:
• Shifting a schedule
As a system administrator, complete the following tasks to support Active Workspace and Microsoft
Project integration. This functionality is useful if there are employees in your organization who are
responsible for updating schedule tasks but don't use Active Workspace or Schedule Manager.
2. Install Client for Office using the stand-alone installer. Select the Microsoft Project plugin in the
Select Features dialog box.
• Map custom schedule task properties between Microsoft Project and Teamcenter. This ensures that
when a Microsoft Project schedule is imported into Teamcenter Schedule Manager, the custom
property data is automatically transferred and does need to be manually reentered. This procedure is
discussed in the Exchanging data between Microsoft Project and Schedule Manager section of the rich
client Schedule Management documentation.
Security configuration
What is security?
Security is protecting data managed in Teamcenter through methods such as user authentication and
file permissions.
Although most security is managed in Teamcenter, you may want to change certain settings of security
for Active Workspace.
You can configure the sequence of the postlogon stages displayed on the Active Workspace client after
successful authentication by setting the AWC_PostLoginStages preference.
There are three possible scenarios for Active Workspace logoff. The logoff behavior changes based on
whether Teamcenter Security Services is being configured or not, and if so, how it is configured for
authentication.
If Active Workspace is being configured to use Teamcenter Security Services behind an authenticating
gateway such as SiteMinder, WebSeal, IIS or Apache, this is a special case that requires additional
configuration.
• Active Workspace is configured using Teamcenter Security Services, and Teamcenter Security Services
is configured to authenticate using an LDAP server:
2. Teamcenter clears the tcserver session and the Teamcenter Security Services session.
• Active Workspace is participating in a Single Sign-On session with another Teamcenter client that
has launched a session agent applet:
3. User is presented a page stating You are logged out of Teamcenter application however
your TcSS session is still active.
4. This page will also have a Login Again button. When the user clicks this button, they are
directed to Active Workspace home page without challenge as long as Teamcenter Security
Services session is still valid.
• Active Workspace is configured with Teamcenter Security Services, and Teamcenter Security Services
is behind an authenticating gateway:
2. Teamcenter clears the tcserver session, but it does not close the authenticating gateway session
by default.
Caution:
Because the authenticating gateway session is not closed by default, the single sign-on
session is still active. Unless the user specifically logs off from the authenticating gateway
session or closes all instances of the browser, the session remains active and can pose a
security risk.
Note:
The third scenario requires additional configuration during the initial installation of Active
Workspace. You must configure a logout URL on the gateway.
In a single sign-on Teamcenter deployment, you can configure a single instance of a Teamcenter server
to support more than one web tier. For example, an Active Workspace client and a traditional rich client
can be deployed for the same server instance. Each client needs a distinct application ID (AppID)
configured in Security Services to associate with their return URL. To accommodate this situation, the
Security Services identity server supports compound AppIDs.
For example, an Active Workspace client uses an AppID named TCAWC and a Teamcenter rich client
uses an AppID named TCrich. In the tc_profilevars file, configure the compound AppID as
TCAWC,TCrich or TCAWC TCrich. The comma or space separates the individual AppIDs. The Teamcenter
server sends that entire string as a token validation call parameter.
In addition to making the change in the tc_profilevars file, in the Security Services Identity Service you
must configure an AppID for each of the clients (for example, TCAWC and TCrich) and include the
appropriate return URLs.
The Teamcenter web tier and Teamcenter Security Services Login Service maintain client session
information. This leads to two important considerations when deploying Teamcenter behind a third-
party load balancer:
• When deployed behind a load balancer, it is important that all requests from a given client are routed
to the same back-end web tier or Login Service instance. Load balancers typically have a stickiness or
affinity setting, and this must be set in the load balancer configuration for these Teamcenter web
applications.
• Ensure that the load balancer's session time-out interval is equal to or greater than the Teamcenter
session time-out values. The Teamcenter time-outs are set in the Login Service and web tier using the
Web Application Manager by typing the time-out value in the Session time-out box in the Modify
Web Application Information dialog box. Otherwise, the load balancer time-out eclipses the
Teamcenter time-out.
Either of these can lead to apparently random and unexpected behavior as the load balancer switches
between or abandons active web application instances.
CAGE stands for Commercial And Government Entity. A CAGE Code is a government assigned number
given to a supplier on a location basis. It is used to uniquely identify the design source and location for
parts and engineering documentation. Documents and parts must be identified with a CAGE Code.
Using Teamcenter, administrators can create and assign location and CAGE codes to users to uniquely
identify the design source (location) for parts and engineering documentation. For example, as an
administrator, you have designers using Active Workspace in both Europe and the United States.
Because management wants to track the location where parts are created, you want to use the location
code functionality in Active Workspace.
Each user's location code displays next to their name at the top of the Active Workspace page.
When an Active Workspace user creates a part or a document, their location code appears as a value in
the Current Location Code (fnd0CurrentLocationCode) property on that part or document revision,
and in the Original Location Code (fnd0OriginalLocationCode) property on the part or document.
Users can edit this property to change the value.
Note:
To display the fnd0CurrentLocationCode property, you must modify XML rendering style sheet
datasets.
If you set the Fnd0DisplayLocationCodeLOV global constant to true to display location codes as a list of
values, you must create the list of company locations.
1. Administrators create location codes in the rich client with My Teamcenter by choosing
File→New→Other→Company Location.
2. After you create the location codes, use My Teamcenter to assign the location codes to groups,
roles, and users.
Choose Tools→Assign Company Location to select the organization and company location to
assign to it.
3. Click the arrow between the panes to assign the company location.
5. Click OK.
The company location is assigned to the selected groups, roles, and users.
6. When users log on to Active Workspace, they see the location code next to their user name on the
home page. And when they create parts or documents in Active Workspace, this location code
appears in the Current Location Code (fnd0CurrentLocationCode) property on that part or
document.
As an administrator, you can set the following global constants in the Business Modeler IDE to determine
how the location code is displayed and selected by Active Workspace users:
• Fnd0DisplayLocationCodeLOV
Determines if the Current Location Code (fnd0CurrentLocationCode) property should be a text box
or display a list of values (LOV) with CAGE codes. By default, the value is set to false, making it a text
box. Set it to true to have the box display a list of values.
If you set this constant to true, users click the location code next to their name to change their
location. (The Set or Clear Location Code button does not appear on the Profile page.)
• Fnd0AllowSuggestiveLocationCode
Determines if an end user is allowed to enter a location code that does not exist on any company
location. By default, the value of the constant is true, and they can enter any location code they want,
even if it does not exist yet in the system. If the value of the constant is false, the end user must
select from the list of existing location codes.
When an Active Workspace user creates a part or a document, their location code appears as a value in
the Current Location Code (fnd0CurrentLocationCode) property on that part or document revision,
and in the Original Location Code (fnd0OriginalLocationCode) property on the part or document.
Users can edit this property to change the value.
You can restrict changing the location for parts and documents in the following ways:
The Active Workspace Gateway is a Node.js Express server which uses several middleware functions
for security. These systems are defined in the gateway configuration file, located in the Active
Workspace installation directory.
AW ROOT/microservices/gateway-nnn/config.json.
Note:
After making any changes to this file, you must restart the gateway to implement the changes.
helmet
Following is a list of some important notes for various features of helmet. Not all features in the file are
listed here, and not all available features are in the file.
"security": {
...
"helmet": {
"contentSecurityPolicy": false,
"frameguard": false,
...
}
contentSecurityPolicy
Not enabled by default, and is not supported by Active Workspace at this time. Do not enable this
feature.
frameguard
Disabled for Active Workspace. If you enable this feature, you will lose the capability of hosting
Active Workspace within an iFrame by a host. iFrames are used by some embedded functionality.
cors
Cross-Origin Resource Sharing (cors) is enabled in Active Workspace. However no whitelist sites are
defined by default.
"security": {
...
"cors": {
}
{
security: {
cors: {
origin: [ 'http://example.com', 'http://example2.com' ]
}
}
}
Caution:
Siemens Digital Industries Software recommends adding routes instead of using cors.
csurf
"security": {
...
"csurf": {
"cookie": true
}
Caution:
If you write custom client code that calls any routes through the Active Workspace gateway, you
should use the provided http services. If you use low-level JavaScript calls instead, you may be
required to set the request header.
The Active Workspace Gateway is a Node.js Express server which responds to several settings
concerning Security Services single sign-on (SSO). These settings are defined in the gateway
configuration file located in the Active Workspace installation directory.
AW ROOT/microservices/gateway-nnn/config.json.
Note:
After making any changes to this file, you must restart the gateway to implement the changes.
sso
"sso": {
"tcSSOAppID": "Teamcenter",
"tcSSOURL": "",
"tcSSORedirectMethod": "",
"tcSSOLogoutURL": "",
"proxyServerUrl": ""
},
tcSSOAppID
Use the Teamcenter Environment Manager (TEM) to change this property. Do not directly modify
this setting in the config.json file.
tcSSOURL
Use the Teamcenter Environment Manager (TEM) to change this property. Do not directly modify
this setting in the config file.
tcSSORedirectMethod
When Active Workspace is configured with Teamcenter Security Services, where Teamcenter
Security Services is behind an authenticating gateway and request parameters are lost during HTTP
Post method requests, use the following parameter to change the HTTP request method type to GET
to prevent request parameters from being dropped.
tcSSOLogoutURL
A logout landing page must be configured when Active Workspace is configured with Security
Services, which in turn is configured behind an authenticating gateway, such as SiteMinder,
WebSeal, IIS, or Apache. In this scenario, the authentication is handled by the gateway. When a user
clicks the logoff button, Active Workspace redirects the user to this landing page. This could be any
page, such as an internal corporate site that provides access to various systems. To change the
default logoff landing page, you must provide the URL for the server.
proxyServerUrl
The proxy server URL is typically a load balancer between the end user's browser & the SSO login
service. This is the URL the user initially used to access the site. It is critical that this setting is correct
because cookies are filtered by the browser based upon this.
The Active Workspace Gateway is a Node.js Express server which uses several middleware functions
for security. These systems are defined in the gateway configuration file, located in the Active
Workspace installation directory.
AW ROOT/microservices/gateway-nnn/config.json.
Note:
After making any changes to this file, you must restart the gateway to implement the changes.
routing
You can add new routes to the gateway, allowing the browser to use these routes instead of
communicating directly with the backend server. The basic types of routes are:
• Direct endpoints for services that are not registered with the microservice framework. You specify this
type of route by providing the target with a fully defined URL including protocol, host, and port. Do
not set the alias property for this route type.
• Microservices registered services. These services are fully participating micro-services and support the
service registry and service dispatcher as supplied by the microservice framework. Specify the
microservice alias which is registered with the microservice framework. Do not set the target
property for this route type
{
"routes": {
"example-basic": {
"path": "/google",
"target": "https://www.google.com"
},
"example-microservice": {
"path": "/mymicroserver",
"alias": "mymicroserver"
},
"example-graphql-service": {
"path": "/mygraphqlservice",
"target": "http://myhost:myport/mygraphqlservice",
"graphQL": true,
"noPing": true
},
"example-microservice-graphql": {
"path": "/mymsgraphql",
"alias": "mymsgraphql",
"graphQL": true
}
}
}
Example:
The following route points to a hypothetical SAP GraphQL service.
"sapgql": {
"path": "/sapgql",
"target": "http://1.2.3.4:8073",
"graphQL": true,
"noPing": true
}
path (required)
The URL path on the gateway which this route will use. For example, http://host:port/path.
target (must use this or alias, but not both)
The target endpoint for the redirect from the gateway.
alias (must use this or target, but not both)
The alias registered in the microservice dispatcher. This value is used for dynamic targeting of the
backend service.
graphQL (optional)
Indicates to the gateway if this route should be registered in the federation GraphQL network
managed by the gateway.
pingEnabled
If set to false, the service does not implement the ping interface and so will not block gateway
initiation while starting up.
urlPrefix
If you work with load balancers, you may need to change the URL prefix for your site to a non-root
context.
Note:
For example, if you want your prefix to be myprefix, then change the entry as follows.
Original Modified
... ...
"maxAge": 15552000, "maxAge": 15552000,
"urlPrefix": "/", "urlPrefix": "/myprefix",
"routes": { "routes": {
... ...
Subscription configuration
Subscriptions are memberships to receive notifications when objects are changed in Active Workspace.
A number indicator appears to the right of the Alert button on the global toolbar when subscription
notifications are received. Users click the Alert button to view their notifications.
• Subscribable properties.
Before you can configure subscriptions, you must install the features. Install the following from the
Features panel of Teamcenter Environment Manager (TEM):
• Subscription (client)
Installs the user interface elements for viewing subscription notifications in Active Workspace.
Select Active Workspace→Client→Subscription.
• Subscription (server)
Installs the server-side definitions for subscriptions.
Select Active Workspace→Server Extensions→Subscription.
Tip:
After installing new features, you must rebuild the Active Workspace application.
Configuring notifications
To use the notification functionality in a two-tier environment, you must manually configure the
TC_MESSAGING_MUX_URL environment variable. Otherwise, alert information about new or changed
messages is not sent from the server program to the user. This environment variable is configured
correctly for four-tier environments. However, in stand-alone two-tier environments and dedicated hosts
used for servers, such as the Subscription Manager daemon or the Dispatcher module, this environment
variable must be configured manually:
TC_MESSAGING MUX_URL=protocol://host:mux_port
host is the address of the host on which a server manager is installed, and mux_port is the value of the
mux port set when the server manager was installed.
• On Microsoft Windows machines, add the following line to the tc_profilevars.bat file:
set TC_MESSAGING_MUX_URL=http://blserver1:8087
TC_MESSAGING_MUX_URL=${TC_MESSAGING_MUX_URL:=http://blserver1:8087}
If you have multiple server managers in a four-tier deployment, the value of the
TC_MESSAGING_MUX_URL environment variable must depend on whether your environment uses a
shared TC_DATA directory or unique TC_DATA directories:
TC_MESSAGING MUX_URL=protocol://host:mux_port
If the four-tier deployment shares the same TC_DATA directory for all server managers in the
environment, the TC_MESSAGING_MUX_URL host must be set to localhost.
If the four-tier deployment does not share the same TC_DATA directory (this is, each server manager has
its own TC_DATA), the TC_MESSAGING_MUX_URL host must be set to the host on which the server
manager is installed.
If you want users to only subscribe to certain properties on subscribable objects, such as an Item or
ItemRevision, use the Subscription Properties tab in Subscription Administration in Teamcenter to
configure the properties on which users can subscribe.
For example, using the Subscription Properties tab, you can configure several ItemRevision properties
to make them available to users.
• If no configuration is defined on a subscribable object, all properties are available to Active Workspace
users for defining subscription criteria.
• A subtype inherits the configuration of the parent type unless it has its own configuration.
• If a property is turned off from subscription, but existing subscriptions utilize that property, then these
subscriptions continue to have the property in the criteria until the subscriber manually removes it.
Though existing criteria continue to apply, the Active Workspace user cannot define a new
subscription using that property.
Example:
• SCM_notification_mode
Indicates whether you want notifications to be delivered by email or news feed or both. If this
preference is set to 1 (default), your notifications are delivered by email. To receive notifications by
news feed, set the preference to 2. To receive notifications by both email and news feed, set the
preference to 3.
• AWS_Notifications_Polling_Interval
Specifies (in minutes) how frequently the system is polled for notifications, site-wide. The default
setting is 5. If this preference is set to 0, the Alert navigation button is disabled.
You are now able to view the number indicator to the right of Alert when:
In addition to receiving notification by email or news feed, users can also select to receive daily and
weekly digests that contain subscription notifications by selecting Set Daily and Weekly Digests
(Collate all notifications) from the profile page.
The periodic digest collates all the daily notifications into a single email and it collates all notifications
from the week into a weekly digest that is sent as a single email.
• SCM_notification_digest
Indicates whether notifications are delivered as a digest. If this preference is set to 1 (default), digest
notifications are disabled at the Site level.
• Active Workspace
Once the user enables the digest from the profile page, the digest is enabled for that user.
• Rich client
The user can create a User preference to override the value to set it to 2 to enable the periodic
digest.
• SCM_notification_digest_file_size_limit
Specifies the digest notification file size limit in megabytes (MB). The default value is 1 MB.
When the size of the collated digest notification exceeds the specified size limit, the digest is sent in
multiple parts.
This applies to both email and news feed notification methods.
• SCM_execution_day
Specifies the day the weekly digest is triggered. The default is Sunday.
• SCM_execution_time
Specifies the time the digest is triggered. The default is 15:00.
• WEB_default_site_server
When set, the digest contains the link for the subscription.
• Active Workspace
Use the format localhost:7001; for example, http://10.123.54.46:7001/awc.
• Rich client
Use the format WEB_SERVER_HOST:PORT; for example, 10.123.54.46:7001.
Since users can subscribe to multiple objects, you can use the AWC_followMultiObject_max preference
to control the number of objects to which a user subscribes at a time. By default, this preference is set to
5.
Configuring My Events
Users can use My Events to follow multiple events on an object. Because it is important to control the
number of events to which a user follows at a time to prevent users from creating many subscriptions,
use the following site preferences:
• AWC_followMultiEventConfig_max
Controls the maximum number of events a user can select on an object to follow. By default, this
preference is set to 5.
• AWC_followMultiEventConfiguredEventTypes
Controls default configured event types for multiple events. Valid values are
__Attained_Release_Status, __Attach, and __Item_Rev_Create.
Use the SCM_newsfeed_purge_threshold site preference to configure the number of days user news
feed notifications are retained before being purged. The default setting is 0 days, which retains the
news feed messages always. If you remove the preference value, the Retain News Feed (In Days) field
still displays on the Profile page.
Users can view their news feed retention time by going to the SUBSCRIPTIONS area of their Profile
page. From there, they can configure their threshold value. Otherwise, the purge is based on the site
configuration.
You can purge old news feed notifications using the clear_old_newsfeed_messages command-line
utility. To process only read messages, enter the following:
This utility purges messages based on the purge threshold that you set using the
SCM_newsfeed_purge_threshold preference.
Visualization configuration
What is visualization?
Visualization is the displaying of part files in a viewer. The View tab in Active Workspace allows you to
see the part files of the selected object.
After installing visualization components, usually you do not need to change visualization settings. But
you can change aspects of visualization to improve security, logging, and performance.
Before you can configure visualization, you must install the features. Install the following from the
Features panel of Teamcenter Environment Manager (TEM):
• Visualization Extension
Installs the visualization template for Active Workspace.
Select Active Workspace→Server→Visualization Extension.
If you are using a TCCS environment for Teamcenter, you must set up a separate TCCS environment for
the Active Workspace URL in order to open models in standalone Visualization from Active Workspace.
The Active Workspace URL must be added in addition to the Teamcenter URL.
Follow the instructions in the Teamcenter help to Install TCCS using the stand-alone installation wizard,
to add another URL like this: http://servername/awc/tc.
You can specify the address for the Teamcenter SOA service which is the context root for the
Teamcenter instance. In some reverse proxy deployments, the Visualization Pool Manager cannot access
the outside reverse proxy address due to a firewall. This address is used to provide a direct path from the
Visualization Pool Manager to the main Teamcenter SOA stack.
2. Select Visualization Server Pool Assigner (Java EE) or (.NET)→Update Visualization Server Pool
Assigner configuration and click Next.
3. In the Visualization Server Pool Assigner Settings dialog box, type the server side four-tier URL in
the Server Side 4-Tier URL box.
You have two options when configuring Visualization in an environment where Teamcenter is behind a
load balancer.
Option 1
Set up Teamcenter in a cluster, and then configure it behind a load balancer. For more information on
setting up Teamcenter in a cluster, see Overview of clustered deployment in the Teamcenter Help.
Note:
The Teamcenter load balancer URL cannot be used as the SOA URL unless Teamcenter is deployed
in a cluster.
Option 2
Deploy Teamcenter and Active Workspace behind a load balancer—preferably on the same application
server. Use localhost for configuring the Active Workspace SOA URL. You will still achieve load balancing
since the client requests are coming in through the load balancer.
If you must deploy Teamcenter on a separate application server or the Teamcenter SOA URL needs to be
configured with a valid domain name in your environment, then due to the unique Teamcenter SOA
URL, you must generate separate Active Workspace gateway deployments, each configured with its own
VisAssigner.
If you are using Teamcenter version 11.x, before you can use the Active Workspace viewer when
Security Services (SSO) is enabled, the following must be configured.
• You need just one login service deployed in Applet mode to be used by Visualization as well as the
Active Workspace client.
• The Teamcenter thin client must be enabled for Security Services and configured with a Login Service
that is deployed in applet mode. See Security Services Configuration in the Teamcenter help.
• You must configure the Identity Service with two appID values: one for Active Workspace and
another for Teamcenter thin client.
• The Teamcenter server must be configured for single sign-on with both appID values separated by
a comma or space. For example:
appID value
• Once configured, verify you can log onto the Teamcenter thin client from the Visualization Server
machine. You may need to enable Java applets for the browser.
Note:
Ensure you add a trailing slash (/) to the end of the URL.
After working in one Active Workspace session for more than 10 hours, the viewer may fail to launch.
Sign out of Active Workspace and sign in again to open the viewer.
If you remain signed in overnight, Security Services may time out. If it does, sign in again.
The Visualization Pool Assigner and Visualization Server Manager have several configuration parameters
that impact server scalability, that is, how many Active Workspace users can open 3D viewers before the
Visualization Servers are considered too busy to accept any further users.
• Timeouts
When an Active Workspace client opens a model in a 3D viewer, a corresponding server data
container is opened in a VisView process on the Visualization Server. A single server VisView process
may contain several data containers, from different clients' viewers.
Each VisView process and each data container in it consumes server resources. When a client viewer
is terminated, for example, by the user logging out of Active Workspace or closing the browser tab, an
opportunity to release server resources arises. However, for the scenario when a client viewer is not
terminated but merely becomes inactive, a timeout period may be set that releases server resources.
The following settings provide a way to control this timeout behavior.
timeoutS seconds,
then it is terminated.
These timeout settings play a role in the tradeoff between server scalability and client user
convenience. Decreasing the timeout values may allow more users access to the Visualization Server
(by sooner releasing unused server resources of inactive users), but may cause more inconvenience to
individual users (by triggering more reconnection events). Reversely, increasing the timeout values
causes less viewer reconnect interruptions to users but increases overall server resource usage, which
allows fewer users access to the server.
Example:
Suppose a Visualization Server is configured with the default timeout values, and it has a single
VisView process with 2 data containers, each connected to a client viewer. The first client
viewer becomes inactive, that is, there is no more http traffic to its data container. After 15
minutes of inactivity, the first data container is closed, leaving only the second data container in
the VisView process. The second client viewer becomes inactive some time later. After 15
minutes of inactivity, the second data container is also closed, leaving the VisView process with
no data containers. The process is not terminated immediately, as it contains cached data that
might be useful for a suitable client viewer that might connect. However, the process is
terminated after another 15 minutes, namely the difference between the Visualization Server
Manager timeoutS and the Visualization Pool Assigner timeoutS. This is why the value of the
Visualization Pool Assigner timeoutS should always be smaller than the value of the
Visualization Server Manager timeoutS.
Note:
• If the user accesses the client viewer after it has timed out (the Visualization Pool Assigner
timeoutS), a message appears warning that the connection is being reestablished, and the
viewer reconnects to the Visualization Server.
• Actions in other, non-viewer interfaces of Active Workspace do not affect the viewer inactivity
state. It is defined solely through the http traffic to the Visualization Server, not to the
Teamcenter server.
• When reconnecting, the viewer selection state and visibility state is restored. However, the
navigation state and any state of the viewer panels, such as Measurement and Section is
not restored.
The Visualization Server Manager constantly monitors all VisView processes. If a process becomes
unresponsive to these monitoring requests, then it is terminated. This avoids hung processes
consuming valuable server resources.
• maxBytesPerSec
The Visualization Pool Assigner and Visualization Server Manager both possess a maxBytesPerSec
configuration parameter. This parameter represents the maximum number of bytes per second that
this node may transmit or receive before it rejects requests from users to load new models. The
default value is 125000000 bytes per second. If your server system is consuming too much network
bandwidth, you may want to consider adjusting this parameter.
To modify this configuration parameter for the Visualization Server Manager or the Visualization Pool
Assigner, do the following:
1. In a text editor, open the jettyservice.properties file from the in the Visualization Server
Manager’s or Visualization Pool Assigner's installation.
2. Adjust the value of the VisPoolproxy.maxBytesPerSec parameter for your server environment.
• maxUsageThreshold
The Visualization Pool Assigner and Server Manager possess a maxUsageThreshold configuration
parameter. This parameter represents the maximum usage and load ratio that any Visualization
Server Manager or VisView process may possess before the Visualization Pool Assigner refuses to
allocate new open model requests to that Visualization Server Manager or VisView process. The
Visualization Pool Assigner and Server Manager do not assign any more users to a particular VisServer
if its system load (an amalgam of network usage, CPU usage, memory usage, and GPU memory
usage) exceeds the given threshold specified with this parameter. The range of values accepted is 0.0
(no load) to 1.0 (full load).
To modify this configuration parameter for the Visualization Server Manager or Visualization Pool
Assigner, do the following:
1. In a text editor, open the jettyservice.properties file in the Visualization Server Manager’s or
Visualization Pool Assigner's installation.
You can use IIS Manager to recycle application pools; however the Visualization Pool Assigner does not
support recycling.
When an application pool is recycled, stored information about client connections, health, and model
sizes is cleared. This causes errors, typically socket exceptions, in the connected Visualization Server
Manager. These exceptions are difficult to resolve and stop the Visualization Server Manager. Because of
this condition, settings for the application pool containing the Visualization Pool Assigner must be
updated to disable recycling.
You must set these two settings in the IIS Manager Advanced Settings for the application pool that
contains the Visualization Pool Assigner:
When using client-side rendering in Active Workspace Visualization, you can enable gzip compression for
all VisProxyServlet/emm HTTP responses from the Visualization Pool Assigner to the client. To do this,
you use a parameter in the Visualization Pool Assigner configuration file.
VisPoolProxy.allowHTTPResponseCompression=True
Note:
To disable compression, set the value to False. (This is the default value.)
The Visualization Server Manager logs capture system information that you can use to identify and
resolve problems.
Name Value
TCVIS_DA_DEBUG_LOG True
Note:
For this environment variable, the value of
True is case sensitive.
ERROR
INFO
DEBUG
Example:
With TCVIS_LOGGING_LEVEL set to DEBUG, the log files include information about how the
system is using OpenGL. When setting up the Visualization Server hardware, you can use this
information to ensure the graphics hardware is operating as expected.
For example, the information in the sample output below indicates the system is not configured
properly, because it is utilizing software rendering.
Note:
When a Visualization Server process crashes, a log file with crash information is always written.
If Visualization Server logging is not enabled, the log file is written to the system TEMP
directory.
On Windows systems, the Visualization Pool Assigner exposes a variety of useful information through
JMX, but not all of this information is available automatically. Due to stability risks, the following JMX
metrics are unavailable for the Visualization Pool Assigner without special configuration:
• computerCpuUsageRatio
• computerMaxBandwidthBytesPerSec
• computerMemUsageRatio
• computerNetworkUsageRatio
• computerTotalMemMB
• loadRatioAbsolute
• loadRatioRelative
• visSysCpuUsageRatio
• visSysMemUsageRatio
• visSysNetworkUsageRatio
Although these metrics appear in a JMX client, their values are not populated with useful
information. To enable these JMX metrics for your Visualization Pool Assigner, you must copy a provided
DLL into the path of the Java servlet container hosting your Visualization Pool Assigner.
1. Locate the web application file vispoolmanager.war installed by TEM on your file system under
the visassigner folder.
3. Navigate into the WEB-INF\lib\ area and locate the vis-proxy jar file.
5. Add the location of Metrix.dll to the path of the server that hosts your Visualization Pool Assigner.
The easiest way to do this is to find the script that starts the server, or to create a new script to start
the server if one does not already exist. In the script, prepend the location of the Metrix.dll to your
path.
Example:
If you place Metrix.dll in C:\foo, add the following command to the script:
set path=C:\foo;%path%
The Metrix library could not be loaded. Some system performance metrics
are unavailable to JMX clients.
If the Visualization Pool Assigner succeeds in finding Metrix.dll, no warning is displayed and the
JMX metrics are populated with meaningful data.
The pages, panels, and features used for visualizing 3D data are available to users based on their
Visualization service level license: Base, Standard, Professional, or Mockup.
• Enter the value for the correct service level for the Visualization Licensing Level option when
creating or managing a user in Active Workspace.
• Select the correct service level for the Visualization Licensing Level option in the Teamcenter
Organization application.
You can change the default settings for many of the Active Workspace visualization features by changing
their preference values in the Teamcenter rich client.
When you use the Fit command to fit components in the view, by default a spherical boundary selects
and fits the components. You can configure the Fit command to fit a 2D box around the model and
annotations and fit that within the 2D viewing area. With this feature enabled, the result can be a closer
view of the parts within the viewing area.
The 2D Viewer allows you to view additional 2D file types in Active Workspace.
The 2D Viewer (Awp02dViewer) is one of the individual viewers that are part of the Universal Viewer
and can render certain files that the Image Viewer (Awp0ImageViewer) cannot. When first installed, it
renders the HPGL, DXF and TIF file types, but it can be configured to view many more. Some of the
more common file types are:
See the Teamcenter Visualization documentation on Support Center for a full list of supported 2D file
types.
For the 2D viewer to be available to the universal viewer, the following Visualization Server components
must be installed:
First you must tell the universal viewer to use the 2D viewer for your file type. For each file type you
want the 2D viewer to use, add a new line to the AWC_defaultViewerConfig.VIEWERCONFIG
preference or modify an existing line to change the viewer type to Awp02dViewer. Verify that there are
no duplicate dataset types in the list.
datasetType.Awp02dViewer=namedReference
Then tell Teamcenter Visualization to open the file type. Add a new value to each of these two
Teamcenter preferences containing the dataset type and the named reference.
VMU_Datasets – datasetType
VMU_FileSearchOrder – namedReference
Example:
You want to use the 2D Viewer to render your NX drawings.
NX drawings are stored in UGPART and UGMASTER datasets. Normally, these datasets are viewed
in the image viewer (Awp0ImageViewer) and it uses the UG-QuickAccess-Binary reference.
You need to set the universal viewer preference to use the 2D viewer for those dataset types
instead of the image viewer.
Find and edit the existing lines for the two dataset types.
UGMASTER.Awp0ImageViewer=UG-QuickAccess-Binary
UGPART.Awp0ImageViewer=UG-QuickAccess-Binary
UGMASTER.Awp02dViewer=UGPART
UGPART.Awp02dViewer=UGPART
UGMASTER
UGPART
UGPART
When you display and manipulate a 3D model in Active Workspace, the Visualization Server renders
images of the model and sends them to the client viewer for display. The images are typically the same
size as the client viewer. However, if the client viewer is larger than the desktop resolution of the
Visualization Server, the images are the same size as the server resolution and scaled to fit the client
viewer.
If you expand the client viewer to the point where it exceeds the server resolution, the scaled images
may appear soft, especially the edges of 3D models. To compensate for this, increase the desktop
resolution on the Visualization Server.
It is recommended that the system administrator consider the maximum client resolution that is needed
to show crisp images, and set the server desktop resolution accordingly. Note that there is no fixed
overhead to setting a high server desktop resolution, as clients typically use a lower resolution and the
corresponding server rendering and network image transfer happen at that lower client resolution.
Use the AWC_3DViewerDisplayUnit preference to configure the default display unit. The default unit is
Meters. Users can override the default unit using the Displayed dropdown.
Value Units
1 Millimeters
2 Centimeters
3 Meters
4 Inches
5 Feet
6 Yards
7 Micrometers
8 Decimeters
9 Kilometers
10 Mils
The default measurement precision is hundredths on Windows systems, and ten thousandths on Linux
systems. To change the measurement precision, perform these steps on the machine that hosts the
visualization server.
Windows systems
Launch the Windows registry editor (regedit).
Linux systems
Type the following command:
Run TC_ROOT/vispoolmanager/VisServerFV/bin/regedit
HKEY_CURRENT_USER\Software\Siemens\AW_Retained\6.0\Common\C\Measurement\
3. Under this key, right-click the Measurement_Precision value and choose Modify.
Value Precision
0 3
1 3.1
2 3.14
3 3.142
4 3.1416
5 3.14159
5. Close the registry editor and restart the Visualization Server Manager to enable the registry
change.
Add support for the JT Override Children column on the structure table
Complete the following steps to enable the end user to add the JT Override Children column to the
structure table.
</Client>
</Import>
2. At the Teamcenter command prompt, merge the XML file with any existing column definitions
using the import_uiconfig utility, and specify the desired group and role values for this
functionality.
When viewing a structure that has an element overridden by a monolithic JT file, only the monolithic JT
file geometry is displayed in the 3D Viewer. No geometry associated with any of the individual child
lines under that element will be loaded or displayed in the 3D Viewer.
To enable the end user to view the geometry overridden by a monolithic JT file by opening the
overridden subassembly in a new tab, uncomment the following line in the Visualization Server
Manager’s jetty/jettyservice.properties file:
#VisPoolProxy.envset.TCVIS_IGNORE_ROOT_MONO_OVERRIDE=True
Note:
To enable this functionality for MMV data, your administrator must set the
ProductManager.IgnoreRootMonoOverride=true in the Visualization Data Server's etc/
VisDataServer.properties file.
Bounding box validation checks for stray parts outside of an assembly. You must define the assembly’s
bounding box by using minimum and maximum X, Y, and Z values.
Parts that are found outside the defined area are not only a potential problem with locator numbers,
drawings, sections, analysis, and so on, but also can cause issues displaying the assembly in the 3D
viewer. For example, if a stray part is located far outside the defined area, then when the assembly is fit
to the viewer it may have to zoom out so far that the parts are merely dots on the screen.
Bounding box validation is only available if the Visualization Data Server is installed.
By default, you choose which assemblies need bounding box validation and attach a form to each,
assigning the minimum and maximum values for the bounding box.
Once the form is attached to the assembly and filled out, if a part in that assembly falls outside the
defined area, an entry is logged in the BBoxUpdate.log file located in your system temp directory. You
may assign bounding box validation to as many assemblies as you want, just add a form to each one.
Occasionally checking this file will reveal any parts that violate any assigned bounding boxes.
Use a Teamcenter form to define bounding box validation parameters and assign them to your
assemblies. This ensures that each assembly uses the correct bounding box parameters.
1. Create a form of type UGPartBoundingBoxForm, and attach it to the top level of the assembly
using the IMAN_requirement relation.
2. Fill out the fields on the form to define the minimum and maximum X, Y, and Z values for the
bounding box.
The system will automatically use this form on this assembly to validate that all parts fall within the
defined bounding box.
Repeat this process for each assembly where you want a bounding box validated.
You can make changes to the default behavior of bounding box validation by modifying the BBox
Validator section of the VisDataServer.properties file, which is located in the TC_ROOT\VisDataServer
\etc directory.
Note:
After making changes to this file, you must restart the Visualization Data Server for those
changes to take effect.
# BBox Validator
# Default BBox limit on the products. A per product limit can be set using a bbox form
on the Item Revision.
# The BBox units are in meters...
# Specifies the suppression to be done on a Node that extends outside of the BBoxLimit.
# The supported modes are the following (FileRef is the default mode):
# Full: The complete Node information is suppressed. Same behavior as no read access on
a Node.
# FileRef: Any file references are removed. Same behavior as no read access on the
attached files.
# None: No suppression will be done.
ProductManager.BBoxValidator.NodeSuppression= FileRef
By default, bounding box validation suppresses the display of any parts that violate the validation
bounding box limits in the 3D viewer, but still shows the entry in the structure.
• Full — The complete node information is suppressed, both in the 3D viewer and in the structure, as if
the part is not present in the assembly.
• FileRef — The 3D viewer suppresses the display of the file, but the BOM line entry still shows in the
structure.
• None — No suppression.
By default, bounding box validation looks for the following properties on specific form type attached to
the assembly with a specific relation:
You can change any or all of these values if you want to use a custom form, properties, or relation.
By default, bounding box validation only examines assemblies with the specific form attached. You can
uncomment the following line to provide a default bounding box for all assemblies in the database. Any
assemblies that have the form attached will override these defaults.
Workflow configuration
What is workflow?
A workflow is the automation of business procedures in which documents, information, or tasks are
passed from one participant to another in a way that is governed by rules or procedures. Users click the
INBOX tile to view workflow assignments.
You may want to change how workflow assignments are displayed to end users.
Before you can configure workflow, you must install the features. Install the following from the
Features panel of Teamcenter Environment Manager (TEM):
• Workflow
Installs the user interface elements for using workflow in Active Workspace.
Select Active Workspace→Client→Workflow.
• Workflow Server
Installs the server-side definitions for workflow.
Select Active Workspace→Server Extensions→Workflow Server.
Note:
Currently, users cannot manually subscribe to resource pools through Active Workspace.
Use the Fnd0AssignTaskPrivilege Business Modeler IDE condition to restrict the reassignment of
workflow tasks. By default:
• The current user who is either the assignee of the task or an active surrogate can reassign a task.
• For signoff tasks, if the decision has not been set, the current user who is either the assigned group
member or the active surrogate can reassign the task.
Use the Fnd0AddReviewerPrivilege Business Modeler IDE condition to restrict the addition of reviewers
at the perform signoff stage of workflow tasks. By default all users can add reviewers to perform signoff
tasks.
Refer to Configure your business data model in BMIDE in the Teamcenter for more information about
setting conditions.
The user list is restricted to the organization or the selected project in the project list. If this preference is
set to org_only, projects should not be shown. If this preference is set to project_only, the users
outside the assigned projects are not shown for selection. If the option is set to project_default, the
owning project is preselected and its team should be shown by default.
You can set the properties to be used to filter the tasks that appear in the Inbox, as shown in the figure
for the tasks found when selecting the Team tab. The tasks are Workflow business objects of the
EPMTask type and its subtypes.
To set the filtering, in the Business Modeler IDE, set the following property constants on the property of
the Workflow business object on which you want to filter.
• Awp0InboxCanFilter
Indicates that Workflow objects can be filtered on the property.
• Awp0InboxFilterPriority
Indicates the priority of the property that determines its order in the list of filters displayed in the
Inbox. The lower the value, the higher its priority and, therefore, the higher its position in the list of
filters.
Siemens Digital Industries Software recommends that you assign values from a range to
accommodate additional properties in the future. For example, assign priorities such as 100, 200, and
300, instead of 1, 2, and 3.
By default, the following properties are shown as filters for Workflow business objects:
• object_type
The type of object.
• due_date
The date the object is due.
• fnd0Assignee
The user to whom the task is assigned.
• fnd0Priority
The priority of the task.
• fnd0WorkflowInitiator
The user who initiated the workflow on the task.
Workflow filters can only be set on the following types of persistent properties or compound properties
targeting them.
Property types supported for filtering Property types not supported for filtering
• Logical
Configure Active Workspace to send users email notifications when there are workflow tasks in their
inbox. The email notification contains a link to the task so the user can select it to open the task in their
Active Workspace inbox.
Use the following workflow handlers and preferences to configure the notifications.
• Use the following workflow handlers to Insert a link to the workflow process into the notification
email.
• EPM-notify
Informs users of a task's status through email.
Contains a -url argument. The value for Active Workspace is activeworkspace.
If the -url argument is not specified, the values specified in the EPM_notify_url_format preference
is used.
• EPM-notify-report
Sends a report through email to all task reviewers.
If the-url argument is not specified, the values specified in the EPM_notify_url_format preference
is used.
• EPM-notify-signoffs
Informs users of a signoff task's status through email. It does not contain a -url argument. Instead,
it uses the format specified in the EPM_notify_url_format preference.
• For an Active Workspace link to be added in the notification email, either of the following two Active
Workspace hosting preferences must be present:
Note:
These preferences are not included in your Teamcenter installation. You must add them to the
database.
• ActiveWorkspaceHosting.URL
Specifies the URL that Teamcenter uses to communicate with Active Workspace for hosted
operations, such as search, open item, and others.
URL=http://<host>:<port>/awc
• ActiveWorkspaceHosting.WorkflowEmail.URL
Specifies the URL used that the workflow uses to communicate with Active Workspace for email
links. For example:
URL=http://<host>:<port>/awc
For more information about these workflow handlers and preferences, see Workflow Designer and
Environment Variables Reference in the Teamcenter help.
Use the Fnd0AccessInboxPrivilege Business Modeler IDE condition to set what users can open another
user’s Inbox. By default, users belonging to the dba group are given privileges to open another user’s
inbox. Other users do not have permission.
Refer to Configure your business data model in BMIDE in the Teamcenter help for more information
about setting conditions.
If you want to display custom properties in the inbox, you need to understand the basic functionality of
three important objects in the data model.
• EPMJob
• EPMTask
• Signoff
Tip:
This is a brief overview of a few essential objects and properties for workflow. The object and
property descriptions in the Business Modeler IDE are the source for complete information about
objects and their properties.
EPMJob
The root_task property contains a link to the top-level EPMTask object. This root task is the starting
point for navigation to all the other tasks in the workflow task hierarchy.
EPMTask
Properties like parent_task and child_task define the workflow's structure by containing links to other
EPMTask objects.
The successors property lists which tasks will be launched after this one finishes (reaches the complete,
failed, or skipped state).
The signoff_attachments property contains a list of Signoff objects related to the task.
Signoff
This object keeps track of not only the decision itself, but also key properties such as, the decision-
maker, the date of the decision, and any comments.
The Inbox will normally display one of the children of the EPMTask object, so the EPMTask is where you
add your custom property. However, when the review or acknowledge task is asking for approval during
the Perform signoff task, the Inbox will display the Signoff object instead.
The Signoff object is not a child of the EPMTask object, so you must be certain to add your custom
property to the Signoff object as well, if you want it to always be displayed.
The Active Workspace client framework presents Teamcenter and its applications, as well as other data
sources, in an intuitive user interface, rather than the traditional interfaces and applications that
targeted expert users.
Active Workspace is a web application that connects to Teamcenter and other data sources in order to
present a consistent interface for the user. With Teamcenter, it communicates with the web tier of the
four-tier architecture, relaying user interaction and presenting the results. In this capacity, it can replace
other Teamcenter clients.
The user interface (UI) includes few main mechanisms for easy extension.
• Declarative locations
• Declarative commands
The Active Workspace interface consists of many components. Learn the Active Workspace user
interface terms for these components.
Visit the UI Pattern Library in the Active Workspace section of the Support Center.
Use the Active Architect to change the UI layout quickly and easily.
Note:
Many of the more involved platform modifications require the use of the Business Modeler IDE.
Check the Teamcenter platform documentation to learn what is required.
Explicit checkout
When your user selects the Check Out command, the object is explicitly checked out to them on the
server, preventing anyone else from modifying the object. This lasts until the user explicitly checks the
object back in using the Check In command. During this time, the user can make changes without
concern about the object being modified while they are editing.
Optimistic locking
When your user selects the Start Edit command, the client allows them to edit the displayed
properties, but does not check out the object for exclusive editing. This editing only occurs on the client.
Then, after your user makes their changes and they select the Save Edits command, the client sends
the changes to the server which checks the last saved date of the object (using the lsd property).
• If the object has not been modified since the user started editing, then the server quickly locks,
modifies, and unlocks the object.
• However, if the object had been modified while your user was editing, then their changes are lost,
and the Active Workspace client displays a message stating that the object has been modified and
they should refresh it before editing.
You can use the Navigate action to take the user to a specific page.
The UI Pattern Library on Support Center maintains the up-to-date syntax and options.
In this example, you examine the OOTB command handler for the Open command. This command
handler references the showObject action, defined in the actions section.
The showObject action is defined as being a Navigate action type which will navigateTo the
com_siemens_splm_clientfx_tcui_xrt_showObject page, and it will send along the UID of the selected
object as a parameter.
The base activeWhen and visibleWhen condition expressions are shown for reference.
In this example, when a project object is selected the OOTB Open command is overridden so that it
takes the user to ProjectContents instead. This command handler references the
TcProjectShowDelegatedObject action, defined in the actions section.
The TcProjectShowDelegatedObject action is defined as being a Navigate action type which will
navigateTo the ProjectContents page, and it will send along the UID of the selected object as a
parameter.
You must never broaden an existing command condition. Include the original condition to use as the
base in order to ensure you are more specific. In this example, the original condition is ANDed with the
new condition to check the selected object to see if it is a TC_Project type. This ensures that this new
delegate command handler does not allow the Open command to be run outside of its normal design.
You can use the navigateIn attribute to open the new page in either a new browser tab or a new
browser window instead of the normal behavior of replacing the current browser contents.
newWindow Opens the new page in a new browser window. You can specify attributes for the new
window using the options attribute.
Declarative conditions
Conditions:
Expressions
or as a JSON object.
Operators
$source Indicates the reference on the data context node to be used as starting point for
evaluation.
$query Defines the query to be executed on the $source.
$all Applicable when the $source is an array. Indicates that query result should be valid on
all instances of the array elements.
$and A logical AND of each query result.
$or A logical OR of each query result.
$adapt The resulting $source should be adapted before evaluating the query. Active
Workspace sometimes uses intermediary runtime objects that represent other objects.
An example of this is the Awp0XRTObjectSetRow object in objectSet tables. When
you use $adapt the condition uses the target object instead of the intermediary object.
$in The query should match with at least one of the value from the array.
$notin The query should not match with any value from the array.
$eq Equal.
$ne Not equal. If you want to test for blanks, use:
• "$ne": "" to check if a single string property does not contain an empty string.
Use one of these with $notnull to ensure you find both blanks and nulls.
$notnull Null value. Pair this with $ne to ensure you find both blanks and nulls.
$gt Greater than.
$gte Greater than or equal to.
$lt Less than.
$lte Less than or equal to.
Example:
Use of $and: Enable this command handler when the selected object type is Folder AND
object_name is Newstuff
Example:
Use of $or: Enable this command handler when the selected object type is ItemRevision OR
object_name is Newstuff
Example:
Use of $and and $or: Enable this command handler when the selected object type is
ItemRevision OR ( object_name is Newstuff AND object_type is Folder )
Example:
Use of $adapt: Enable this command handler when the target of the selected intermediary object
is a Cpd0DesignElement object.
Example:
Use of $adapt along with $all: Enable this command handler when all of the targets of the
selected intermediary objects are Cpd0DesignElement
Example:
Use of $lte: Enable this command handler when the total workspace count is less than or equal to
1.
Example:
Reuse base condition: Enable this command handler when the base condition is true and type of
adapted selected object is Cpd0DesignElement.
Reuse does not re-evaluate the base condition. It simply uses the evaluation result of the base
condition as available from the conditions parameter on the evaluation context.
1. You name the search Ed unassigned bolts, and activate the Save button.
The <aw-button> in the view calls the save action when it is activated.
The save action in the view model calls a TcSoaService operation, createFullTextSearch.
2. The service fails because a saved search with that name already exists. The action uses a condition
to handle the failure.
The service fails with error code 141152, matching a condition. That condition raises the message
confirmOverwrite.
confirmOverwrite presents the warning message along with two options, Cancel and Overwrite.
The overwrite action calls the same service operation as before, but this time with override turned
on.
The successful SOA call returns a success event, which closes the panel.
Note:
Siemens Digital Industries Software developers use the same building blocks to create panels as
you. This example shows actual code snippets for an OOTB declarative panel, including a call to an
internal service. Only use documented, published services in your code.
Awp0XRTObjectSetRow
This object is used in objectSet tables. It works in conjunction with other objectSet runtime objects
to represent their awp0Target object on a style sheet. They are part of the aws2 feature template in
the Business Modeler IDE.
Awb0Element
This object and its subtypes (Awb0DesignElement, Awb0Connection, and so on) are part of Active
Content and used when Active Workspace displays objects in a structured manner, such as an
assembly. They represent their awb0UnderlyingObject in a bill of materials, product structure, and
so on. They are part of the activeworkspacebom feature template in the Business Modeler IDE.
Use the context object to verify what type of object is really being selected. Following are some
examples:
• Single object
When the user is viewing a single object,
then the object selected is the persistent business object shown, in this example the ItemRevision
object.
• Assembly
However, if you have Active Content installed and the user selects that same object in an assembly
structure,
which represents the underlying persistent business object by using its awb0UnderlyingObject
relation property.
In this example, you will create an indicator that appears when the object has a license attached.
A visual indicator is a small icon that appears when certain conditions are met; typically when a property
exists, or contains a certain value. This is in addition to the regular icon that an object displays. An object
can have several visual indicators registered to it. Active Workspace uses several visual indicators, such
as Checked Out:
• Knowledge of whether you need to pre-load any properties for your condition.
A sublocation is a page in the UI that displays information and has a URL that points directly to it. Every
sublocation must be assigned to a location, which is a grouping of related sublocations. Any number of
sublocations may be assigned to a location. If only a single sublocation exists for a location, then the
sublocation name is not shown.
Sublocation example
Examples of sublocations are: My Tasks, Team, Tracking, and so on. They are all part of the Inbox
location.
Custom sublocations
After creating your new sublocation, you can navigate directly to it by modifying your URL.
Example:
http://host:port/#/mySubLocation
Declarative UI introduction
A capability provided by the Active Workspace framework that allows for a concise and codeless
definition of UI view content, layout, routing, and behavior. Actions, messages, service calls and their
inputs and outputs can be mapped and described using HTML and JSON. It provides an abstracted
means of defining the client UI and its behaviors; the underlying implementation is hidden.
There are many reasons to use an abstracted, declarative user interface. It provides increased:
Sustainabilit Since the Active Workspace declarative elements are abstracted, the underlying web
y technology can evolve with minimal to no effect on existing layouts.
Consistency Each page and panel element is built from basic, modular UI elements instead of
custom pieces.
Declarative pages describe a single screen of the user experience and consist of several panels.
A declarative page is the entire presentation in the browser window and uses a URL.
• Contains a view model that describes the page's data, i18n, and behaviors such as actions,
conditions, messages, and routing.
Panels are also declaratively defined and share the following characteristics.
UI architecture
The Active Workspace UI consists mainly of sublocations grouped by locations. Each sublocation is
defined by views, which rely on view models for their functionality.
The declarative definition of the UI has two main components, the view and the view model.
The Active Workspace UI extends HTML with custom elements, which are part of W3C's Web
Components. Several custom elements work together to create content using the declarative UI:
Use an Active Workspace developer environment command prompt to create a new native module,
define your commands and custom elements, build and then publish it.
Visit the UI Pattern Library in the Digital Engineering Services documentation of Support Center.
Your custom declarative definitions reside in a module directory. You must create this directory in the
TC_ROOT\aws2\stage\src directory. To help organize your configurations, you may maintain several
modules, each in its own directory. You may create this directory manually, but using the
generateModule.cmd script to create a module does this for you.
kit.json
This singular file is provided OOTB, and is located in the TC_ROOT\aws2\stage\src\solution directory. It
contains the definition for your installed configuration. You must register any modules you create in the
kit.json file. You may edit this file manually, but using the generateModule.cmd script to create a
module does this for you.
The kit.json file contains too much information to list here, but the opening section is the portion of
interest.
• modules
This list of modules (defined by modules.json) are part of this kit.
module.json
A module may list other modules as dependents. In this file you define commands and their actions,
conditions, and placement. Use the generateModule script to create this file initially. It creates the
necessary directory structure and boilerplate files within the module directory.
• name
• desc
This is the description of the module.
• type
This is the type of module. The declarative UI uses the native type.
• commandsViewModel
This is where you define your commands. You may instead use the commandsViewModel.json file to
declare your command block. It must be a sibling of the module.json file.
• states
This is where you define your locations and sublocations. These are ui-router states.
You can use the visibleWhen statement within your sublocation state definition to control its
visibility based upon a condition.
• dependencies
This is a list of other module names that are required.
The visibleWhen attribute used within a sublocation state definition can be used to control its
visibility.
Note:
These snippets are provided for reference only, and are not designed to be production-ready code.
expression
ctx
The context object can be checked.
"expression":"ctx.selected.type=='aType'"
preferences
A preference can be checked.
"expression":"preferences.aMultiValuePreference.values.values[0]=='aVa
lue'"
parentState.data
The parent page's data section can be checked.
"expression":"data.aProp =='aValue'"
parentState.params
The parent page's params section can be checked.
"expression":"params.aParam =='aValue'"
A JavaScript function
The function should be asynchronous in nature and the .js file name should be provided in deps.
visibleWhen: {
expression:"isSubPageEnabled(ctx.loadedObject)",
deps:["js/subPageProvider"]
}
deps
You can specify the name of a JavaScript file containing a function you wish to check with your
expression. Following is a code snippet of such a file.
/**
* This is required to load the service.
*/
An Example
The following snippet from the OOTB state definition is an example of how the Advanced Search
sublocation is controlled by the AW_Advanced_Search_Visibility preference.
Declarative view
What is a view?
The view is an HTML markup file consisting of UI elements. The view is also responsible for:
• Mapping to data, actions, conditions, and i18n that are defined in the view model.
*View.html
Their file naming pattern is to prefix the page or panel name onto View.html. For example, create the
cmdQuickLinksView.html file to represent the view for the cmdQuickLinks panel.
View types
List
* With or without summary.
Image
Table
* With or without summary.
The view model is a JSON file. It is responsible for view state such as:
• Imports
• Actions
• Data
• Conditions
• i18n
*ViewModel.json
Their file naming pattern is to prefix the page or panel name onto ViewModel.json. For example, create
the cmdQuickLinksViewModel.json file to represent the view model for the cmdQuickLinks view.
Place your UI elements in this file to define the view, and import any necessary directives.
Imports
Imports are used to indicate the custom elements we want to use in our view and view model:
Actions
actionType
Supported options: TcSoaService, JSFunction, and RESTService
inputData
JSON data for the action input
outputData
Data
The view can refer to data and view state in the view model data section.
Conditions
Conditions evaluate to true or false, may use Boolean expressions (&&, ||, ==, !=), and may be used as
follows:
i18n
User-facing text is localized. The view refers to localizations defined in the i18n section of the view
model.
Declarative messages
Messages are localized, are launched by actions, and cover information, warning, and error notifications.
Messages may also:
Messages.json
The file naming pattern is to prefix the module name onto Messages.json. For example, create the
quickLinksMessages.json file to represent the localized text strings used within the quickLinks
module.
In the ...ViewModel.json files, strings are localized using the i18n object.
In turn, the i18n object refers to the ...Messages.json file to retrieve the actual string for display.
In this case, all of the i18n entries refer to a single file, MyModuleMessages. The system locates src
\i18n\MyModuleMessages.json to look up the localized strings. For this example, Enable the OK
button in footer, is displayed.
This extra layer of abstraction allows the ...Messages.json file to be exchanged based upon locale
without having to modify the ...ViewModel.json files. You can maintain as many message files as you
need.
A command is the concept of a command. Its property name in the commands object is the command
Id. Command contains the following properties:
• iconId: refers to the SVG icon stored in the image folder in the WAR location
• isGroup: true if a group command, false otherwise
• title: either an i18n key, or just a string
You can limit which commands your users see, based on various conditions. This helps reduce screen
clutter and allows you to tailor your users' experience to your company's needs.
Control the visibility of commands in the Active Workspace interface using a combination of client-side
conditions in the declarative command handlers, and server-side conditions in the Business Modeler IDE.
• Server-side conditions provide a base-level of visibility from which client-side conditions can further
restrict.
• Client-side conditions are preferable, since they are much easier to modify and do not require a server
call.
• Server-side conditions have a deeper data model access that might be required.
Some OOTB commands specify server-side conditions, many do not. Check the command list in the
Business Modeler IDE to see if a command has a server-side condition listed. Remember load all
appropriate templates. Even if there are no server-side conditions attached OOTB, you can still attach a
condition if you have a need.
Client-only control
Siemens Digital Industries Software recommends using only declarative client-side conditions and
expressions whenever possible. You use declarative conditions in the activeWhen and visibileWhen
clauses of your declarative command handler. Condition expressions are powerful and offer a lot of
flexibility, including the capability to check a server-side command condition.
Example:
"cmdQuickAccessHandler": {
"id": "cmdQuickAccess",
"action": "quickAccessAction",
"activeWhen": true,
"visibleWhen": {
"condition": "conditions.quickAccessVisibility"
}
}
This allows you to do more complex decision-making, such as checking for project membership or the
value of environment variables.
You can create server-based visibility for your custom command by registering it in the Client UI
Configuration section of the Business Modeler IDE. Remember load all appropriate templates.
You must use the ctx.visibleServerCommands declarative expression on the client-side in order to
implement server-based conditions.
Example:
You can specify a visibleWhen condition in the command handler,
The Active Workspace client will ask the Teamcenter platform to evaluate the conditions attached
to the Business Modeler IDE command definition named C9command.
The Business Modeler IDE is where you can define these conditions. They are used for many purposes on
the server side, including workflow creation, deep copy rules, list of values, and so on. They can check
object property values, user session information, other conditions, and even things like preference
values using the Fnd0ConditionHelper object. More complete information on server conditions are
found in the Teamcenter administration documentation. If you intend to modify the visibility of a
command that uses server conditions, be sure to examine the condition closely to learn how it works,
and verify what other functionality might be using that condition.
You must know which commands use a condition before you attempt to modify it. Use the Business
Modeler IDE search files function. One way to find command condition attachments is to search all
template files within your TC_ROOT\bmide\templates directory for the name of the command you are
interested in. You must have all your Business Modeler IDE templates installed, but not necessarily used
in the project, to get a complete result.
You can use any method you wish to search. In this example, Aut0AttachLicensesCmdCond is
searched. You should search your own extension files as well.
A command can have many command handlers. However at any given time, there may be at most only
one active commandHandler for a command. A declarative activeWhen condition that evaluates a
Boolean expression controls whether a handler is currently active. If more than one handler for a given
command evaluates to true, then the more specific condition, the condition with longer expression, is
chosen to be active. The active command handler determines:
If there are no valid commands in a command group, the group displays the No Commands
Available message when opened.
A command can have many placements. A placement is the actual visual rendering of the display of
the command. A command placement has the following properties:
Following are some common anchor points. There are far too many to list, and they can be discovered
easily.
1 — aw_globalNavigationbar
2 — aw_rightWall
3 — aw_contextMenu2
This is the generic context (right-click) menu anchor point for Active Workspace tables. Declarative
tables can also have their own anchor point for context menus, adding additional commands.
From the developer console in your browser, inspect the page's elements. You will find the anchor listed.
For example, to find out which anchor point the home folder command uses in this position, inspect it
using your web browser.
Tip:
This example shows Chrome. Firefox calls this feature Inspect Element. Others may vary.
Find the element containing the commands. It will have an attribute named anchor. In this case, aw-
command-bar.
The element inspector shows that this command is placed on the bar using the
aw_globalNavigationbar anchor point.
Example commandPlacements
"commandPlacements": {
"Awp0UnPinObjectOneStep": {
"id": "Awp0UnPinObject",
"uiAnchor": "aw_rightWall",
"parentGroupId": "Awp0ManageGroup",
"priority": 210
},
"Awp0PinObjectOneStep": {
"id": "Awp0PinObject",
"uiAnchor": "aw_rightWall",
"parentGroupId": "Awp0ManageGroup",
"priority": 140
},
"Awp0CopyToolsAndInfo": {
"id": "Awp0Copy",
"uiAnchor": "aw_viewerCommands",
"priority": 200
},
"Awp0GoBackGlobalNavigationbar": {
"id": "Awp0GoBack",
"uiAnchor": "aw_globalNavigationbar",
"priority": 1
},
"Awp0ChangeThemeSessionbar": {
"id": "Awp0ChangeTheme",
"uiAnchor": "aw_userSessionbar",
"priority": 2,
"showGroupSelected": false
},
"Awp0GoHomeGlobalToolbar": {
"id": "Awp0GoHome",
"uiAnchor": "aw_globalToolbar",
"relativeTo": "Awp0ChangeTheme",
"priority": -1
},
...
},
This determines when a command handler is active. A command handler must be both active and visible
to display in the UI.
Note:
Declarative conditions can be defined with arbitrary expressions utilizing client side
context. However, to accommodate server-side visibility logic the
IApplicationContextService keeps track of the commands which the server evaluates to be
visible. Therefore you can build expressions for your declarative condition that refer to the real-
time server-side visibility.
For example, if you want to have a condition expression that uses the server-side visibility of the
Awp0Checkout command your condition expression would simply be
"ctx.visibleServerCommands.Awp0Checkout". This variable can be used by itself or it can
be used with other client side expressions.
This determines when a command handler is visible. A command handler must be both active and
visible to be displayed in the UI.
Note:
Declarative conditions can be defined with arbitrary expressions utilizing client side
context. However, to accommodate server-side visibility logic the
IApplicationContextService keeps track of the commands which the server evaluates to be
visible. Therefore you can build expressions for your declarative condition that refer to the real-
time server-side visibility.
For example, if you want to have a condition expression that uses the server-side visibility of the
Awp0Checkout command your condition expression would simply be
"ctx.visibleServerCommands.Awp0Checkout". This variable can be used by itself or it can
be used with other client side expressions.
The Business Modeler IDE documentation for your Teamcenter platform contains information on
how to create command visibility conditions.
TcSoaService
JSfunction
JSfunctionAsync
RESTService
Navigate
The Active Workspace client is responsible for displaying any error messages. If an error is thrown by the
framework for example, the client must decide if it ignores it or displays it. The error will get logged to
the console regardless. If you write custom actions, they must process any errors you wish to display to
the user.
This functionality part of the Siemens Web Framework core upon which Active Workspace is based.
More information about this can be found in the Digital Engineering Services product on Support Center.
Please refer to the following topics:
Data providers
client You can define a client-side data provider using declarative definitions. Use this model
view mechanism to gather data from Teamcenter or other sources for presentation in
the UI.
server You can define a custom Teamcenter server-side data provider to gather data and send
it to a client.
All server data providers use a single, common Teamcenter service operation:
Finder::performSearch. Even custom data providers are covered by this operation, which means
you do not have to write a custom service wrapper.
Client data providers are flexible enough to retrieve data from various sources without requiring Java
code.
Warning:
The provided server-side data providers that ship with Teamcenter and Active Workspace are not
published and are for Siemens Digital Industries Software internal use. They may be removed or
changed without notice. The following information is provided for informational purposes only.
You can use the browser's developer tools to examine data providers in action.
Awp0SavedQuerySearchProvider
The purpose of this server-side data provider is to run a Teamcenter query and return the results to the
client-side data provider.
In this example, the General... query is called using the Advanced Search capability of Active
Workspace.
Use the Query Builder perspective in the rich client to examine the criteria for the General... query.
Following is the resulting client-side data provider call. Notice how the searchCriteria contains all of the
information to run the query on the server.
Two of these criteria are always required for this data provider.
searchID An identifier that must be unique, but does not carry any other significance. It is how
the client identifies this particular query call if it needs to.
typeOfSearc This must provide the type of search being requested.
h
One of the following two criteria is required to identify which query is run.
queryUID Using this criteria removes any question as to which query is run.
(shown)
The queryUID is the unique identifier of the query being requested, also known as the
C tag or C++ BusinessObjectRef. In this example, QEff7G00qd$DyB represents the
General... query in this Teamcenter database. One way to retrieve this value is to
examine the saved query using the rich client and the Print Object view.
queryName Using this criteria is easier, but the possibility exists that the query you want might be
deleted and a new query created with the same name.
Example:
queryName="General..."
or
queryName="Item Revision..."
Awp0FullTextSearchProvider
This provider uses the full text indexed search engine, and is used commonly throughout Active
Workspace, including the global search area.
searchString The text that will be queried. In this example, the wildcard asterisk is used.
searchFilter This shows any filtering criteria, like object type, owning user, and so on. In this
Map example, there is no filter.
You need to prepare several things in order to create your own server data provider.
You can now call the Finder::performSearch service operation from your client data provider.
Use a data provider in your view model to retrieve information from virtually any source. The
dataProviders object is an abstraction layer for components which fulfill the demand to load or
paginate data and pass it to the underlying object.
• aw-list
• aw-tree
Data provider objects are defined within a view model file using the following basic parameters.
dataProviders: {
}
You can use the following components to define the most basic data provider.
action Lists the actions available to the provider. These specify how the data is retrieved from
the source.
These are defined in the actions section of the view model file.
response A data bound array of returned objects.
totalFound A data bound value of the number of results.
dataProviders: {
"MyDataProvider": {
"action": "fetchData",
"response": "{{data.searchResults}}",
"totalFound": "{{data.totalFound}}"
}
}
"dataProviders": {
"imageDataProvider": {
"action": "loadData",
"response": "{{data.searchResults}}",
"totalFound": "{{data.totalFound}}"
}
},
"actions": {
"loadData": {
"actionType": "REST",
"method": "GET",
"inputData": {
"request": {
"method": "GET",
"startIndex": "{{data.dataProviders.imageDataProvider.startIndex}}",
"url": "sample_url"
}
},
"outputData": {
"totalFound": "{{results.fetcheddata.length}}",
"searchResults": "{{results.fetcheddata}}"
}
}
}
You can use a data provider to retrieve information from a fixed list.
"dataProviderType": "Static"
Use the data object to store the information you will retrieve.
Example
"dataProviders": {
"locationLink": {
"dataProviderType": "Static",
"response": [
"{{data.Romulus}}",
"{{data.Remus}}"
],
"totalFound": 2
}
}
"data": {
"Romulus": {
"displayName": "Romulus",
"type": "STRING",
"dbValue": "Romulus",
"dispValue": "Romulus"
},
"Remus": {
"displayName": "Remus",
"type": "STRING",
"dbValue": "Remus",
"dispValue": "Remus"
}
You can use a data provider in response to an action. Action data providers do not need to declare their
dataProviderType, it is the default.
selectionMo Indicate the selection mode in the data provider. Valid values are single and multiple.
delMode The default is single.
commands Add commands inside the data provider.
commandsA Specify a command anchor bar.
nchor
preSelection Indicate if the newly added object will be shown as selected. Valid values are true and
false. The default is true.
"actions": {
"reveal": {
"actionType": "dataProvider",
"method": "imageDataProvider"
}
}
"actions": {
"reveal": {
"actionType": "dataProvider",
"methods": ["getHistory", "getFavorites", "performSearch"]
}
}
"imageDataProvider": {
"action": "loadData",
"response": "{{data.searchResults}}",
"totalFound": "{{data.totalFound}}",
"inputData": {
"someData": "{{ctx.abcd}}"
}
}
You can use pagination to help minimize the initial loading time, and also help reduce the load on the
server. Pagination support for client data providers work in conjunction with the server. The server
should support and return basic parameters which are required for pagination to work. The client data
provider has two major fields to enable pagination:
The data provider calculates the startIndex for the next SOA or REST call based on the length of the
response data.
Start index
startIndex is required by the stateless server to send the next set of data upon scrolling.
"startIndex" : "{{data.dataProviders.sampledataProvider.startIndex}}"
This parameter is calculated and maintained by the data provider. This parameter should be passed as
input to the REST or SOA call.
"loadData": {
"actionType": "RESTService",
"method": "GET",
"inputData": {
"request": {
"method": "GET",
"startIndex":
"{{data.dataProviders.sampledataProvider.startIndex}}",
"url": "sample_url"
}
}
}
The data provider comes with a default selection model. The primary responsibility of a selection model
is to:
• Maintain a list of objects that are selected inside the data provider.
• Keep the internal state information of the selection. Multi-select state, selection mode, and selection
status, for example.
Basic methods
setMode
Change selection the mode.
isMultiSelectionEnabled
Check if multi-select mode is active.
setMultiSelectionEnabled
Enable or disable multi-select mode.
isSelectionEnabled
Check if selection is enabled.
setSelectionEnabled
"imageDataProvider": {
"action": "loadData",
"response": "{{data.searchResults}}",
"totalFound": "{{data.totalFound}}",
"selectionModelMode": "multiple"
}
You can add a custom selection model based on your needs. Use the inputData parameter on the data
provider.
"imageDataProvider": {
"action": "loadData",
"response": "{{data.searchResults}}",
"totalFound": "{{data.totalFound}}",
"inputData": {
"selectionModel": "{{data.selectionModel}}"
}
}
You must perform all sorting and filtering on the server. The data provider does not have its own sorting
or filtering capabilities, though it can assist server by sending the sort and filtering criteria from the
action associated with the data provider.
"dataprovider": {
"gridDataProvider": {
"action": "loadData",
"response": "{{data.searchResults}}",
"totalFound": "{{data.totalFound}}",
"inputData": {
"selectionModel": "{{subPanelContext.selectionModel}}",
"searchSortCriteria": "acending"
}
}
},
"action": {
"loadData": {
"actionType": "RESTService",
"serviceName": "GET",
"inputData": {
"request": {
"method": "GET",
"withCredentials": false,
"url": "https://some-url",
"searchInput": {
"searchFilterMap": "{{ctx.activeFilterMap}}",
"searchSortCriteria":
"{{data.dataprovider.gridDataProvider.sortCriteria}}",
"startIndex": "{{data.dataProviders.gridDataProvider.startIndex}}"
}
}
}
}
}
Basic interface
3. Location
The global navigation bar, which displays on all pages of the UI, provides commands that are available
regardless of context. These commands typically don't take any input or have any selection awareness.
They deliver you to common locations or perform other functionality like Favorites or Previous
Location, for example.
Location
A location defines a page that supports a set of closely related sublocations. Each location includes:
3. Global search
4. Sublocation
The global navigation toolbar includes an Active Workspace back button so that users can move to
previously visited locations such as Search, Changes, or an open object.
The Active Workspace back button differs from a browser back button. A browser back button moves
through each URL that was displayed in the browser address bar. In contrast, the Active Workspace back
button moves to the user's previously visited location (Search, Changes, or an open object) but not to
tabs (Results, Saved, Recent. The behavior of the Active Workspace back button allows a user to quickly
navigate from the Changes page to a target object and back, regardless of any intermediate steps taken
to view various tabs of information on the target object.
Active Workspace includes the active tab within a location and can include information such as browser
address bar URL content. This supports browser refresh and URL sharing with little or no page changes,
however the history of the Active Workspace back button is cleared on browser refresh.
A context control for the current session is present on the global side of the UI. It allows the user to view
their profile, sign out, and change context information such as current project or program, group and
role, and the revision rule for selecting the specific revisions.
You can view your user profile, sign out, or change your current project, group, role, revision rule,
change context, workspace from this menu. If you only have a single option, you may not see the
choice. In the following example, the workspace is not shown here, because there is only a single choice
available.
From this menu, you can select Pop Out User Properties to create a user session bar at the bottom of
the page.
Global search
The search box is present on all locations for full-text searches. The user can enter any search string and
perform a search. Performing a search changes the location to the Search location and presents the
objects that meet the search criteria.
The search area will collapse for a cleaner look. To return it, use the Expand Search Box icon.
A sublocation defines the content of the location and how it is presented. Sublocation names are
presented as the primary navigation tabs.
• When a location has only one sublocation, the tabs are not displayed.
When the location is a Teamcenter business object (part, document, or change, for example), the
sublocation tabs are defined by the object's XML rendering template (XRT).
Each sublocation has a unique URL. You can use the URL to navigate to the sublocation. The component
contributing the location and sublocation defines this URL.
Sublocation content
Each sublocation has a unique URL, determined by the declarative definition. Most sublocations consist
of two work areas. The primary work area for navigation and selection, and the secondary work area
which is a collection of related properties and functionality pertaining to the object selected in the
primary work area. The layout of the secondary work area in many cases is controlled by style sheets.
Navigation and information panels become visible when in use and hidden when not.
Navigation panel
Several of the primary work area commands will open a navigation panel for further input.
Several of the right wall commands will open a tool and information panel. This panel will contain
information or ask for input. Most of these panels will extend over the UI when they open, covering a
portion of the display. Once you close the panel, it will disappear. In the special cases where the panel
relies on the information in the main UI — markup, for example — it will push the UI over so it does not
cover the UI.
The work area header is displayed immediately below the work area toolbar.
This header is used for summary information such as the number of results a search has found. It also
displays the breadcrumb, which is used as an additional means of refining what is displayed.
The primary work area contains the rendered main content for the sublocation. Your selection in this
area determines the content of the secondary work area.
Commands in the navigation command set apply to content in the primary and secondary work areas or
apply filters to the content in these work areas.
The secondary work area typically shows the details of the content selected in the primary work area.
The content of this area is typically controlled by style sheets.
When multiple secondary work areas exist for a sublocation, they are shown as secondary navigation
tabs in the graphic user interface. This is typically a list of pages defined in a style sheet.
Commands in the right wall toolbar operate on the content in the primary or secondary work areas and
require user input.
• When there are no contributions, the right wall command bar is hidden.
• ActiveWorkspaceHosting.URL
Specifies the URL used by Teamcenter to communicate with Active Workspace for hosted operations
such as search and open item.
This preference takes precedence over the ActiveWorkspaceHosting.NX.URL,
ActiveWorkspaceHosting.RAC.URL, ActiveWorkspaceHosting.Office.URL and
ActiveWorkspaceHosting.WorkflowEmail.URL preferences.
• ActiveWorkspaceHosting.NX.URL
Specifies the URL used by Teamcenter Integration for NX to communicate with Active Workspace for
hosted operations.
• ActiveWorkspaceHosting.RAC.URL
Specifies the URL used by the rich client to communicate with Active Workspace for hosted
operations.
• ActiveWorkspaceHosting.WorkflowEmail.URL
Specifies the URL used by workflow to communicate with Active Workspace for email links.
• AWC_NX_AddComponentSupportedTypes
Enables addition of the specified object types as components in NX when selected in Active
Workspace. Only Item, ItemRevision, and dataset types and subtypes are supported.
• AWC_NX_OpenSupportedTypes
Enables opening the specified object types in NX when selected in Active Workspace. Only Item,
ItemRevision, and dataset types and subtypes are supported.
• AWC_OC_OpenSupportedTypes
Enables opening the specified object types in Teamcenter Client for Microsoft Office when selected in
Active Workspace. Only MSWord, MSWordX, MSWordTemplateX, MSWordTemplate, MSExcel,
MSExcelX, MSExcelTemplateX, MSExcelTemplate, Outlook, MSPowerPointX, MSPowerPoint,
MSPowerPointTemplate, and MSPowerPointTemplateX types and subtypes are supported.
• AWC_RAC_OpenSupportedTypes
Enables opening the specified object types in the rich client when selected in Active Workspace. Only
Item, ItemRevision, Folder, and dataset types and subtypes are supported.
• AWC_VIS_OpenSupportedTypes
Enables opening the specified object types in Teamcenter lifecycle visualization when selected in
Active Workspace. Only Dataset (DirectModel and UGMaster), Item, ItemRevision, BomLine,
BomView, and BomViewRevision, types and subtypes are supported.
Note:
These types are supported only if they have product structure child objects and/or
IMAN_Rendering relations.
• TC_Use_ActiveWorkspace_Create
Specifies whether to display the Active Workspace creation tab instead of the host environment (rich
client or Office client) creation when you click New in the host environment. Set the preference to
True.
• TC_Use_ActiveWorkspace_Inbox
Specifies whether to display the Active Workspace inbox instead of the host environment (rich client
or Office client) inbox when you click My Worklist in the host environment. Set the preference to
True.
• TC_Use_ActiveWorkspace_Summary
Specifies whether to display the Active Workspace summary when viewing the summary for objects
instead of the host environment (rich client or Office client). Set the preference to True.
These Active Workspace hosting preferences are detailed in Teamcenter documentation such as
Environment Variables Reference, Teamcenter Basics, and Teamcenter Integration for NX.
Note:
By default, Active Workspace hosting preferences have a protection scope of Site. Enabling these
preferences enables Active Workspace functionality for all users of the client.
To provide flexibility for access to Active Workspace functionality in other clients, Siemens Digital
Industries Software recommends changing the preference definition to have Group, Role, or User
protection scope, as described in the Environment Variables Reference.