Configuration
Configuration
4.3
Configuration and
Extensibility
AW008 - 4.3
Contents
Architecture concepts
Learning Active Workspace architecture ─────────────────────── 1-1
Learn declarative contributions ──────────────────────────── 1-2
Declarative action: navigate ────────────────────────────────── 1-2
Declarative conditions ───────────────────────────────────── 1-4
Declarative panel walk-through ──────────────────────────── 1-9
What are intermediary objects? ──────────────────────────── 1-12
Using visual indicators to quickly recognize a property ───────────── 1-14
Using a sublocation to display a custom page ─────────────────── 1-15
Declarative user interface ─────────────────────────────── 1-17
Declarative UI introduction ────────────────────────────────── 1-17
Declarative kit and module ────────────────────────────────── 1-21
Declarative control of sublocation visibility ──────────────────────── 1-24
Declarative view ──────────────────────────────────────── 1-26
Declarative view model ──────────────────────────────────── 1-29
Declarative messages ───────────────────────────────────── 1-32
Learn the declarative command architecture ─────────────────── 1-34
Declarative command object - commands ───────────────────────── 1-34
Controlling command visibility ─────────────────────────────── 1-35
Declarative command object - commandHandlers ──────────────────── 1-38
Declarative command object - commandPlacements ────────────────── 1-40
Declarative command object - activeWhen ──────────────────────── 1-44
Declarative command object - visibleWhen ──────────────────────── 1-46
Declarative command object - actions ─────────────────────────── 1-48
Data providers ────────────────────────────────────── 1-49
Learn about data providers ────────────────────────────────── 1-49
Use an existing server data provider ──────────────────────────── 1-49
Creating a custom server data provider ────────────────────────── 1-54
Learn client-side data providers ─────────────────────────────── 1-54
Learn the Active Workspace user interface ──────────────────── 1-61
Basic interface ───────────────────────────────────────── 1-61
Navigation toolbar ─────────────────────────────────────── 1-62
Location ───────────────────────────────────────────── 1-62
Active Workspace back button ──────────────────────────────── 1-63
Session context control ──────────────────────────────────── 1-64
Global search ────────────────────────────────────────── 1-65
Sublocations and primary navigation tabs ───────────────────────── 1-65
Sublocation content ────────────────────────────────────── 1-66
Work area header ─────────────────────────────────────── 1-68
Primary work area ─────────────────────────────────────── 1-68
Navigation command bar ─────────────────────────────────── 1-69
Secondary work area ───────────────────────────────────── 1-70
Secondary navigation tabs ────────────────────────────────── 1-71
Administration
Utilities ──────────────────────────────────────────── 5-1
Command-line utilities ───────────────────────────────────── 5-1
csv2tcxml.perl utility ────────────────────────────────────── 5-9
Active Admin ─────────────────────────────────────── 5-40
The active admin workspace ───────────────────────────────── 5-40
Business Modeler IDE constants ─────────────────────────── 5-41
Global constants ──────────────────────────────────────── 5-41
Business object constants ────────────────────────────────── 5-42
Property constants ─────────────────────────────────────── 5-45
Configuring the Audit Logs page ─────────────────────────── 5-55
Audit Logs page configuration tasks ──────────────────────────── 5-55
Activate the Audit Log page ───────────────────────────────── 5-57
Customize audit logs field display ────────────────────────────── 5-57
Using audit logs ──────────────────────────────────────── 5-59
Customize the audit log display ─────────────────────────────── 5-60
Preferences ──────────────────────────────────────── 5-63
Why do I need preferences? ───────────────────────────────── 5-63
How do preferences work? ────────────────────────────────── 5-63
An example of preference hierarchy ──────────────────────────── 5-67
What are environment preferences? ──────────────────────────── 5-71
Working with preferences in Active Workspace ────────────────────── 5-71
Working with non-standard object types ───────────────────────── 5-76
Controlling notification timeout ─────────────────────────────── 5-77
Defining properties that display in object cells ────────────────────── 5-77
View DWG and CGM class images in the Classification tab ─────────────── 6-54
Configure a visual indicator for classification on an object ─────────────── 6-55
Upgrade classification ───────────────────────────────────── 6-56
Configuring classification standard taxonomy ────────────────────── 6-57
Administering classification libraries ─────────────────────────── 6-134
Setting up classification artificial intelligence ────────────────────── 6-143
Classification preferences and utilities ────────────────────────── 6-147
Troubleshooting the installation and configuration ────────────────── 6-162
Digital signature configuration ─────────────────────────── 6-163
Digital signature configuration tasks ─────────────────────────── 6-163
Enable digital signature ─────────────────────────────────── 6-164
Geography access configuration ────────────────────────── 6-167
Overview of geography access ─────────────────────────────── 6-167
Configure geography access ──────────────────────────────── 6-167
Configure confidentiality agreement ─────────────────────────── 6-169
License attachment configuration ───────────────────────── 6-171
Overview of license attachment ────────────────────────────── 6-171
Adding the License List panel to custom XRT pages ────────────────── 6-172
Attaching licenses ────────────────────────────────────── 6-173
Localization configuration ────────────────────────────── 6-176
Localization configuration tasks ────────────────────────────── 6-176
Configuring Active Workspace for other locales ───────────────────── 6-177
Locale support by Visualization Server Manager ──────────────────── 6-178
SLM configuration ─────────────────────────────────── 6-179
SLM configuration tasks ─────────────────────────────────── 6-179
Configuring physical structures ────────────────────────────── 6-180
Program Planning configuration ────────────────────────── 6-181
Program Planning configuration overview ──────────────────────── 6-181
Program Planning preconfiguration tasks ──────────────────────── 6-182
Program Planning post-installation configuration tasks ──────────────── 6-184
Configure out-of-the-box Program Planning LOVs ─────────────────── 6-186
Assign colors to the program event LOVs ──────────────────────── 6-187
Define Program Planning security ───────────────────────────── 6-188
Add custom program and project objects ──────────────────────── 6-189
Share Program Planning data between Teamcenter sites ─────────────── 6-191
Program save as behavior default deep copy rules ─────────────────── 6-193
Define STAMs and STVMs ────────────────────────────────── 6-194
Relations configuration ──────────────────────────────── 6-198
Relations configuration tasks ──────────────────────────────── 6-198
Creating new views or updating existing views ───────────────────── 6-200
Example of configuring views: configure relations expansion ──────────── 6-203
Example of configuring views: localize names that appear in the custom Relations Legend
views ───────────────────────────────────────── 6-204
Configuring what views appear in the Relations Legend ─────────────── 6-205
Configuring what user interface style to apply to objects and relations ────── 6-205
Specifying user interface styles such as shapes and colors ────────────── 6-206
Example of configuring user interface styles: configure the style of nodes and edges
────────────────────────────────────────────── 6-207
Specifying what properties are visible in the object properties filter ──────── 6-208
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 Doc 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.
You can use the Navigate action to take the user to a specific page.
The UI Pattern Library on Doc 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 attrbutes 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.
$gt Greater than.
$gte Greater 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 selectes 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 sublcations 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, and then package everything into the WAR file and deploy
it.
Visit the UI Pattern Library in the Active Workspace section of the Doc 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 sublocatoin 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.
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 specfic 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
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.
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
"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
1. Navigation toolbar
3. Location
Navigation toolbar
The navigation toolbar, 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 toobar 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.
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.
You generally change the user interface for Active Workspace using customization methods. However,
there are some simpler configurations that you can perform as an administrator that only involve
changing some configuration files, such as style sheets.
While your end users can use Active Workspace as-is, you may want to emphasize information specific to
your company's processes, such as displaying custom properties on tiles or exposing custom business
object types.
• Configure tables.
• Is a gallery-style viewer element — it has left (1) and right (2) chevrons so your users can cycle
through the available datasets.
• Consists of a collection of individual viewers, each designed to handle specific single-file document or
image formats in the client: Word, PDF, and PNG for example. Although the universal viewer is
capable of rendering single-file JTs, there is another viewer, the 3D viewer, which is normally used for
multiple-file JT assemblies.
• Uses several third-party libraries to perform the rendering for the various file types. Consult the
documentation for those libraries for possible restrictions and limitations.
The following XRT code snippet shows the OOTB Preview section. You can inject this same source into
your custom style sheets to use the universal viewer.
<section titleKey="tc_xrt_Preview">
<inject type="dataset" src="Awp0GalleryViewer" module="js/aw-include.directive"/>
</section>
When the user selects an object, what the universal viewer displays is controlled by the
AWC_defaultViewerConfig.VIEWERCONFIG preference.
• datasetType.viewerName = namedReference
Active Workspace recursively searches the SEARCHORDER values of the preference from top to bottom
(starting with the selected object) to build a list of related datasets. These datasets form the list of
available datasets for the gallery. When each dataset is displayed, the universal viewer searches the
preference values from top to bottom to find the viewer associated with that dataset type.
If the gallery doesn't have any content to display, it shows the icon for the object type.
Example:
If you have a folder selected, and that folder contains an item revision, and that revision has a GIF
dataset as reference, then the values of the preference that Active Workspace will use are as
follows (spaces added for readability):
SEARCHORDER.Folder = contents
SEARCHORDER.ItemRevision = ...,IMAN_reference,...
GIF.Awp0ImageViewer = GIF_Reference
The final result will be the Awp0ImageViewer showing the *.gif file contained in the dataset.
Tip:
What is actually selected by the user might be an intermediary object.
You can view and edit Microsoft office files if Teamcenter Office Online is installed.
If you create a custom named reference, you will need to create a new value in the
AWC_defaultViewerConfig.VIEWERCONFIG preference with your custom named reference. For
example, if you created a custom PDF dataset with a C9PDF_Reference, you would also need to create
the following value (copied from PDF and modified) to get the viewer to be able to display your files:
PDF.Awp0PDFViewer=C9PDF_Reference
You might want to use the universal viewer (displayed in the Overview tab) for your assemblies instead
of the default 3D viewer (displayed in the 3D tab) if your assemblies contain:
• Monolithic JT data.
• No JT data.
• Other types of data, like Word documents, PDF files, and so on.
To view assembly data in the Active Workspace client, you must have the Active Content Structure
feature installed.
In addition, to use the universal viewer as the default for assembly data, there are two things you need
to change:
• Modify a preference
The preference that controls which objects use which viewer is
AWC_defaultViewerConfig.VIEWERCONFIG.
• You must add your business object type and relations on a new SEARCHORDER line.
• The relation that the design element object has to its target object is named
awb0UnderlyingObject.
Example:
Adding the following line to the preference tells Active Workspace 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, then Active Workspace will process the new Awb0DesignElement line,
finding the underlying DocumentRevisions, and then because of the OOTB line:
SEARCHORDER.DocumentRevision=TC_Attaches
checks the DocumentRevisions for anything attached with the TC_Attaches relation.
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 Teamcenter preference AWV0ViewerRenderOption
Modify a command
To help make your users' interface more streamlined and efficient, you can change various features of
commands.
Icon
Command icons can be changed using 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 using the Placements section of the Command Builder.
Visibility
When a command appears is part of its commandHandlers definition.
Command visibility can be changed using the Handlers section of the Command Builder.
Note:
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 using the Handlers section and the Actions page of the
Command Builder.
You can use the Active Workspace home page to provide convenient tiles for your users' most commonly
used:
• pages
• objects
• saved searches
Each user will see their home page display the same content regardless of their login device, 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. This may cause the user to see duplicate tiles it the same tile is defined more than one
of their collections. To avoid duplicate tiles, Siemens Digital Industries Software recommends that you
plan your tile collections based on desired visibility. For example, if everyone needs to see a tile, place it
in the Site collection. If you only want certain groups to see a tile, place it in those group collections,
similar with roles, workspaces, and projects. You may also hide tiles in certain collections, overriding a
tile shown in another collection.
The user may have no more than one tile collection of each scope. All users get the tile from the site
collection, then the appropriate group, role, workspace, and project collections are added based on their
session context, and finally tiles in their personal user collection are added. If the user changes their
session context, the home page will be 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 a template object, which together provide the behavior of the tile.
• 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 in the home page. They contain any information that is specific
to the instance, like 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, content names for live tiles, and its icon.
• 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 in 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
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), the this is where you can provide your
parameters to that command.
Example:
If the tile template's command is to show a create object panel to the user, then you can specify
what types of objects appear on the list. Any types specified and their subtypes will appear.
cmdArg=Item
cmdArg=Folder&Document
cmdArg=Text&MSWordx&MSExcel
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 collections
are displayed. If even one active collection hides a tile, it is hidden regardless of how many other
collections contain that tile.
Example:
In this example, the user's session context is as follows:
• user = ed
• project = none
• group = dba
• role = DBA
• workspace = Active Admin
Design Intent:
If the user has only a single workspace available to them based on their current group and role,
the UI will not display the Workspace option in the context control panel since they have no
choice. However, every user will always be part of a workspace, even if they don't know about it.
Example:
The user ed logs in, and makes a change to their home page. Active Workspace creates a
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 of one of the following types:
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 which tile group in which this tile appear. There are a few groups provided, but you can
type in your own.
• Main
• Quick Links
• Favorites
The tiles will be ordered within the group according to this integer. Leave a gap between numbers to
make it easier to insert and rearrange tiles later on.
The lowest order number within each group will determine 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 on the tile template.
small 0 1x1
tall 1 1x2
wide 2 2x1
large 3 2x2
awp0Removed — Hidden
Setting this Boolean property to true means that the tile will not appear in the user's home page. You
would do this to override a tile that is included in a collection from another scope. For example, if the
workspace-scoped tile collection contains a certain tile, but the user's current group-scoped tile
collection contained that same tile, but hidden, then the user will not see that tile. If they change to a
different group, and that group's tile collection does not hide the tile, it will appear again.
awp0Protected — Protected
Setting this Boolean property to true means that the tile can not be unpinned through the UI.
Before you can create a home page tile, you must have a tile template configured the way you want.
Once you have the tile template you want, you can use it to create a new tile.
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 go to the home folder
(Awp0ShowHomeFolder), and then run the show create object command
(Awp0ShowCreateObject):
awp0actionType=3
awp0Action=Awp0ShowHomeFolder;cmdId=Awp0ShowCreateObject;
The types of objects that are available to be created are defined on the tile.
A tile's theme index controls which color scheme it uses. They are categorized by their function.
0 Admin locations.
1 Pinned objects.
2 Locations.
4 Saved searches.
small 0 1x1
tall 1 1x2
wide 2 2x1
large 3 2x2
If you want 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 relation. (Awp0GateWayTileRel)
Active Architect
You can install Active Architect using either Deployment Center or Teamcenter Environment Manager
(TEM). The following need to be installed:
You should 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. Your changes should go through user
acceptance testing before they are implemented into the production environment.
Gateway The Active Workspace Gateway consists of multiple services and microservices that
combine to provide the underlying architecture which 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 these various pages to visually modify the Active Workspace UI. Included in
Active Architect are:
• 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, even the handlers that determine what the command does.
As you make changes you can see your changes live in the client.
• Panel Builder
Use this location to dynamically modify declarative command panel definitions in
Active Workspace.
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 by drag-and-drop
operation.
• Action Builder
Use this location to dynamically modify declarative command panel definitions in
Active Workspace.
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 by drag-and-drop
operation.
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 the 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 to content you don't have write access to is stored as a delta.
• Log on as an administrative user, such as a member of the dba group, for example.
host:port/?dev
Commands
• Localized title
• Command type
• Icon
• Placements
• Handlers
Toolbars
Actions
Panel Builder
You can use the 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 to content you don't have write access to is stored as a delta.
• Log on as an administrative user, such as a member of the dba group, for example.
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 work with the drag-and-drop Elements.
Canvas
Actions
Editor
Preview
Action Builder
Use the Action Builder to view and modify actions for declarative commands and panels.
The 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
Action 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 the 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.
Of course, if the command doesn't use a panel, then this new panel is not used.
Example:
For example, to open the command panel for the Add command, use Awp0ShowCreateObject
for the command ID.
When using the Command Builder you can select Open in Panel Builder from the Open command
group.
This sends the command panel view id to the 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.
Extended Tool Tip
The tool tips for commands in Active Workspace are full declarative pages, complete with a view and
view model. The name of the view file is defined here. There is no requirement on the name of the
view other than it must be unique. It is common practice to use the command ID with a postfix.
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 Doc 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 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.
Creating connections
1. Toggle the Enable connection setting to create flow lines between actions.
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.
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:
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 the dynamic compound property syntax within the name 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.
<property name="GRMS2P(IMAN_specification,ItemRevision).current_name"
titleKey="tc_xrt_ds_name"
/>
If the titleKey string is not found in the TextServer definitions, it will be presented as-is.
Note:
Use titleKey only when traversing to other objects. Do not use titleKey on regular properties.
• 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).dataset_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:
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 Active Workspace 4.3 UI Pattern Library on Doc 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. They do not have the flexibility nor the configurability of
a true table — like column filtering, column reordering, hiding columns, and so on — and since they are
a property, creating a new one requires schema modifications to your database.
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 which allows each user, or group, and so on to have their own personalized layout
of a table. It is possible that several tables could share a column configuration, and the changes made to
one table would be seen 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.
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 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.
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.
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.
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.
<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 column layout of object set tables is defined and controlled using column configuration. However,
you can optionally define their initial layout using the property element.
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"
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:
Table 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:
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. This is how DCP is normally used to
find properties.
<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
object set.
Supported syntax
You can use the following DCP syntax types in your source attribute, including multiple-level traversal:
Full example
In this example 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 the Business Modeler IDE 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:
</tableProperty>
</section>
</page>
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 normal XRTs.
• Layout of Active Workspace XRTs in landscape mode is wide compared to the rich client and thin 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
and thin 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
■ checkbox
■ toggle
■ radioButton
Note:
Embedded task actions replace the Perform Task button in the Task Overview. For customers
with custom stylesheets 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.
<content>
When writing XRT files for Active Workspace, you have access to a <content> tag. This wrapper tag
allows you to use the visibleWhen attribute.
<content visibleWhen=[condition]>
...
</content>
These content tags can be nested to provide flexibility and control over the final displayed information.
<page>
Examples of visibleWhen are shown in Teamcenter's <page> tag XML element documentation.
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.
Name-value properties
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.
• Use the name attribute to specify the name of your name-value property.
In this example myNVProp.
For example:
<section title=...>
<nameValueProperty
name="myNVProp">
<property name="fnd0Name"/>
<property name="fnd0Value"/
>
</nameValueProperty>
</section>
Note:
You must use the fnd0Name and fnd0Value properties.
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 stylesheet for the business object. For example, locate
the Awp0ItemCreate stylesheet for the ItemRevision business object.
<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.
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 collection.
2. Update the search indexer by merging the Teamcenter schema with the Solr schema and
reindexing.
3. Add the custom business object type to the AWC_DefaultCreateTypes preference. This preference
defines the object types to display when creating a new object in the Active Workspace client. The
list of available types is displayed in the Create panel. All subtypes associated with the object types
defined in the preference are also displayed in the list of available types.
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.
• 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.
• 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 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.
You can configure the following aspects of Active Workspace's behavior using the developer
environment.
• Add a command.
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, for example.
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 the UI builder tools, like Command builder, Panel Builder, and so
on. The changes are stored in the file repository separately from the main site. When you use the
development mode of Active Workspace, those changes are overlayed onto the baseline site which
is stored in the file repository.
Active Workspace Client
The STAGE directory, which is used for local development and builds.
Teamcenter GraphQL
An experimental assistant for Active Workspace which helps consolidate and locate 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?
The user connects to the gateway service using port 3000. They experience the Active Workspace site as
it exists on the file repository.
• The gateway retrieves the Active Workspace full site and configuration 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?
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 administrator privileges (by being a member of the dba group for example) 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.
Note:
Using the ?dev query string in the URL takes precedence over the siteDir setting when retrieving
configuration data.
What is happening?
The user connects to the gateway service using port 3000. They experience the Active Workspace site as
it exists on the local stage directory. This allows developers to make changes without impacting the full
site served from the file repository service.
Setup
• You must add the siteDir setting in the config.json file found in the AW ROOT/microservices/gateway-
nnnn directory.
• After changing the gateway's config.json file, you must restart the gateway for the changes to take
effect.
Use
• The gateway requests the Active Workspace site and configuration from the siteDir instead of the file
repository.
• Use this setup when working with modules. For example, creating a new theme, location, type icon
registry, and so on.
Note:
Using the ?dev query string in the URL takes precedence over the siteDir setting when retrieving
configuration data.
What is happening?
You can create and edit your declarative modules in this 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, without preparing
a special runtime environment.
• Use a JavaScript project editor to work in your environment. Our examples use Microsoft's VSCode.
Use
Note:
The changes you make will not be visible until you refresh or build the application.
What is happening?
After any 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
export the UI builder changes into your custom module.
What is happening?
You can build your declarative modules along with the local source 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 file repository services as the new full site. This makes it your new
baseline for this environment. This is similar to a full commit for all your customizations.
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 publish script to contact the gateway service and push the Active
Workspace application from the local site to the file repository service.
Tip:
As a convenience you can use the awbuild script, which performs the following actions for you:
1. initenv
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. 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 Express, if you configure your gateway to view your local site.
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 Doc
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 main kit.json file and all of the workspace
definitions. Your custom modules must be registered in this file for the build script to
find 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 Doc 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.
This script performs a clean build and minification of the Active Workspace application from STAGE/src
and STAGE/repo into STAGE/out/site.
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.
Creating your own custom declarative definitions for Active Workspace requires a container so the build
scripts can locate your files. This container is a kit.json file. If your kit file is located anywhere under the
stage\src directory, it will be found by the build scripts. Each kit file contains a list of modules, solution
definitions, and other dependency information. The system will automatically find any registered
modules under the stage\src directory.
Typically, you would create one kit that contains several modules, each of which contains your
declarative definitions. Active Workspace ships with a single kit already in place, the solution kit, located
in the stage\src\solution directory.
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 run
generateModule. 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 will create a
directory for each of your custom modules in the stage\src directory and create the various module
files.
Note:
If you do not explicitly create your own module, mysamplemodule will be created for you.
• type
Use the declarative framework to assign an icon to an object type. The utility will create
aliasRegistry.json in your module directory. Using 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 will create ui-<themeName>.scss in the module's
src directory. This new SCSS file will be configured with your color choice, but can be modified if
desired.
• command
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
states.json file in the module directory.
• subLocation
Create a new sublocation. The utility creates a sublocation definition in states.json file in the module
directory. Sublocations must be assigned to an existing location.
• workspace
Create the server-side definitions for 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.
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.
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.
{
"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 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": {
"license_list": {
"$ne": ""
}
}
}
}
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 file 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"
}
}
}
}
The conditions can test using many operators in an AND configuration. If any condition is false, the
indicator will not appear.
$eq Equal.
$ne Not equal.
$lt Less than.
$lte Less than or equal to.
$gt Greater than.
$gte Greater than or equal to.
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.
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.
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 Doc 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.
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 login language.
Example:
Add _de for a German language file.
mysamplemoduleMessages_de.json
Development utilities
Use the generateExtendedTooltip script to assign an extended tooltip view name to your commands in
bulk.
Normally, you might define your custom commands in the Command Builder, but if you have
generated them using the command-line, or created a new theme which includes a command, then you
would have to manually add an extended tooltip definition if you wanted one. For single or a few
commands this is feasible, however if you want to update the name of the extended tooltip view on
many commands at the same time, you want to use this script.
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 within your STAGE\src\**
\commandsViewModel.json files. To do this, use the following syntax:
node node_modules/afx/build/js/generateExtendedTooltip.js
It will prompt you for the view name, and then modify the command definitions of all commands
defined in all your custom modules.
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.
Use the following scripts to help you identify and reduce the amount of AngularJS content in your
custom JS files. Although still not recommended, the use of JS glue-code was sometimes necessary for
your customization.
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
angular 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/**/*
Command-line utilities
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 collection.
awindexerutil
Refreshes indexed objects if you make changes to them and you want the synchronization flow to
refresh the index for those objects. The awindexerutil utility marks those objects to be picked up during
the next synchronization flow batch. This allows you to update the index without the downtime of a full
index flow.
You can refresh your index for only the delta of changes since the last completed synchronization. You
can index changes for types and properties that have been added, modified, or removed, by performing
a delta update when you remerge Solr and Teamcenter schemas and update the index.
Run the utility from the TC_ROOT\bin directory (TC_BIN if it's set).
SYNTAX
ARGUMENTS
-u
Specifies the user ID. The user needs administration privileges.
Note:
If Security Services single sign-on (SSO) is enabled for your server, the user and password
arguments are authenticated externally through SSO rather than 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.
-g
Specifies the group associated with the user.
-refresh
Starts the synchronization flow according to the batch size.
-delta
Updates the index for the delta of changes to object types and properties since the last completed
synchronization. Be sure to run -delta -dryrun to evaluate the changes before running the -delta
index update.
Use this approach to remerge Solr and Teamcenter schemas and to update the index.
-dryrun
Use with -delta to compare the changes in object types and properties for delta reindexing. No
indexing is performed. The differences are output to the command window and a log file. The .log
file path is returned after the operation is complete.
-daterange
Use with -delta or -delta -dryrun to set a date range for object types and properties that can be
indexed in the updated schema. To set the date range, use the following year-month-day form:
The time (HH:MM:SS) is optional. You can specify multiple ranges in a comma-separated list. If the
specified date range contains spaces, enclose the entire specification in quotation marks.
-classification
Used together with the -delta argument, evaluates the schema files and marks the changes in
classification data for indexing in the next scheduled indexing synchronization run. Run the utility
with the -classification -delta -dryrun arguments to receive a list of changes that will be marked for
indexing when the awindexerutil is run.
-h
Displays help for this utility.
EXAMPLES
• Start the dry run comparison of the delta of indexing changes. All instances of new, modified, and
deleted types and properties are identified. For newly indexed types, only those instances that were
changed during the specified date range (2012/12/12 – 2016/12/31) are included. Only a report is
returned. No indexing changes are made.
-daterange=2012/12/12-2016/12/31
• Start reindexing the delta of changes. Updates all new, modified, and deleted types and properties.
• Start reindexing the delta of changes. Updates all new, modified, and deleted types and properties.
For types that are newly added, only those objects last modified in the specified date range are
indexed.
– 2016/12/31 14:00:00”
bomindex_admin
SYNTAX
ARGUMENTS
-u
Specifies the user ID. This is a user with administration privileges.
Note:
If Security Services single sign-on (SSO) is enabled for your server, the user and password
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.
-pf
Specifies the password file that holds the cleartext or encrypted password. For enhanced
security, use a password file instead of the password. If the -pf argument is not used, the system
uses the given password.
-p
Specifies the password.
delete Finds the BOMIndexAdminData objects in the input file and marks them as
deleted.
list Creates the input file for update or delete operations for existing
BOMIndexAdminData business objects. The generated file also reports
BOMIndexAdminData properties such as window-uid.
upgrade Upgrades the definition of BOM index tables when the property set is modified.
-inputfile
Specifies the location of a file containing the list of structure objects to index. The input file line
format is as follows:
• effectivity-unit
If you have multiple effectivity units, their numbers must be comma-separated. Also, you must
repeat the effectivity end item query string for each effectivity unit, for example:
| 5,10,12 | item_id=HDD-0527,item_id=HDD-0527,item_id=HDD-0527 |
• variant-rules
The variant rules (also known as saved variant rules) are comma-delimited, and follow this
format:
SVR-name:owning-item-query-string:owning-itemrevision-ID
• subscribers
(Optional) You may specify one of the following:
• MMV
Specifies that this product configuration is indexed for Massive Model Visualization (MMV).
MMV is a visualization technology that uses Visibility Guided Rendering (VGR) to increase
performance and scalability for the viewing of extremely large 3D models, such as cars,
airplanes, and ships. Use of MMV requires deployment of the Visualization Data Server.
• VDS
Specifies that this product configuration is indexed for viewing using the Visualization Data
Server. This makes the structure available faster in visualization. VDS requires deployment of
the Visualization Data Server.
• closure-rules
(Optional) If a closure rule is applied for a configuration, content in the structure (excluded by the
closure rule) does not appear in where used query results for top-level contexts.
• structure-type
(Optional) The type of structure that the product represents. Specify OCC if the product is the
occurrence type ItemRevision. Specify 4G if the product is a 4GD collaborative design type. OCC
is the default value if not specified.
• owning-user
(Optional) If Visualization for MMV is enabled for the product, specify the user who owns the
MMV delta collection dataset.
• MMVIdxAccessControllers
(Optional) Specify the users that control access to MMV index files.
Each VDS site can be configured to run as a different user. BOMIndexAdminData table entries are
returned according to the permission specified for the configured VDS user. This helps you implement
export compliance using these attributes.
Example:
Site owners configured for each VDS site:
• USA is VDSadmin
• Mexico is mex_VDSadmin
• Canada is can_VDSadmin
• China is chi_VDSadmin
MMV
Revision Structure Owning MMV Access
BIAD Product Rule Type User Users
Biad1 Ship Latest 4GD VDSadmin mex_VDSadmin
Working
MMV
Revision Structure Owning MMV Access
BIAD Product Rule Type User Users
can_VDSadmin
Biad2 Truck Latest BVR VDSadmin mex_VDSadmin
Working
can_VDSadmin
chi_VDSadmin
Biad3 Car Latest BVR VDSadmin chi_VDSadmin
Working
EXAMPLE
OVERRIDING EFFECTIVITY
When you want to specify override effectivity, do not specify it in the input file containing the product
configurations to index. The override effectivity in the input file is ignored during index generation,
causing a discrepancy between the indexed BOM and the BOM in use.
To set override effectivity during index generation, add the effectivity data to a Revision Rule.
Z_ACE_DateOverride_Rule23_10Jan2020
The corresponding input file entry for bomindex_admin would have this corresponding effectivity
override entry:
item_id=ACE_KK_EC01 | A | Z_ACE_DateOverride_Rule23_10Jan2020 | | | | | |
csv2tcxml.perl utility
Note:
The TC_DATA\csv2tcxml_perl\csv2tcxml.perl utility described here is deprecated and support will
be removed in a future release.
The replacement utility is TC_DATA\csv2tcxml\csv2tcxml.perl (named the same, but stored in a
different directory). This replacement utility is recommended for new data migrations. Refer to the
CSV2TCXML Converter Guide in the TC_DATA\csv2tcxml directory for instructions on its use.
See Choosing a CSV to TC XML converter version in Teamcenter help.
Converts a file formatted similar to a CSV file into a TC XML file that can be imported into a Teamcenter
site. You use this utility to migrate data from a legacy system into Teamcenter using the bulk load
function of the tcxml_import utility. For more information, see Teamcenter help.
Note:
The csv2tcxml_config.txt file contains default values for many of the arguments. You can override
any of the variable values in this file temporarily by adding them into the command line
arguments when you type the command. Use the format argument-name=argument-value.
Syntax
Arguments
split
Indicates that the input file is processed as a set of subfiles. The converter processes the number of
lines indicated by the split-file-integer argument as a subfile. The next set of lines are then
processed until it has processed all lines in the indicated file. This allows more efficient use of
memory for very large files and can prevent memory limit errors.
file-name
Defines the name of the TC XML output file that you use to import the legacy data into the target
Teamcenter site. This argument is required unless you are generating reports.
reports
Generates the HTML report from the log files in the indicated directory. This report shows summary
information, breakup of the objects created, performance of the conversion with time taken for
each step, and the number of errors and warnings the converter generated. It also includes a link to
the log file.
input-directory
Indicates the directory containing the log files used to generate the HTML report.
split-file-integer
Indicates the number of lines to process as a subfile when you specify the split argument. If you do
not specify a split value, the converter uses 100,000 as the default value.
Examples
• To read the input CSV file and generate a puid-based TC XML file for items:
• To read the input CSV file and generate a puid-based TC XML file for datasets that does not contain
item or revision information in the file:
• To read the input CSV file and generate a puid-based TC XML file for datasets that does not contain
BOM or GRM information in the file:
• To import a custom form that is attached to an item revision, in csv2tcxml_mapping.txt add the
following line file to the #CREATE_OBJECT_COLUMNS section and replace CostDataForm with the
custom form type name.
CustomFormName|CostDataForm:object_name<-IMAN_reference<-ItemRevision
In the .csv file, add the following column name and provide a value in each row to create the custom
form.
!Item:item_id|ItemRevision:item_revision_id|CustomFormName
100223|A|cost-frm-1
100778|A|cost-frm-2
• To process multiple imports for an assembly, include the occurrence ID (occ_id) property. A unique
occ-id column must be provided if the BOM data is updated multiple times as shown in the following
example:
!parent_item|parent_rev|child_item|child_rev|occ_id
car|A|wheel|A|front-left
car|A|wheel|A|front-right
car|A|wheel|A|rear-left
car|A|wheel|A|rear-right
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. -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.
-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.
Typically infodba or another 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 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
generate_admin_data_report
Generates a report showing the specified administration data for the site where you run the utility or for
an export package. The export package can be from a remote site.
The report contains HTML pages for the administration data objects, showing their properties with
hyperlinks to referenced objects. If an object is referenced by other objects, its HTML page contains a
where-used table that indicates the categories and objects that have references to the current object.
The report has a summary showing all the administration data types included in the report and the
instances of each element present within the category. The report also has a glossary page with
descriptions of the administration data categories and the elements available in each of the categories.
SYNTAX
ARGUMENTS
-u
Specifies the user ID. The user must have administrative privileges.
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 user's password.
For more information about managing password files, see Utilities Reference in Teamcenter help.
Tip:
Use the -listTypes argument to get a list of available administration data types.
If the report contains multiple data types, it includes a where used table showing where each object
is referenced.
-inputPackage
Specifies the full path, including the file name, of the export administration data package from the
site for which the report is generated. If you do not specify this argument, the utility generates a
report for the local site.
-outputDir=
Specifies the path to directory where you want the report saved. You must specify this argument.
-listTypes
Displays a list of the available administration data types that you can include in the report.
-h
Displays help for this utility.
ENVIRONMENT
This is a Java utility that, by default, has the maximum Java heap size set to 1024M. For reports that
contain a large number of objects, you may need to increase maximum Java heap size to avoid out-of-
memory errors or poor performance. If possible, set the maximum heap to at least to 4096M for large
reports. You can set this value using the BMIDE_SCRIPT_ARGS environment variable, for example:
set BMIDE_SCRIPT_ARGS=-Xmx4096M
Note:
Java standards require that no more than 25 percent of total RAM be allocated to virtual memory
(VM). If the amount allocated to the Java VM exceeds this percentage, degradation of
performance can occur.
FILES
EXAMPLES
• Generate a list of the administration data types that you can export:
• Generate a report containing the preferences and their values at the local site:
• Generate a report containing the Access Manager and Organization administration data from an
export package of a remote site:
import_uiconfig
SYNTAX
ARGUMENTS
-u
Specifies the user ID.
Typically infodba or another 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 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
req_word_html_converter
As an administrator, you can selectively convert requirement content in HTML format to Microsoft Word
format (or the reverse, depending on the option selected). You can perform a selective conversion by
providing a criteria file or a comma separated file containing fullText UIDs or directory containing
multiple such Fulltext UID files. In non-permanent selective conversion from rich text to Microsoft Word,
the converted requirements have the necessary named reference attachments as MSWordXPart;
however, the content type remains rich text. Similarly, in non-permanent conversions from Micorsoft
Word to rich text, the converted requirements have the named references attachments as Arm0HTML
and Arm0HTMLIMG, but the content type is still rich text.
Note:
Before you run this utility, ensure that the Active Workspace Requirements Management feature is
installed. Several files are created in the transient volume folder when you run the utility:
• The utility performs conversion for the following objects only: SpecElementRevision,
SpecElement, or SpecificationRevision.
SYNTAX
ARGUMENTS
-u
Specifies the user ID to be used for the upgrade.
-g
Specifies the group associated with the user.
-failedObjects
(Optional) Specifies the full path to the failed_IDs.txt file that reports the specification element
subtypes that were not converted.
-path
Specifies the full path to the (.Net)-HtmlConverter01.exe utility.
-dumpLogs
(Optional) Dumps a detailed debug log with more information about the point in the code the utility
is failing or which full-text dataset is causing the error.
-forceUpdate
(Optional) Forces the update and repair of all requirements in database even if they were previously
converted.
-h
Displays help for this utility.
-htmlToWord
Converts requirements from HTML format to Microsoft Word.
-wordToHtml
Converts requirements from Microsoft Word format to HTML.
-processObjectList
Specifies the full path of the text file containing FullText UIDs.
-in
Specifies a selective conversion of an entire requirement specification structure to html. The input is
a criteria file that defines this structure.
KEYWORD_SEPARATOR=KWS
KEY_VALUE_SEPARATOR=KVS
RULE_SEPARATOR=RS
keys KWS key1=value1 KVS keyN=valueN RS rev_rule KWS revision-rule RS topline_rev KWS
topline rev
• Segment 1 (Required)
Consists of multi-field key-value (MFK) pairs. Based on the MFK, requirement revisions are
retrieved, and then further configuration is applied based on Segment 2 and Segment 3.
Syntax
keys KWS key1=value1 KVS key2=value2 KVS keyN=valueN
Example
keys : item_id=REQ-000002 , object_type=Requirement
• Segment 3 (Optional)
Defines the revision of the item retrieved on the basis of the MFK pairs defined in Segment 1.
You can use this segment to determine the structure of interest. If you do not define this
segment, then the latest revision is considered for configuring structure. If this segment is
defined then you must define Segment 2 also.
For example, if the MFK pairs in Segment 1 return a particular item such as
item_id=REQ-000002, then there can be different structures for different revisions of this
item. Revision A as a top line might contain 6 children items; revision B might contain 12
children items.
Syntax
topline_rev KWS topline_revision
Example
topline_rev : A
KEY_VALUE_SEPARATOR=,
RULE_SEPARATOR=|
keys: item_id=REQ-000001 | rev_rule:Any Status; Working | topline_rev:A
keys: item_id=REQ-000002 , object_type=Requirement | rev_rule:Latest Working
keys: item_id=REQ-000002 , object_type=Requirement | rev_rule:Precise Only
keys: item_id=REQ-000003 keys: item_id=REQ-000003 | rev_rule:Precise Only
• If you include the -wordToHtml switch, converts to HTML format, which is editable in the CK
Editor in the Documentation tab.
• If you include the -htmlToWord switch, converts to Word format, which is not editable in the CK
Editor in the Documentation tab.
-dryRun
Dumps the valid UIDs in validIDs.txt and invalidIDs.txt, and the actual conversion does not occur.
EXAMPLES
runTcFTSIndexer
Indexes Teamcenter data into the Solr search engine. Run this command from the FTS_INDEXER_HOME
directory, for example, TC_ROOT\TcFTSIndexer\bin.
SYNTAX
ARGUMENTS
-debug
Reports a summary of the flow in progress, including connections and the logs associated with
them, to the command window and to the TcFtsIndexer logs in TcFTSIndexer\logs\. Run -debug in a
separate command window.
runTcFTSIndexer -debug
-maxconnections
Sets a new value for maximum tcserver connections to use at any given time, for example:
runTcFtsIndexer -maxconnections=5
-status
Checks the status of the indexer and reports the flows running in the indexer. For example, the
following shows the status for all the flows:
runTcFTSIndexer -status
This argument can also be used with the -task argument. For example, the following command
shows the status of the objdata:index flow:
runTcFTSIndexer -stop
This argument can also be used with the -task argument. For example, the following command
stops the objdata:sync flow with intervals:
Starts the indexer as a Java Remote Method Invocation (RMI) service in a console, for example:
runTcFtsIndexer -service
This argument can also be used with the -task argument to run a flow when starting the service, for
example:
runTcFTSIndexer -shutdown
-task
Runs an indexing task using this format:
-task=type:flow-action
The type of task can be objdata for object data indexing, multisite for multi-site published records,
structure for structured content indexing, or fourgd for 4GD. Flow actions are specific to the type
of task.
-h
Displays the help for this utility.
• objdata:clear
Clear existing indexed data, records, and cached files. This option is most often used prior to running
objdata:index. Specify the numeric code of the option you want to run using the form -
task=objdata:clear n.
3 clears the object data indexing records from the accountability table.
-task=objdata:clear n path_to_uid_file
7 cleans up the scratch table records, where the last saved date precedes the last processed date
of the subscription table.
Example:
runTcFtsIndexer -task=objdata:clear 5 d:\uids\uid.txt
• objdata:errors
Return the errors for indexing failures to a specified directory. The directory must be empty. You can
optionally specify the number of errors to return. The default, if not specified, is 50 errors.
The error directory contains a directory for each UID of the failed object. Each UID directory contains
the following information:
• Properties such as object name and type provide information on the failed objects.
• The TC XML and Solr XML files are generated and saved for debugging.
• Syslog information.
In this example, the first 100 errors are sent to the specified output directory:
• objdata:index
Without clearing the existing index, this flow action performs indexing for the time period specified in
the TC_ROOT\TcFTSIndexer\conf\TcFtsIndexer_objdata.properties file.
For a clean start, first use objdata:clear to clear indexed data and cached files.
• objdata:indexsyncfailures
Use this flow to index synchronization failures that required manual intervention.
• objdata:recover
Recovers failed indexed objects.
If failures are reported during initial indexing, run the recover flow action after initial indexing
completes. Recover failures from the initial index by running objdata:recover repeatedly until there
are no failures reported or the failures are consistent and need to be fixed.
You can choose to fix the errors or leave them for later and proceed with the synchronization flow. If
you leave them, these errors are logged as failures during synchronization. You can return at a later
time to fix them. The recover flow action operates by time slice. The recover flow action processes all
failed objects as one entire set.
• objdata:show
Returns objects that are in a specified indexing state in two text files. Specify the state code and a
directory for the output files using the form -task=objdata:show n uid_file_dir.
The show number to specify the state is 1, 2, or 3:
In this example, the output files contain the objects that failed indexing:
• uid.txt
Contains the UIDs of the objects that match the specified state. Each UID is on one line.
You can synchronize the objects again using objdata:sync uid_file_dir. Specify the directory
containing the uid.txt file, for example:
• uid_prop.txt
Contains UIDs in the output format UID|object_string|object_type, for example:
• objdata:sync
Updates the index with changes to data between the previous run and the current run.
• objdata:test
Verify whether the environment is set up correctly prior to running the indexer.
• multisite:clear
Clear indexed data and cached files for existing multi-site published records.
Use prior to running multisite:index.
• multisite:index
Without clearing the existing indexed multi-site published records, index for the time period specified
in the TC_ROOT\TcFTSIndexer\conf\TcFtsIndexer_multisite.properties file. For example:
runTcFTSIndexer -task:multisite:index
• multisite:indexuids
Index the UIDs for a specific Object Directory Services (ODS) site.
Specify the ODS site name and the directory containing the uid.txt file, for example:
• multisite:indexsyncfailures
Index synchronization failures that required manual intervention.
• multisite:sync
Updates the index with changes to published record data between the previous run and the current
run.
The sync action can take the -interval=seconds argument to repeat the sync action at the specified
interval. For example, to synchronize multi-site published record data every 300 seconds (5 minutes):
• multisite:recover
Recovers failed indexed published record objects.
If some published records fail during indexing, run the recover flow action after multi-site indexing
completes. Recover failures by running multisite:recover repeatedly until there are no failures
reported or the failures are consistent and need to be fixed.
• multisite:test
Verify whether the environment is set up correctly prior to running the multi-site indexer.
• structure:recoverfailures
Changes all product configurations with failed states to the ReadyToIndex state or the
MarkedForDeletion state. For example:
runTcFTSIndexer -task=structure:recoverfailures
• structure:reset product-configuration-UID
Resets the given product configuration UID setting to the ReadyToIndex state or the
MarkedForDeletion state. For example:
• structure:resetall
Downloads the latest transform and schema files, resets all active product configurations to the
ReadyToIndex state, and resets all deleted product configurations back to the MarkedForDeletion
state. For example:
runTcFTSIndexer -task=structure:resetall
• structure:show
Shows a summary of all configured product configurations, for example:
runTcFTSIndexer -task=structure:show
• structure:sync
Queues synchronization and delete actions for all product configurations, for example:
runTcFTSIndexer -task=structure:sync
• structure:syncone product-configuration-UID
Queues synchronization and delete actions for a single product configuration UID, for example:
On a Solaris system, if the product-configuration-UID contains a $ special character, you must enclose
the product-configuration-UID in single quotes. For example:
• structure:test
Verifies that the environment is set up correctly prior to running the indexer, for example:
runTcFTSIndexer -task=structure:test
The 4GD product structure is initially indexed using the bomindex_admin utility.
• fourgd:reset product-configuration-UID
Resets the given 4GD product configuration UID setting to the ReadyToIndex state. For example:
• fourgd:resetall
Downloads the latest transform and schema files, resets all active 4GD product configurations to the
ReadyToIndex state. For example:
runTcFTSIndexer -task=fourgd:resetall
• fourgd:show
Shows a summary of all 4GD configured product configurations, for example:
runTcFTSIndexer -task=fourgd:show
• fourgd:sync
Queues synchronization and delete actions for all 4GD product configurations, for example:
runTcFTSIndexer -task=fourgd:sync
• fourgd:syncone product-configuration-UID
Queues synchronization and delete actions for a single 4GD product configuration UID, for example:
On a Solaris system, if the product-configuration-UID contains a $ special character, you must enclose
the product-configuration-UID in single quotes. For example:
s2clsocial_delete_utility
Deletes the commentary objects (questions, answers, comments, ratings, and helpful objects) for item
revisions. If a commentary object is referenced by a noncommentary object, this utility cannot delete
the commentary.
Based on the entered target string, a list of matching item revisions are listed, and you are prompted to
delete the associated comments. Enter y=yes, n=no, or q=quit.
SYNTAX
ARGUMENTS
-u
Specifies the user ID.
This is generally infodba or another user with 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 user'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.
EXAMPLES
To delete all commentary associated with an item revision name beginning with hdd-0500-C:
To delete all commentary associated with an item revision name hdd-0500-Cover Label:
Active Admin
This workspace is an exclusive workspace designed for Active Workspace administrators. Since it is
exclusive, there are a limited set of pages and commands that the administrator is allowed to visit. For
example, there is no access to initiate a workflow, change management, scheduling, or other end-user
functionality.
The workspace provides quick access to the most common administrative functions on the home page
tiles.
The active admin workspace is a separate downloadable kit, available where you download the Active
Workspace software. Once you download it, use Deployment Center or the Teamcenter Environment
Manager to install it.
See the workspace definition file for a complete list of available pages and commands. Following are the
applications are displayed in the active admin workspace home page by default:
• People
Manage your organization. Create, modify, and remove groups, roles, and users.
• Preferences
Manage your Teamcenter preferences from within Active Workspace.
• Workflow Designer
Use a graphical editor to view and design workflows and task templates.
• Viewer administration
Help troubleshoot your active visualization installation.
Global constants
• Awb0SupportsStructure
Specifies the business objects that can have a structure under it. If you want to display a custom
business object in the Content tab, add the custom business object to this constant. This constant is
added by the Active Content Structure template (activeworkspacebom).
• Awp0FilterCategoryDisplayCount
Specifies the default number of search filter categories to display in the Search Filters panel.
• Awp0FilterValueDisplayCount
Specifies the default number of search filter values to display within a search filter category. If
additional values are available for filtering in any category, a More button appears to display the
remaining values within each category.
• Awp0IndexableFileTypes
Specifies the list of file types that are allowed for text content extraction during search indexing. By
changing the value of this constant, you can specify the file types you want to index. (This global
constant is used if no value is set for the AW_Indexable_File_Extensions preference.)
The following values are supported:
• Awb0AvailableFor
Lists the business object types for which a feature should be made available. The values are comma
separated. This constant honors type hierarchy.
When this constant is used with the Ase0ArchitectureFeature business object, the constant controls
visibility of the Architecture tab for business object types. The Architecture tab is made visible for all
listed business object types and their all subtypes. The types should be those that represent the top
line in structures. This constant supports comma-delimited values of business object types, for
example:
Functionality
Fnd0LogicalBlock
RequirementSpec
Requirement
Paragraph
Fnd0SystemModel
Note:
The Architecture tab is not visible for custom business objects. Determine the business object
types that require the Architecture tab. From these types, determine those that are the top line
in structures. Add only those types to the value of the Awb0AvailableFor business object
constant on the Ase0ArchitectureFeature business object.
You can edit the display name configured for the Ase0ArchitectureFeature business object in
Business Modeler IDE to suit your business processes. By default, the display name of the tab is
Architecture.
• Awb0BOMArchetypeToOccurrence
Determines the instance of which particular subtype of the Awb0Element business object is created.
This business object constant is a comma-separated list of item revision or GDE subtypes. Using such a
list avoids the need to create a separate Awb0Element business object for each item revision type.
• Awp0SearchIsIndexed
Indicates that the business object will be indexed for searching when this constant is set to true. This
information is propagated through the business object hierarchy. For example, if ItemRevision is
selected for indexing, all business objects under ItemRevision (such as Part Revision and
DocumentRevision) are also indexed.
Note:
Do not set this constant to true for the WorkspaceObject business object. This results in
indexing errors.
• Awp0SearchIsIndexedExt
Indicates that external business objects are indexed for searching. By default, the value of this
constant is false, meaning that external objects are not indexed. The scope for this constant is the
Awp0AWCExternalSystemObject business object, which designates objects originating in systems
external to Teamcenter.
To change the value to true, open the Awp0AWCExternalSystemObject business object and select
the Awp0SearchIsIndexedExt business object constant on the Business Object Constants tab. Then
click Edit and select the Value check box.
• Awp0SearchClassifySearchEnabled
Enables the searching and filtering of classification data.
• Awp0SearchIsClassifyDataIndexed
For the specified business object type and below, specifies that classification data be indexed for
searching and filtering.
• Awp0SearchDatasetIndexingBehavior
Defines the behavior of inline indexing for dataset file contents. The scope for this constant is
WorkspaceObject types and their subtypes. Specify one of the following:
Inline Dataset content is indexed inline with the parent business object. When a search
matches dataset content, the search results returns the parent business object
instead of the dataset. The datasets are defined using
Awp0DatasetTypeToBeIndexedInline.
Relation Dataset content is indexed as part of the dataset but it maintains the reference to
the parent business object. When a search matches dataset content, the search
results return the dataset as well as the parent business object.
The default value is Inline except for DocumentRevision, where the default is Relation.
• Awp0DatasetTypeToBeIndexedInline
Identifies the datasets to be indexed along with the business object. The scope for this constant is
WorkspaceObject types and their subtypes.
Set this property only for types that are also marked for indexing and
Awp0SearchDatasetIndexingBehavior is set to Inline.
The format is:
<INHERIT | NO_INHERIT>:RelationName:DatasetTypes
INHERIT:TC_Attaches:PDF
NO_INHERIT Applies the rule only to the type where the rule is defined. A rule applied to a parent
is not inherited by child types. Specifying NO_INHERIT can help improve
performance.
NO_INHERIT:IMAN_Specification:Text
You can specify one to many relationships between RelationName and DatasetTypes.
RelationNam is a relation name or the wildcard character *. Specify one or more clauses separated
e by commas.
INHERIT: *: PDF
DatasetTypes is a dataset type. Specify one or more values separated by a tilde ~.
INHERIT:TC_Attaches: PDF~MSWordX
Specifying only wildcards is not valid (for example, do not specify INHERIT: *: * ).
No default value is specified with the exception that SpecElementRevision is set to INHERIT: *:
FullText.
As a best practice, do not specify all relations (*) for inline indexing and then subsequently try to limit
inheritance by setting a subtype clause to index only a specific relation to a specific type. You can avoid
inheritance by:
And, an INHERIT rule for an ItemRevision subtype indexes only PDFs associated with the
TC_Attaches relation,
Then the indexing behavior at the subtype level might not behave as expected, because you
already specified all ItemRevision subtypes to index all PDFs,
• Configuring the subtype to override the parent. For example, to index PDX content for all the relations
of the subtype, set INHERIT: *: PDX .
By default, the indexing of FullText datasets is not enabled because they are indexed inline for
SpecElementRevision and its subtypes. If you choose to enable indexing of FullText datasets, users see
FullText and SpecElementRevision objects in search results.
Property constants
• Awp0FilterPropFromRefType
Applicable only when the property to be indexed is a reference type or a compound property whose
source property is a form data file property.
You can use the awp0MasterFormStorageClass compound property, available by default on all
Master forms for ItemRevision and its subtypes, to index and filter the properties of the form.
Specify a comma-separated list of properties that are a subset of the properties listed in the
Awp0SearchPropFromRefType property constant. For example, you can set the following constants
for the property constant reference type you want to filter:
Awp0SearchIsIndexed
Set the Boolean value to true to search on the property.
Awp0SearchCanFilter
Set the Boolean value to true to filter on the property.
Awp0SearchPropFromRefType
Enter the list of properties to index.
Awp0FilterPropFromRefType
Enter the list of properties to filter.
Awp0SearchRefTypesNames
Enter the referenced object type names.
• Awp0InboxCanFilter
Indicates that tasks shown in the inbox can be filtered on a specific property of a workflow business
object (EPMTask and its subtypes). The following example shows tasks found when selecting the
Team tab.
By default, the following properties are shown as filters for workflow business objects in the inbox:
• Awp0InboxFilterPriority
Sets the priority of the property of a workflow business object (EPMTask and its subtypes). It
determines the property’s 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.
• Awp0SearchCanFilter
Indicates that the search results can be filtered on the specific property. It assumes that the property
was marked for indexing using the Awp0SearchIsIndexed property constant. For the filters to show
up correctly in the user interface, this property constant should be set for the property on its source
business object.
In a Multi-Site Collaboration environment, apply Awp0SearchCanFilter to published record objects so
that they can be indexed using the POM_owning_site property.
• Awp0SearchFilterPriority
Sets the priority of the property that determines its order in the list of filters displayed in the client—
the lower the value, the higher the priority. This means that the filter is positioned higher in the list of
filters shown in the filters panel. Siemens Digital Industries Software recommends that you assign
values from a range in order to accommodate additional properties in the future. For example, assign
priorities such as 100, 200, and 300, instead of 1, 2, and 3.
For the filters to show up correctly in the user interface, this property constant should be set for the
property on its source business object.
When a Table type property is marked for filtering, all valid properties of the referenced TableRow
type are available as filters. All the table row properties get the same filter priority, so they are
displayed together, vertically listed in the filter pane.
• Awp0SearchIsIndexed
Indicates that the property on the business object will be indexed for searching by the indexing
engine. This information is propagated through the business object hierarchy. For example, if
object_type on ItemRevision is marked for indexing, all business objects under ItemRevision (such
as Part Revision and DocumentRevision) also have their object_type property indexed. The
following constraints apply when indexing properties:
• Only attribute, compound, table, reference, and publication record properties can be indexed.
Indexing of runtime and relation properties is not supported.
• For multi-site searching the POM_owning_site property can be indexed out of the box. Apply the
Awp0SearchIsIndexed to published objects to enable indexing.
• To index compound properties, they must reference attribute properties from the source object.
Note:
If the compound property value comes from a form, the compound property must use the
form storage class in the property definition rather than the form itself, or indexing fails.
• Table type property indexing is only supported for properties that reference Fnd0TableRow and its
subtypes. Indexing is not supported for Fnd0NameValue and its subtypes.
When a table type property is marked for indexing, all the valid properties of the referenced table
row type are indexed. You do not need to mark individual table row properties.
• Awp0SearchPropFromRefType
Applicable when the property to be indexed is a reference type or a compound property whose source
property is a form data file property.
You can use the awp0MasterFormStorageClass compound property, available by default on all
Master forms for ItemRevision and subtypes, to index and filter the properties of the form.
Specify a comma-separated list of properties that are on the business objects specified in the
Awp0SearchRefTypeNames property constant. For example, on the owning_user reference
property on ItemRevision, specify a value of user_id,user_name.
The following rules apply:
Note:
If the compound property value comes from a form, the compound property must use the
form storage class in the property definition rather than the form itself, or indexing fails.
• Each property in the list specified for Awp0SearchPropFromRefType is matched against each
business object in the list specified for the Awp0SearchRefTypeNames property constant. Only
properties that are valid and applicable on a business object are considered for indexing. In
addition, if filtering is enabled on the reference property, only the first property from the list is
used.
• Awp0SearchRefTypeNames
Applicable only when the property to be indexed is a reference type or a compound property whose
source property is a form data file property. Specify a comma-separated list of business object names
that the reference property can contain. For example, on the owning_user reference property on
ItemRevision, specify a value of User. The following rules apply:
• If no value is specified on typed reference properties, the business object that is specified as the
referenced type is used as the type. For example, release_status_list results in ReleaseStatus.
• On untyped reference properties, if no value is specified, the POM_object is used as the type.
• Cm1ChangeCanFilter
Indicates that the changes in the Changes page can be filtered on a specific property of the change
business object (ChangeItemRevision and its subtypes). The following example shows the changes
found when clicking the Submitted tab.
• CMMaturity – The degree of completion of the overall change process (its Maturity).
• Cm1ChangeFilterPriority
Sets the priority of the property of the change object (ChangeItemRevision and its subtypes). It
determines the property’s 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.
Note:
Compound properties presume that the security level of the source property of the source object is
read access. This is because the compound property belongs to the target object related to the
source object through the compound property.
For example, Object B has a compound property that is related to its source property on Object A.
When Object B and its compound property are indexed, the indexer presumes that Object A has a
security level of read access to everyone. That means that anyone with read access to the
compound property of Object B could also find the source property on Object A, regardless of its
security level.
Enable searching and filtering for a referenced object using a property value defined on the referenced
object. You need to add or update the property constants for the property of the referenced object.
In the first example, an ItemRevision object has a referenced Item object, where the description
contains the value Example Text.
In the Business Modeler IDE, find the template containing your object definitions, and find the
ItemRevision object. On the property that references the Item object, add or update the following
property constants:
Awp0SearchIsIndexed
Set the Boolean value to true to index this property.
Awp0SearchRefTypesNames
Set the referenced object type name, Item in this example.
Awp0SearchPropFromRefType
Set the list of properties on the referenced object type specified in Awp0SearchRefTypesNames. In
this example, the property is description.
To filter the search results by the preceding property values, add or update the following property
constants:
Awp0SearchCanFilter
Set the Boolean value to true to filter on the property.
Awp0FilterPropFromRefType
Set the list of properties on the referenced object. In the example, the property is description.
Awp0SearchFilterPriority
This property constant is optional. You can set a numeric value for priority. The lower the value, the
higher the priority.
Enable searching and filtering using the properties of a related Master or custom form. You need to add
or update the property constants for the property of the related form. By default, the
awp0MasterFormStorageClass compound property is configured for ItemRevision. The compound
property references the data file on the Master form for ItemRevision.
4. Awp0TestItemRevMasterS is a compound property that references the data file of the Master
form.
5. Configure the Master form storage class property awp0MasterFormStorageClasswith the property
constants that enable indexing, searching, and filtering.
Enable searching and filtering of an Item Master form using a compound property. You need to create a
compound property on a persistent attribute of the Item Master data_file storage class. The compound
property references the data file for the Master form of the Item. You need to create a compound
property for every attribute you want to search.
Be sure to set the index, search and filter property constants on the new compound property.
In Teamcenter, the following audit log types hold audit records based on logical groupings of object type
and event type combinations:
• General logs
• Organization logs
• Security logs
• Schedule logs
• Structure logs
• Workflow logs
An audit log dataset is a stylesheet configuration representing applicable audit log types for a context
object. The Audit Logs tab in Active Workspace provides a segregated view of audit logs in different
sections. As a system administrator, you can create and configure audit log datasets.
As a DBA user, you can view audit logs using the Audit Logs tab in Active Workspace.
To enable the audit log feature, you must install the Audit feature during your Active Workspace
installation using Teamcenter Environment Manager (TEM).
Set the following preference to activate the Audit Log tab in Active Workspace.
• AWC_show_audit_logs
Activates the visibility of the Audit Log tab in Active Workspace. By default, the value is true for the
dba group. As a DBA user, you can make the Audit Log page available to other users using:
• The rich client Options dialog box Preferences By Organization pane, which allows a DBA user to
set the AWC_show_audit_logs preference for specific groups, roles, and users.
For more information, see the Environment Variables Reference and the Using Teamcenter
preferences video in the Teamcenter help collection.
You can customize which fields are displayed in each audit log. For example, by default the General
Logs audit log displays the following fields:
• Logged Date
• User ID
• Change ID
• Reason
• Group Name
• Role Name
1. In the rich client, search for the audit log file you want to edit. For example, select the
GeneralAuditLogs file to remove a field name in the General Logs audit log.
2. Delete the line associated with the field you want to remove. For example, delete the following line
to remove the Secondary Object Type field:
<property name="fnd0SecondaryObjectType"/>
4. Using Active Workspace, verify the Secondary Object Type field was successfully removed.
Note:
Your administrator must enable the Audit Logs page for Active Workspace. Also, you must have
DBA privileges or you must be granted privileges to view audit logs.
System administrators use Audit Manager to create audit logs. Audit logs track what information has
changed and who has changed the information.
You can view audit logs using the Audit Logs tab in Active Workspace.
By default, the following four audit logs are viewable in Active Workspace for Item, ItemRevision, and
its subtype:
• Workflow Logs
• General Logs
• Structure Logs
You can customize which audit logs are displayed to users by adding or removing audit logs to customize
your XRT pages.
Following is a table that shows the audit dataset for the associated object type.
BOMLine AuditLogForBOM
Form/Folder/WSO AuditLogGNForWSO
Dataset AuditLogForDataset
User/Group/Project AuditLogForUserContext
GroupMember/Person/ AuditLogForOrg
Role/Site/Volume/
TCCalendar
SchDeliverable/SchTaskDeliverable/ AuditLogForScheduleMgmt
ScheduleMember
EPMJob/EPMTask/ AuditLogForWorkflow
PerformSignoffTask
Scp0Regulation/ AuditLogForSubscmpl
Scp0SubstanceCmplResult/
Scp0Exemption/
Mat1Substance
1. Open the XRT page that you want to modify, for example, Awp0DocumentRevSummary, and add
the audit log to your custom XRT page by inserting an inject statement for the audit log you want
to add.
2. Insert an inject statement for the audit log you want to add.
Note:
Siemens Digital Industries Software recommends you rename your edited file before saving
changes to retain the default file.
Preferences
You can use Teamcenter preferences to control various aspects of Teamcenter's behavior and
appearance.
Siemens Digital Industries Software recommends browsing through the list of preferences to see which
ones might be useful to you. Each preference's definition will document its use.
At their core, preferences are simply a way to store information. They are similar to environment
variables, except that they they operate with several layers of permissions.
Overview
A preference definition along with all of its preference instances are together considered to be a
preference.
The preference definition is like a blueprint. It defines the nature of the preference and
is used to create the instances at the various locations. Even though it may define a
Definition default value, the definition itself is never retrieved or read as a preference. If there are
no instances of this preference, there is no value.
A preference instance created at the site location applies to everyone logged in to
Site
Teamcenter unless overridden.
There can be only one site instance.
Any preference instances created at the group location apply only to users who are
Group
currently logged in as that group, and they supercede site preferences.
There can be one group instance created for each group.
Any preference instances created at the role location apply only to users who are
Role
currently logged in as that role (regardless of group), and they supercede site and
group preferences.
There can be one role instance created for each role.
Any preference instances created at the user location apply only to that user, and they
User
supercede site, group, and role preferences.
There can be one user instance created for each user.
Preference definition
You use the preference definition to create the overall limits and restrictions on the preference as well as
setting the default value. Think of this as an abstract template from which the preference itself will be
instantiated. Following are the fields used to define a preference definition:
Name The name of the preference. Naming patterns help organize the preferences and give
an idea of what they do even before you read the description. See the list of existing
preferences for examples.
Protection Determines where and by whom it can be instantiated.
Scope
Type Specify the preference value type.
Multiple Specify if this preference can hold multiple values.
Description Explain the use of the preference. What does it control? What format is expected for
the values? Etc.
Value Specify the default value that an instance will contain when initially created.
Environment Retrieve the value from an OS environment variable of the same name.
Category Organize related preferences based on their category. There are many existing
categories you can use, or you can create your own.
Preference instance
You create a preference instance from its definition. When you create a new instance of a preference it
must belong to a location. This location specifies when it is active and its priority in the hierarchy. You
cannot create a preference instance if the protection scope does not allow it.
When referring to preference instances, it is common to shorten the phrase. For example, the
preference instance in the Engineering group location is commonly referred to as the Engineering group
preference.
Location Locations are where the preference instances reside. You can create preference
instances at the following locations:
• User
• Role
• Group
• Site / System
Value You can keep the default value from the definition or specify a new one.
Preference locations
• User
This assigns the instance to a specific user. These are commonly the preferences that Teamcenter
uses to track things like column widths in the rich client, or most recently searched text, for example.
Although you can control your active preferences like style sheet registration down to the user level, it
is normally recommended that you keep those kinds of settings to the Group level or higher. It makes
things easier when people move in and out of groups and roles.
• Role
You can control the behavior based on a user's role. This is handy for things such as style sheets. Keep
the consumer's page simple while being able to provide the information the author or approver
needs.
• Group
Similar to the Role location, you can control the behavior at the next step up, at the group level.
• Site / System
Preferences created at these locations apply to everyone. This is typically where you instantiate
preferences that control system-wide behavior or default behavior that can be overridden at the
group, role, or user level.
Site preferences only allow a single instance, but a dba can change the protection scope of a site
preference to something else.
System preferences do not allow their protection scope to be changed, even by a dba. In all other
ways, they behave like a site preference.
Caution:
An existing non-system preference may be changed into a system preference by a dba, but once
it has been changed, it cannot be changed back. If you want to change it, it must be deleted
and re-created.
Customer-facing preferences
You control an aspect of the UI or behavior directly by making changes to the preference. Examples of
these preferences are configuring default paste relations, which style sheets are used in a given
situation, or how the Dispatcher handles certain file types.
Internal preferences
Teamcenter uses preferences extensively to remember application parameters, like column width. Even
though you can see and possibly modify the values of these preferences, it is not advised to do so.
Everything in this example is based on a single preference, one which registers a style sheet to a
business object for the summary view. It could be any preference as all preferences behave the same
way. Since this preference definition's protection scope is User, you can create instances at the Site,
Group, Role, and User location. This means you can control its value based on your users' current
group, role, or even user name.
Example: I want the summary view's property layout for item revisions to depend on my
users' login information
• You want a default style sheet that everyone will use unless otherwise specified.
• You have users that just need a simplified layout for viewing.
ItemRevSummary
Configured to be the default style sheet for the Item Revision summary page. This applies to
everyone unless overridden.
IRSumTech
Configured to provides the extra properties for the Engineering and Manufacturing groups, but not
for any other groups.
IRSumMgr
Configured to display workflow information for the Manager role, regardless of group.
IRSumDes
Configured to show the classification trace for the Designer role, regardless of group.
ConnersIRSum
Configured for Conner. Conner has his own requirements
Preference instances
Assign the style sheets to the various groups and roles, and even users if desired, by creating each
preference instance with the value pointing to the respective style sheet. In this example, there are 6
preference instances created.
The Viewer role and the Tester group have no preference instances created for their location.
In this example, Alice selects a DocumentRevision business object and uses the Summary tab. When
she does this, Teamcenter performs a few steps to determine which style sheet to use.
1. Based on the object type and the view location, the system knows the name of the preference
instances to retrieve.
There are two instances: one at the Site location, and one at the Manager Role location.
2. Based on the user's current session information, Teamcenter chooses the appropriate preference
instance.
3. The value of the chosen preference instance is read, providing the name of the style sheet to
retrieve.
Result
Your users see a different set of information based on what group or role they are in because the client
uses different style sheets.
• Alice sees the style sheet for Managers because she does not have a user preference set to supercede
it. The site preference is overridden by the Engineering group preference, which is overridden by the
Manager role preference. Ted has the same result; the Manufacturing group preference is overridden
by the Manager preference. Sue doesn't have a group preference, but she still gets the Manager role
preference.
• Bob sees the style sheet for Designers because of his role, similar to the preceding example.
• Carol sees the tech style sheet because there is no role preference for Viewers.
• Pat's group and role do not have preferences associated with them, and neither does she have a user
preference, so she gets the default style sheet defined by the site preference.
• Conner gets Conner's style sheet regardless of which group or role he's in, since a user preference
supercedes all others.
You can define a preference to retrieve its value from an environment variable in the operating system.
If you want to pass multiple values from the environment to the preference, you must configure the
following:
• Use the appropriate separator in the environment variable. The environment variable is read from the
operating system on which the tcserver process is running.
Windows Semicolon — For example, MyEnvPref=Value1;Value1;Value3
Linux Comma — For example, MyEnvPref=Value1,Value1,Value3
The environment variable is only read by the tcserver process when the value is first requested, so any
changes made to the environment variable after that will not be reflected in the Teamcenter preference
until after the next time the tcserver process is started.
Remember, the environment variable is read from the environment where the tcserver process is
running, which is not necessarily the environment where the client is running.
You can work with all Teamcenter preferences from within the Active Workspace client using the
Preferences page.
Preference Management is part of the Active Admin installation option for Teamcenter. Once
installed, you can get to this page by either:
Your ability to work with preferences is determined by whether you are currently logged in to a group
with administrator privileges.
Administrator? Permissions.
Administrator Search and modify preferences
Create and override site, system, group, role, and user preference
instances
Delete preference instances and definitions
Group Administrator Search and modify preferences
Create and override group, role, and user preference instances within
your group
User Search existing preferences
Create and override your own user preference instances
Use the Organization panel to select in which session context you wish to work.
If you do not have a choice of working in other session contexts, (you have no administration privileges),
then you will not see the Organization panel, and you can only work in your current session context.
• group:
• role:
• username:
• userid:
You can specify more than one of these by putting a space between them.
Example:
To search for the word, design, put design in the field.
To search for the specific user id, ed, put userid:"ed" in the field.
To search for all users with user ids beginning with ed, put userid:ed in the field.
To search for the specific user named Smith, Bob in roles beginning with design, put
username:"Smith, Bob" role:design in the field.
The preference list will be populated with all valid preference locations for the session context that you
have selected, and you are able to:
• Override preferences for this session context, if the preference scope allows it.
3. Select a preference.
Override a preference
To override a preference, you must create a new instance of the preference at a higher-precedence
location. Each preference defines its own scope, which is the highest precedence location allowed.
For example, If a preference's scope is Site, then it cannot be overridden, but if its scope is User then it
can be overridden at every level.
If a preference instance's location is Site, it will be overridden by any other location instance but if its
location is User then it overrides any other location for that specific user.
Tip:
If a preference in the list has a location of None, then that means it is the preference definition
and there are no current location instances.
scope location
User Can override at any location. Overrides all other location
values.
Role Can override at group and role Will override Site and Group
locations. location values.
Group Can only override at group Will override Site location values.
locations.
Site Can not override. Is overridden by any other
location
4. In the Add Override panel, choose the location for the override (if allowed), set the new value, and
then choose Add.
Active Workspace is designed for the user to work almost exclusively with objects of the ItemRevision
class (and its children). If you need to, you can change the UI to:
There are two main things you need to do in order to work with items instead of their revisions.
In addition, you should also suppress the ItemRevision type from the UI.
Caution:
Siemens Digital Industries Software does not recommend that you present both items and
revisions to your users.
If you want your users to be able to delete folders in Active Workspace, then you must change the
following preferences:
AWS_allowedTypesForDelete
This is a multiple-value preference that accepts a list of business object types that are allowed to be
deleted using the Active Workspace interface.
TC_auto_delete_folder_references
If you are working with folders, you can modify this preference to ignore and remove any folder
references automatically when you delete an object, including a folder.
Setting this to false prevents an object from being deleted from the database and present and error
message if it has any references to any other objects, including folders.
Setting this to true ignores folder references when checking for references to other objects, and if
no other references are found, then the folder references are automatically removed, and the object
is deleted without complaint.
Example:
If you attempt to delete a folder containing objects and this preference is set to true, then the
contents of the folder will be removed (not deleted), and then the folder will be deleted
AWC_notification_timeout
The value is the number of seconds to wait before closing the notification. If the value is negative,
the window will not close automatically.
To define the properties that display on the cells for objects in Active Workspace list view, use the
business-object.CellProperties preference. The first two properties in the list of properties in the
preference are displayed without labels and are formatted as a primary title and subtitle. The remaining
properties are displayed in the cell as name:value.
The default values vary by object type. For example, following are the default values of the
ItemRevision.CellProperties preference:
object_name
item_id
item_revision_id
Revision rules determine the state of objects you view in the user interface. The active revision rule is
shown to the right of the user name. Users click the revision rule to display the list of all available
revision rules. To set a different revision rule, a user selects another revision rule from the list.
By default, the list of available revision rules is obtained from Teamcenter. However, as an administrator,
you may want to provide different revision rules for Active Workspace than are used in the rich client.
For example, you may want to have Active Workspace default to Latest Released whereas you want the
rich client to still default to Latest Working.
To set a different list of revision rules for Active Workspace, add revision rules to the
AWC_Rev_Rule_List preference. Whenever a custom revision rule is created, you must add it to this
preference for it to appear in the revision rules list. By default, the preference is empty, meaning that the
revision rules list in Active Workspace defaults to the revision rules from the rich client.
To set the revision rule that is selected by default, add it to the AWC_Rev_Rule_Selected preference.
The revision rule in this preference must match a revision rule in the AWC_Rev_Rule_List preference.
If the revision rule in the AWC_Rev_Rule_Selected preference is removed from the AWC_Rev_Rule_List
preference, you must change the revision rule in the AWC_Rev_Rule_Selected preference to one in the
AWC_Rev_Rule_List preference.
By default, the AWC_Rev_Rule_Selected preference is empty, meaning that the first revision rule in the
AWC_Rev_Rule_List preference is the one that is selected by default in the user interface.
There are several sources from which to retrieve a list of preferences and their definitions.
When thumbnail images are displayed in Active Workspace, the image is loaded from the FMS system
server using a file read ticket. Each time you display the same thumbnail, a new ticket is created. You
can, however, enable browser caching so that the first time an image is loaded it is saved in the cache.
This improves performance if the image is loaded again within a specified time period in the same
session.
Image files are used in Active Workspace for tiles, preview images, thumbnails, breadcrumbs, and so on.
Image resolution is the clarity with which you can view the image with distinct boundaries. The
resolution of the image depends on the number of pixels; more pixels correspond to more clarity, but
also increases the size of the image. Large images take a lot of time for rendering and viewing.
To render images not only quickly but also with high clarity in Active Workspace, you can compress them
and reduce their sizes without distorting the quality. You can manage the quality, sharpness, color, and
accuracy of the images with lower resolutions. You can generate low, medium, and high resolutions of
the original uploaded image while maintaining their aspect ratio. You can also define custom resolutions
for the images.
You can compress images in Active Workspace used for tiles, preview images, thumbnails, breadcrumbs,
and so on. This reduces their size without distorting the quality. Following are the prerequisites for
configuring image resolution in Active Workspace:
• Dispatcher Server and Dispatcher Client components under Teamcenter Enterprise Knowledge
Foundation are installed using Teamcenter Environment Manager.
To compress images:
• 64px::Low
• 300px::Medium
• 600px::High
You can also define custom values for images, such as 1200px::LARGE or 2800px::EXTRALARGE.
These values are for the height of the translated image, and the appropriate width is automatically
adjusted by the image translator based on the aspect ratio of the original image.
3. To specify the default image to be used for scaling across Active Workspace application, set the
value for the AWC_default_image_resolution preference. The default OOTB value is Medium.
In the tc_xrt_Preview tag, specify the value for the default image:
<section titleKey="tc_xrt_Preview">
<section titleKey="tc_xrt_Preview">
<image resolution=”<user_input>” source="thumbnail"/>
</section>
• If the resolution preference value is Medium, the system resolves to medium resolution.
• If image resolution is an undefined or invalid resolution type, the system resolves to high
resolution.
Note:
The values for image resolution are not case sensitive.
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.
Information about the running Active Workspace client and server, as well as the Teamcenter server
version, site ID, and database ID to which they are connected is available when you are logged in.
[email protected]
[email protected] (Apollo Web Application Framework)
Client Build: Wed Dec 11 2019 05:57:45
Server Build: aw4.3.0.12x.2019121101
Server Version: V.12.3.0.20191209.00
Site Id: -1837089722
Database: tc
User Session Logfile: tcserver.exe244cb7cd.syslog
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 exmaine 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.
General troubleshooting
Note:
If the Active Workspace client exhibits unexpected behavior, it is always good practice to clear the
browser cache, and try the operation again. This is particularly important when server-side
changes are made, such as updating to a new version of Active Workspace.
No server available error Tune the tcserver pool size using the PROCESS_WARM parameter. For
details, see System Administration in the Teamcenter collection.
• On the client, configure the browser to not use TLS 1.0. For example,
in Internet Explorer, perform the following:
3. Click OK.
Upload file size exceeded Use the Data Share Manager to manage large file uploads with
max limit error during file Teamcenter.
uploads
Users working with Active The Active Workspace administrator should verify that the tcSOAURL
Workspace experience 403 parameter is set correctly in the web.xml file.
errors when accessing
thumbnails, files, or the 1. Open the web.xml file in a text editor. The web.xml file located in
viewer. (The 403 error may the web application file (awc.war for Java or awc.zip for .NET).
only be visible in the
network page of the 2. Search for the following:
browser’s developer tools.) <filter-name>TCLoginVerifier</filter-name>
3. Ensure that the web application file is set to the correct locale.
Use the PLStats functionality of Active Workspace to view performance telemetry data.
When you use PLStats, it reports to the browser console information about memory usage, overhead
times, DOM node count, and so on.
Example:
host:port/awc/#/showHome
Becomes:
host:port/awc/?usePLStats#/showHome
Once you add this to the URL, Active Workspace will maintain it, printing out performance data for each
page. To stop using PLStats, remove the ?usePLStats from the URL.
In the detailed telemetry section, all values that are preceded by an asterisk will be reported to Siemens
Digital Industries Software, if analytics is enabled.
Example:
*ScriptingTime: "xxx.xxms"
Use the ping functionality to check the various components of the Active Workspace gateway
architecture, and verify connectivity.
http://hostname:3000/ping
You can disable this functionality by changing the pingEnabled setting to false in the gateway
config.json file.
AW ROOT/microservices/gateway-1.1.0/config.json
"pingEnabled": false
Tip:
You must restart the gateway to apply the change.
When you make changes to the configuration files for the Active Workspace gateway and
microservices, you must restart them for your changes to be recognized.
Windows
On Windows, all of the gateway services and microservices on a given machine are managed by a single
multi-threaded service. To implement your configuration changes, restart the service using the Services
control panel:
net stop "Microservice Manager PoolA" && net start "Microservice Manager
PoolA"
Linux
On Linux, the gateway services and microservices are manged by a Docker swarm. Force a rolling restart
on the gateway node. The others will restart in turn.
Intent
• Tailored for clean systems that have never had a previous installation of visualization.
• Intended for use when the Visualization Pool Assigner is deployed on a Java server on Windows.
Usage notes
• Document all changes made during this process so that all unnecessary changes can be reverted once
the system finally works.
• If a problem is identified and fixed during the diagnostic sequence below, but visualization still does
not work, return to the beginning of the diagnostic sequence.
Sequence
1. Verify that the servers are installed on computers that are running supported operating systems.
For example, Windows 7 Professional is unsupported.
2. Verify that the Visualization Server Manager is launched using the run_visservermgr.cmd script.
Do NOT run the Visualization Server Manager as a Windows Service, as doing so significantly
reduces stability and performance.
3. Verify that the Visualization Pool Assigner is launched using the run_visassigner.cmd script. Do
NOT run the Visualization Pool Assigner as a Windows Service, as doing so significantly reduces
stability and performance.
4. If the Visualization Data Server is installed and running, terminate the Visualization Data Server. It
is not required for loading small to medium sized models.
5. Turn off all firewalls. If this is not possible, verify that all ports and port-ranges declared through
TEM have been opened through firewalls.
6. Restart the visualization system. The following sequence yields the cleanest startup:
8. Does the 3D window waiting cursor (rotating circle) show for a long time and the 3D model does
not display?
• Yes -
• Logout and login as the admin user. Navigate to Viewer Administration and verify that at least
one Visualization Pool Assigner and one Visualization Server Manager is listed.
If no Visualization Pool Assigner and Visualization Server Manager are listed, do the following.
b. Verify that Gateway forwarding is correctly pointing to the deployed Visualization Pool
Assigner by verifying that the following entry is correct in the config.json file.
"vis": {
"path": "/VisProxyServlet",
"target": "http://
<VisAssignerHostname>:<VisAssignerHostPort>>
/VisProxyServlet"
Where VisAssignerHostname and VisAssignerHostPort are the host and port where the
Visualization Pool Assigner was configured.
• No - Continue.
9. Does the message “Vis Server Manager is ready!” appear in the Visualization Server Manager
console within two minutes of startup?
• Yes – Continue.
• No –
• Does a “JVM_Bind” error appear in the Visualization Pool Assigner or Visualization Server
Manager console/log?
■ Yes – The server’s Socket Cache port is already in use by another process. Either use TEM to
alter the port, or terminate the process that is presently using the port. Then, restart the
visualization system.
■ No – Continue.
• Does a “Trouble connecting to cold visualization server on port <PORT> with PID <PID> due to
‘The VisView's reported system CPU usage (-1.0) is less than 0’. Retrying ...” error appear in the
Visualization Server Manager console?
■ Yes –
a. Verify that the Visualization Server Manager is installed on a computer that is running
a supported operating system.
b. On the machine hosting the Visualization Server Manager, execute the following
Windows commands:
cd C:\Windows\SysWOW64
lodctr /r
winmgmt /resyncper
■ No – Continue.
• Does a “Error reading 'begin' notification” error appear in the Visualization Server Manager
console?
■ Yes – You are likely pointing your Visualization Server Manager at an incorrect server or
port. For example, you may be pointing it at the Visualization Pool Assigner’s HTTP server
instead of the Visualization Pool Assigner’s Socket Cache server. If not, contact vendor.
■ No – Continue.
• Verify that the appropriate Microsoft Visual Studio Redistributables are installed. (They are
typically installed automatically).
a. Launch VisServerFV\Products\FoundationViewer\visview.exe.
■ Yes – Continue.
■ No –
• Is the Visualization Server Manager repeatedly reporting an error beginning with “Could not
connect to VisPoolAssigner”?
■ Yes –
◊ The Visualization Pool Assigner is running a server called the “Socket Cache”, but the
Visualization Server Manager is reporting that it cannot connect to that server. Verify that
the VisPoolProxy.peerNodes property in the Visualization Server Manager’s jetty/
jettyservice.properties file will enable the Visualization Server Manager to contact the
Visualization Pool Assigner’s Socket Cache server.
■ No – Continue.
c. Using the Registry Editor, delete the following folders in the registry:
HKEY_CURRENT_USER/Software/Siemens/AW/<<AW_RELEASE_VERSION>
HKEY_CURRENT_USER/Software/Siemens/AW_Retained/
<<AW_RELEASE_VERSION
e. Continue.
• Contact vendor.
10. Does a “The visualization servers are busy” error message appear in Active Workspace when trying
to view 3D content?
• Yes –
• Does a “All Pool Managers are full” error message appear in the Visualization Pool Assigner
console?
■ Yes –
a. Open the Visualization Server Manager's jetty/jettyservice.properties file and note the
value of VisPoolProxy.hostName.
b. From the Visualization Pool Assigner computer, open a command prompt and run the
command
ping <VisPoolProxy.hostName>
where <VisPoolProxy.hostName> is the value found in the jetty/
jettyservice.properties file.
◊ Yes – Continue.
◊ No –
■ No – Contact vendor.
• No – Continue.
11. Is a new VisView process started when you attempt to load a model into Active Workspace?
• Yes –
■ No – Continue.
• No –
• Set “VisPoolProxy.warmServers=1”
• Set “VisPoolProxy.maxServers=1”. (This prevents more than one VisView process from
starting.)
• Enable “VisPoolProxy.envset.TCVIS_DA_DEBUG_LOG=True”
• Enable “VisPoolProxy.envset.TCVIS_LOGGING_LEVEL=DEBUG”
c. Verify that your FMS_HOME environment variable specifies the FCC installation area.
• C:\Users\%USERNAME%\FCCcache*
• C:\Users\%USERNAME%\Teamcenter\SOA
• C:\Users\%USERNAME%\vendor\logs
• C:\Users\%USERNAME%\fcc.*
• VisDataServer/Program/scratch/*.
C. Start FCC manually using the command “%FMS_HOME%/startfcc.bat” and verify that
there are no errors.
• Yes –
A. Open your FCC’s fcc.xml file and verify that it is pointing at correct locations and that
it is it free of typos.
B. If your FCC’s fcc.xml parentfsc is using HTTPS, verify the involved certificates.
• No – Continue.
14. Verify that the Visualization Server Manager has access to graphics hardware.
a. See the section “Configure the Visualization Server Manager to be in debug mode” earlier in
this procedure.
c. Does the log file contain the message: “System Supports OpenGL Version”?
• Yes –
■ Yes – Continue
■ No –
• Yes –
• No – No solution.
• No – Contact vendor.
Troubleshooting Visualization
The following list of issues and possible resolutions addresses situations that are outside the scope of
the visualization troubleshooting diagnostic sequence for new installations.
1) Graphics in the viewer tab This is an indication that the graphics driver on the Visualization Server
display extraneous Manager machine is not up-to-date.
geometry.
Verification
Solution
If the driver for the graphics adapter is not the latest version, update
the driver and reboot.
may need to disable the "press and hold" setting if you see a
translucent square appear when performing the press and hold
gesture.
1. Open Windows search and type Pen and Touch to find the
settings dialog box.
2. In the Touch tab, select the Press and Hold action and click
Settings.
3. Uncheck Enable press and hold for right-clicking and click OK.
# BBoxValidator logger
logging.loggers.BBoxValidator.name=BBoxValidator
logging.loggers.BBoxValidator.level=Debug
logging.loggers.BBoxValidator.channel=BBoxValidatorChannel
FTS_INDEXER_HOME\working\TcFtsIndexer_structure\
MMV_Failure
Solution
If you notice the MMV_Failure folder is created and contains content,
contact GTAC to investigate the issues.
Solution
HKEY_CURRENT_USER
SOFTWARE
Microsoft
Internet Explorer
Main
FeatureControl
FEATURE_BROWSER_EMULATION
visview.exe = (DWORD) 00011000
visview_ng.exe = (DWORD) 00011000
https://msdn.microsoft.com/en-us/library/
ee330730(v=vs.85).aspx
7) The Visualization Pool The Visualization Pool Assigner was likely mistakenly configured to
Assigner repeatedly adds the have a peer Visualization Pool Assigner. Peer Visualization Pool
error message "Could not Assigners are intended for load balanced configurations where there is
connect to <HOST>:<PORT>. more than one Visualization Pool Assigner in the system for improved
Retrying..." to the console/ load handling and/or failover. Open the Visualization Pool Assigner
log. configuration page in TEM and remove the Visualization Pool
Assigner’s peer assigner entry.
8) The Visualization Server The Visualization Server Manager process uses Windows performance
Manager displays the counters to read the current CPU usage of the computer. Windows
message “Trouble connecting performance counters can become broken, resulting in invalid values
to cold visualization server for the CPU usage, for example: -1.
on port XXXX with PID YYYYY
Solution
due to "The VisView's
reported system CPU usage
(-1.0) is less than 0". 1. Open a command prompt or PowerShell as an administrator.
Retrying ...”
2. Change the directory to C:\Windows\SysWOW64.
9) After a user exceeds the The Visualization deployment was likely mistakenly configured with
time out value, the Active the Teamcenter Load Balancer URL. Refer to Configure Visualization
Workspace viewer tries to where Teamcenter is deployed behind a load balancer.
reconnect but fails with the
In the developer tools console the following error will display if the
following error: "
deployment was configured with the Load Balancer URL: error “Failed
Visualization was not loaded
to connect to server: The TCLoginverifier likely refused this
because communication was
visualization-specifc request due a missing connection to Teamcenter.”
lost."
The Active Workspace Viewer Administration page provides information about active visualization
components and processes.
1. Log on as a user with administrator privileges, typically one in the dba group with the DBA role,
but possibly others in your organization.
The Viewer Administration page appears. The initial view of the page includes a diagram of active
visualization components and processes.
3. For details about an object included in the diagram, select the object, and click Info .
The Information panel appears, providing detailed information on the selected visualization
component or process.
Note:
To maintain a secure environment, sensitive information such as IP addresses and the session
ID is not displayed.
This troubleshooting topic assumes that you have already deployed the Active Workspace 3D viewer,
Visualization Data Server (VDS), and indexed the structure with the MMV flag. If you do not have a
working Active Workspace 3D viewer, review the other topics within Visualization monitoring and
troubleshooting. If you have a working viewer but your structure is not loading with MMV, then use this
checklist to troubleshoot your MMV deployment issues.
Ensure that FCC (File Client Cache) The FCC should be large enough to load all the JT data that is
is installed and configured needed for the indexed products.
correctly.
Use the VisView process log files 1. Enable logging through the jettyservice.properties file.
to determine if the viewer is using
the GPU. 2. Uncomment this line:
#VisPoolProxy.envset.TCVIS_LOGGING_LEVEL=DEB
UG
5. Search for OpenGL to find a block of text that looks like the
example below.
Verify that the configuration that For more information on using the FTSIndexer, review
is indexed is the same as what you runTcFTSIndexer.
are trying to view (e.g., same
Use the following command to get the FTSIndexer status.
revision, rule, effectivity, etc.).
If the indexing did not succeed, 1. Set the TcFtsIndexer logging to TRACE:
generate indexing logs for MMV. log4j.logger.com.siemens.teamcenter.ftsi=TRA
CE
2. Modify the existing %TcFtsIndexer.home%\conf
\TcFtsIndexer.properties parameter:
This keeps generated mmp and tcxml files.
3. Cleanup the working directory and previously generated
logs.
4. Restart the TcFtsIndexer service.
Verify that the URL is configured 1. In the jetty.properties file for the viewer (not the VDS),
correctly and that the viewer can locate the line similar to the following example:
access the VDS. VisPoolProxy.envset.TCVIS_VISDATASERVERURL=h
ttp://<hostname>
:9990/ProductStructure
2. Copy and paste the URL into a browser window on the
machine where the viewer is running.
View the VDS logs if the viewer If the viewer isn't behaving as expected, do the following to view
isn't behaving as expected. the client communication logs to VDS. You should see FindRoot
call to confirm that the viewer is attempting to load a structure
with the VDS.
Note:
This will generate a lot of logs, so we don't
recommend doing this until you have reached this
step in the troubleshooting process.
You can monitor the Active Workspace Visualization Server system, including the Visualization Server
Manager, Visualization Servers, and the Visualization Pool Assigner, using a freeware Java Management
Extensions (JMX) client, such as Oracle Java Mission Control or JConsole. Monitoring these server
components with JMX is useful for identifying performance bottlenecks or other problems.
A JMX client installed on the same computer as the Visualization Server components automatically
detects all servers running on the machine. The information exposed by the visualization components is
presented using MXBeans.
To enable remote access for JMX clients, on the server you must configure authentication (users and
passwords) and encryption for the server process. Once remote access is enabled and configured, JMX
clients from remote machines can connect to the server.
For information about configuring remote JMX monitoring of server processes, see Monitoring and
Management Using JMX Technology in the Oracle Java SE Documentation.
Note:
JMX metrics can include the following composite data types with multiple values:
Each Visualization Server Manager hosts two MXBeans that contain information about its current state:
<poolName> and <poolName> monitoring. They are located in the Administer-<poolName>-
manager folder.
The <poolName> MXBean for the Visualization Server Manager provides the following information:
• CacheConfiguration
The configuration parameters used to connect the Visualization Server Manager to the Visualization
Pool Assigner.
• Language
The language within which the Visualization Server Manager is running.
• Load
A single ratio that represents how much of the computer’s capacity is currently in use. When this ratio
is greater than or equal to 1.0, the system is completely full and new clients are rejected.
• NumberOfAssignedServers
The number of Visualization Server processes in use or recently in use by client users.
• NumberOfColdServers
The number of Visualization Server processes in the process of starting up, although not yet ready for
use.
• NumberOfServers
The total number of Visualization Server processes (cold, warm, and assigned).
• NumberOfWarmServers
The number of Visualization Server processes ready for use by new client users.
• PoolID
The name of this Visualization Server Manager.
• PoolSpecificConfiguration
The configuration parameters passed in at startup to this Visualization Server Manager.
• StartupDate
The data and time that this Visualization Server Manager was last started.
The <poolName> monitoring MXBean for the Visualization Server Manager provides the following
information:
• accepting
Whether or not this server is currently accepting new incoming users.
• assignedServerCount
The number of VisView processes that are currently serving users with visualization functionality.
• assignedVisViews
Specific information about each of the VisView processes that are currently assigned to users.
• assignedVisViewsCount
The number of VisView processes that are currently assigned to users.
• computerCpuUsageRatio
A ratio indicating how much CPU usage is consumed or unavailable on this computer.
Note:
A ratio for Active Workspace MXBeans refers to a current usage value divided by the maximum
usage value. For example, a CPU usage of 30% is divided by the maximum of 100% to compute
a ratio of 0.3. All ratios in Active Workspace are between 0 and 1, unless the capacity of the
visualization system is exceeded, in which case the ratio is greater than 1.
• computerMemUsageRatio
A ratio indicating how much system memory is consumed or unavailable on this computer.
• computerNetworkUsageRatio
A ratio indicating how much network usage is consumed or unavailable on this computer.
• config
The configuration parameters passed in at startup to this server.
• dateCreated
The date and time that this Visualization Pool Assigner was last started.
• gpus
Specific information about each of the GPUs currently used by VisView processes.
• hostName
The name or IP address of the computer that this server is hosted on.
• languageID
The language that the server is currently running in. The default is English.
• loadRatioAbsolute
A ratio indicating how much of the computer’s resources is consumed or unavailable on this
computer.
• loadRatioRelative
A ratio indicating how much of the computer’s resources is consumed or unavailable on this computer
when compared to the maximum allowed resource-consumption-level (default of 0.7) of this server.
• maxBandwidthBytesPerSec
The maximum allowed bandwidth (in bytes-per-second) that this server is allowed to consume.
• numAssignmentsSinceStartup
The number of models that have used visualization system resources on this server.
• numGpus
The number of GPUs that the computer has.
• poolName
The alias defined by the administrator to identify this particular Visualization Server Manager.
• Prefers
The models preferred by this server.
• serverTooFullExceptions
When clients are refused visualization services, this contains the reason.
• serverTooFullExceptionsCount
How many clients were refused visualization services.
• serves
The models that this server has currently in memory due to requests from users.
• totalGpuMemMB
The total amount of system GPU memory on this computer.
• upTimeSec
How many seconds have elapsed since this server was last started.
• visSysCpuUsageRatio
A ratio indicating the CPU usage of this server on the computer.
• visSysGpuUsageRatio
A ratio indicating the GPU usage of this server on the computer.
• visSysMemUsageRatio
A ratio indicating the amount of system memory consumption of this server on the computer.
• visSysNetworkUsageRatio
A ratio indicating the amount of network usage of this server on the computer.
• warmServerCount
The number of VisView processes that do not yet have users but are ready to host visualization
services for new users.
• warmVisViews
Specific information about the VisView processes that do not yet have users but are ready to host
visualization services for new users.
• warmVisViewsCount
The number of VisView processes that do not yet have users but are ready to host visualization
services for new users.
Visualization Server
Each Visualization Server owned by the Visualization Server Manager hosts one MXBean that contains
information about its current state. The MXBeans for the Visualization Servers are called
VisView@PID_<processID>@Port_<port>. They are located in a folder called VisServers.
• ClientConnections
Information about each client user connected to this Visualization Server.
• DateCreated
The date and time that this Visualization Server entered a state where it was first made available to
client users (warm).
• Models
The IDs for the models that this Visualization Server is currently hosting.
• MsSinceLastEMM
The number of milliseconds since this Visualization Server last received a message from a client.
• Port
The port that this Visualization Server is currently hosting its socket server on for connections from
the Visualization Pool Assigner.
• ProcessCpuUsageRatio
The average amount of CPU usage that this Visualization Server has consumed on the Visualization
Server Manager computer over the last 20 seconds.
• ProcessGpu
General information about the GPU that the Visualization Server is using.
• ProcessID
Also known as the PID, this is the identifier that the operating system uses to denote this particular
Visualization Server.
• ProcessMemUsageRatio
The average amount of memory usage that this Visualization Server has consumed on the
Visualization Server Manager computer over the last 20 seconds.
• ProcessMyGpuMemUsageRatio
The average amount of GPU memory usage that this Visualization Server has consumed (of the
particular GPU that this Visualization Server is assigned to) over the last 20 seconds.
• ProcessNetworkUsageRatio
The average amount of network usage that this Visualization Server has consumed on the
Visualization Server Manager computer over the last 20 seconds.
• ProcessTotalBytesTransfered
The number of bytes that have been received and sent by this Visualization Server process (discounts
data downloaded from Teamcenter servers).
• ServletConnections
Information about each connection from the Visualization Pool Assigner.
• TotalNumEMMs
The number of client requests handled by this Visualization Server.
• UpTimeSec
The number of seconds that have elapsed since this Visualization Server was created.
Each Visualization Pool Assigner hosts two MXBeans that contain information about its current state:
Assigner and Assigner monitoring. The MXBeans are located in the Administer Assigner manager
folder.
Note:
You must configure the Visualization Pool Assigner to populate some of the JMX metrics with
meaningful information. For more information, see Configure the Visualization Pool Assigner
for JMX metrics.
The Assigner MXBean for the Visualization Pool Assigner provides the following information:
• AssignerSpecificConfiguration
The configuration parameters passed in at startup to this Visualization Pool Assigner.
• CacheConfiguration
The configuration parameters used to connect this Visualization Pool Assigner to any other
Visualization Pool Assigners in the Visualization Server system, and the configuration parameters used
to identify this Visualization Pool Assigner such that other nodes in the Visualization Server system
can connect to it.
• Load
A single ratio that represents how much of the computer’s capacity is currently in use. When this ratio
is greater than or equal to 1.0, the system is completely full and new clients are rejected.
• NumberOfPools
The number of Visualization Server Managers that this Visualization Pool Assigner is currently
connected to.
• NumberOfUsers
The number of client users who are currently connected to Visualization Server processes through
this Visualization Pool Assigner.
• StartupDate
The data and time that this Visualization Pool Assigner was last started.
The Assigner monitoring MXBean for the Visualization Pool Assigner provides the following
information:
• clientCount
The number of users that are connected to this server.
• clients
Specific information about the clients that have active sessions with this server.
• computerCpuUsageRatio
A ratio indicating how much CPU usage is consumed or unavailable on this computer.
• computerMaxBandwidthBytesPerSec
The maximum allowed bandwidth (in bytes-per-second) that this server is allowed to consume.
• computerMemUsageRatio
A ratio indicating how much system memory is consumed or unavailable on this computer.
• computerNetworkUsageRatio
A ratio indicating how much network usage is consumed or unavailable on this computer.
• computerTotalMemMB
The total amount of system memory on this computer.
• config
The configuration parameters passed in at startup to this server.
• dateCreated
The date and time that this Visualization Pool Assigner was last started.
• loadRatioAbsolute
A ratio indicating how much of the computer’s resources is consumed/unavailable on this computer.
• loadRatioRelative
A ratio indicating how much of the computer’s resources is consumed or unavailable on this computer
when compared to the maximum allowed resource-consumption-level (default of 0.7) of this server.
• poolCount
The number of Visualization Server Managers known to this server.
• poolManagers
Specific information about the Visualization Server Managers known to this server.
• serverTooFullExceptions
When clients are refused visualization services, this contains the reason.
• serverTooFullExceptionsCount
How many clients were refused visualization services.
• upTimeSec
How many seconds have elapsed since this server was last started.
• visSysCpuUsageRatio
A ratio indicating the CPU usage of this server on the computer.
• visSysMemUsageRatio
A ratio indicating the amount of system memory consumption of this server on the computer.
• visSysNetworkUsageRatio
A ratio indicating the amount of network usage of this server on the computer.
When you press the F12 key, a window displays the developer tools provided with your web browser.
You can use these tools to monitor browser activity when using Active Workspace.
Note:
These tools are not provided by the Active Workspace client. See your web browser documentation
for complete information about how to use the tools accessed with the F12 key.
By setting up user management you can control the functionality that is available to users who are
mapped to a specific role, thereby controlling the access to restricted data. To do this, you can create
groups for specific projects, and add users, or roles assigned as team members to the projects.
Example:
You want to set up the organizational structure for a project that requires an administrator, a
project manager, two designers, and two analysts. You first create a project and add a group to the
project. You then identify the users or create new users that you require for your project. Next, you
search for existing roles or create new roles required for the project. You then add the roles to the
group, and add users to the respective roles in the group.
Groups
In Active Workspace, the term group refers to a cluster of users who take on a role or multiple roles
in a group. Groups can be created to represent data ownership and to control data access. Projects
are created with specific groups, users, or roles assigned as team members, privileged team
members, and team administrators.
Typically, groups are defined along project lines and not functional lines. However, you can also
create groups of third-party organizations such as suppliers.
A group member can be a member of multiple groups. Groups make up the core of the organization
structure.
Example:
The high_performance group consists of 2 roles, that is, Engineering Manager and
Standards Engineer, and 2 users, namely, rgreen and mread, who are assigned their
respective roles.
Example:
Consider a scenario where you wish to restrict contractors from viewing any content in the
employee group. In this case, you can create subgroups abc and acme within a group such
that users from these subgroups will not have access to the content from any groups other
than their own.
Roles
A role defines the type of work a user is expected to perform in a group. Roles refine the group
definitions of your organization structure.
Tip:
While creating roles, use real-world descriptions, skills, and responsibilities.
Example:
Robert Green, a user, is assigned the default role of Engineering Manager. In addition to his
responsibilities as engineering manager, Robert must also perform standards-related work.
Therefore, user rgreen is assigned two roles in the high_performance group: Engineering
Manager and Standards Engineer.
Users
Users are individuals who interact with Active Workspace. A user is assigned to a default group and
takes on a role in the group.
Users can be assigned various roles in the organization. A user can also be part of multiple groups in
the organization.
Example:
Robert Green, a user, is assigned the default role of Standards Engineer and belongs to the
default group high_performance.
In Active Workspace, you can use the PEOPLE tile to create and modify users, roles, and groups and to
set up authorized access using login credentials for each user.
Note:
The PEOPLE tile is visible in both the Active Admin and Default workspaces. It may be visible in
the General User workspace.
You can create your own workspace mapped to a special group of non-dba group users and add
the PEOPLE tile to it. This allows users to perform admin work because privileges for dba group
users are too broad.
As a database administrator, you can create users and user roles specific to your organization. You can
then add the users and roles to a specific group to grant them authorized access to the application.
Create a group
• Name
• (Optional) Description
• (Optional) Security
• (Optional) To Parent
To create a subgroup for an existing group, select the parent group from the list.
3. Click Add.
Note:
You can also create groups in the Organization tab. To do so, in the Organization tab, click New
> Add, and follow similar steps to a create a group.
Create a role
2. In the Add panel, specify values for the Role and, optionally, a Description.
3. Click Add.
Create a user
• Name
• User ID
• OS Name
• Default Group
• Status
Note:
To create an active user, set Status = 0.
• License Level
Note:
The types of licenses available depends on your license agreement. For descriptions of the
available license levels, see your license agreement documentation.
0 (Base)
1 (Standard)
2 (Professional)
3 (Mockup)
• (Optional) Geography
• (Optional) Nationality
• (Optional) Citizenships
• Address
• City
• State
• Zip Code
• Country
• Organization
• Employee Number
• E-Mail Address
• Phone Number
• Locale
• Time Zone
3. Click Add.
1. In the Organization tab, select the group to which you want to add users.
• In Search, enter the name of an existing role, and select the required role from the search
results.
4. Click Add.
• In Search, enter the name of an existing user and select the required user from the search
results.
9. Click Add.
Tip:
If you add a role to a group, but do not assign any users to that role, it will not appear in the
Organization tree.
Managing users
4. Modify the user information and click Edit > Save Edits.
1. In the Roles tab, select the role for which you want to view the user activity logs.
1. In the Users tab, search for the user whose password you want to reset.
3. In the Change Password panel, enter a password in the New Password box.
5. Click Change.
Deactivate users
You can deactivate a specific user ID by modifying the status of the user. This user is retained in the
database and can be activated for future use.
Example:
Consider a designer who will be going on an extended leave of absence. Instead of deleting the
user from the project group, you can temporarily deactivate the user. Once the user is available,
you can set the status to active.
1. In the Users tab, search for the user whose status you want to modify.
1. In the Organization tab, search for the group from which you want to delete a user.
2. Click the group to view a summary of the roles and users that are included in the group.
3. In Roles, select the row that displays the user that you want to delete.
4. Click Remove .
The selected user is deleted from the group.
Managing roles
Edit a role
2. Click Open .
4. Modify the role name and description and click Edit > Save Edits.
Delete a role
Note:
You cannot delete a role that is referenced by another organization object.
1. In the Organization tab, search for the group from which you want to delete a role.
2. Click the group to view a summary of the roles that are included in the group.
3. In ROLES, select the row that displays the role that you want to delete.
Managing projects
Projects represent and control access to a particular collection of related data that may be accessible to
multiple organizations, such as project teams, development teams, suppliers, and customers.
Projects correlate groups of users, potentially at different physical sites, with the product data.
In Active Workspace, as a Project Administrator or Team Administrator, you use the PROJECTS tile to
manage your project teams. For example, you can add groups, roles, and users to your project by
selecting them from your organization.
Depending on your role, you can perform the following project-related tasks in Active Workspace:
Note:
You can designate multiple team administrators for
each project. This is often necessary to balance resource
management tasks for large projects.
Team Administrator Project team members with privileges to add and remove
project members.
Users in the Team Administrator role can:
Note:
You can designate multiple team administrators for
each project. This is often necessary to balance resource
management tasks for large projects.
Privileged team members Project team members with privileges can view their projects
and their team members. They can also assign or remove
objects from their projects.
Non-privileged team Project team members without privileges can view their
members projects and their team members.
As an administrator of a project team, you can select a project and view your team members. In
addition, you can add and remove users, roles, and groups.
• Project Administrator
• Privileged
• Non-privileged
Example:
In this example, when you expand the role, you see the user whose status on the project is
Project Administrator.
As an administrator, from TEAM MEMBERS, click Add to open Organization to search for a user,
select the user, and click Add to add the selected user to your project team.
Note:
To remove a user from the project, select the user and click Remove .
Example:
For example, from within Organization, you filter on Nora. Then, you select Nora and click Add.
As an administrator, from TEAM MEMBERS, click Add to open Organization to search for a role,
select the role, and click Add to add the selected role to your project team.
Note:
You cannot remove a user from a role. You must remove the role.
To remove a role from the project, select the role and click Remove .
Example:
In this example, from within Organization, you filter on Change Analyst. Then, you select the
role and click Add.
As an administrator, from TEAM MEMBERS, click Add to open Organization to search for a group,
select the group, and click Add to add the selected group to your project team.
Note:
You cannot remove a role or a user from the group. You can only remove the group.
To remove a group from the project, select the group and click Remove .
Example:
In this example, from within Organization, you filter on Test. Then, you select the role and click
Add.
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.
• 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
Destinaion Criteria.
A compound logical object is a logical object that references another logical object as a property source.
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.
The answer 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.
When viewing a logical object, use the Add command from the Included Logical Objects table.
Workspaces
With workspaces, you can create UI configurations independent of the Teamcenter organization.
Traditionally, Teamcenter uses Groups and Roles for user organization as a way to control data security,
command visibility, workflow tasks, and so on. In some cases, these Groups and Roles are defined by
corporate standards or maintained by LDAP and cannot be manipulated as needed to achieve the
desired security and UI configurability. In other cases, the work of configuring duplicate settings for each
group and role combination becomes redundant. Workspaces allow you to configure for a role or task
once, and assign it as needed.
Workspaces are part of a solution. The only solution currently defined is Active Workspace.
You can:
Best practice
The primary use of workspaces is to control the access that your users have to various pages and
commands within the Active Workspace client. The Default workspace, provided out-of-the-box, is an
inclusive workspace, meaning that it has access to all pages and commands by default. This workspace
is not meant for use in your production environment, but rather is provided so you can explore content
right away without having to do an initial configuration.
Siemens Digital Industries Software recommends that you create your own exclusive workspaces for
your users, with a task-based organization in mind. If you install Active Admin, it is an example of an
exclusive workspace designed for administrators. It limits the user's access to just a handful of
administrator-focused pages.
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": "TCAWWorkspace",
...
This file is also where you change the solution's default workspace by modifying the defaultWorkspace
entry.
Design Intent:
Siemens Digital Industries Software recommends against using the included inclusive workspace
(TCAWWorkspace) except for exploration and testing. Create and use only exclusive workspaces
in your production environment.
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.
{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 the 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.
Tip:
Workspaces only control the declarative interface. Any commands that are provided using style
sheets are not controlled in this manner and will still be available to the user. Be certain to review
your style sheets, and register special style sheets for your workspaces 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.
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 these commands. Similar to the pages, you can
include all commands from a kit as well 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 commands from that
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. However, a style sheet could still present them.
"excludedCommands": [
"Awp0SuspendTask",
"Awp0AbortTask"
]
Similar to the pages, you can include all commands from a kit as well by specifying kit:: in front of the
kit name.
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.
You use the export_wsconfig utility to export workspaces 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="mockTCAWAdminWorkspace">
<Workspace id="mockTCAWConsumerWorkspace">
<WorkspaceMapping default="true" group="WS_Consumer"
role="WS_Consumer"/>
<WorkspaceMapping group="WS_Admin" role="WS_Admin"/>
</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 one or more workspaces are set to default="true", then when a user logs in and sets their group
and role, the default workspace is picked in following order:
In the following example file, you create a workspace specifically for a customizer.
<Workspace id="myCustomizerWorkspace">
<WorkspaceMapping default="true" group="WS_Admin" role=""/>
</Workspace>
</Import>
In the following example, you import your custom file myws.xml, which contains your workspace
definitions.
You can associate XML rendering templates (XRT), also known as style sheets, to a workspace like 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, so you
need to make sure you get it correct.
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.
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. It will
produce strange results when you search for it. The only way to find them using the rich client is to
create a custom query designed specifically to find Awp0Workspace objects.
Since it 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 workspaces.
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, or simply use an
existing one.
You use the import_uiconfig utility to import your custom column configuration file.
In the following example, you import your custom file myui.xml, which contains your column
configuration definitions.
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. The user can remove their custom column configuration by using the Reset command
in the column configuration panel.
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 will have more functionality in future
versions, 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.
• 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>
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>
Allows you to insert HTML content into the panel.
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>
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
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.
Cut
localSelection = true (required)
You must provide a target to Cut which is passed by the UI when local selection is true.
<command commandId="org.eclipse.ui.edit.cut">
<parameter name="localSelection" value="true"/>
</command>
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, Paste, and Cut 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.
style
Controls font style for the label text, including font size, weight, name, and style (such as italic). The
format follows the CSS guideline, for example:
style="font-size:14pt;font-style:plain;font-family:Tahoma;font-weight:bold"
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
...
</page>
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.
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.
maxRowCount
The maximum number of rows displayed in the tableDisplay regardless of available vertical space.
sortby
Specifies the object property to sort the set of objects by prior to rendering.
The default value is object_string.
sortDirection
Specifies the direction in which the set of objects should be sorted. Valid values are ascending or
descending.
The default value is ascending.
filterable
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
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.
...
</objectSet>
frozen
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 following:
To check the value of a property on the selected object, use the real (database) name of the property in
the expression.
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:
You cannot add the same property multiple times in the same style sheet.
ATTRIBUTES
border
Determines whether the border is displayed. Valid values are true and false. This works only with
the titled style.
modifiable
Specify if the owning_user or owning_group property can be modified (true or false). For all other
properties, use a property rule instead.
isAutoAssign
Default: true
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.
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.
style
Control the font style for the label text, including font size, weight, name, and style (such as italic).
The format follows the CSS guideline, for example:
style="font-size:14pt;font-style:plain;
font-family:Tahoma;font-weight:bold"
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:
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
Give the table property a name.
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
EXAMPLE
Get more information about how table properties are not tables.
Active Collaboration is a social networking environment in Active Workspace that allows you to interact
with teams of people. The Collaboration tab in Active Workspace displays team interactions such as
comments, questions, and ratings.
To keep comments current, you may want to remove old commentary from item revisions, such as
questions, answers, comments, and ratings.
• Delete commentary.
Before you can configure Active Collaboration, you must install the features. Install the following from
the Features panel of Teamcenter Environment Manager (TEM):
Deleting commentary
To delete commentary objects (questions, answers, comments, ratings, and helpful objects) for item
revisions, use the s2clsocial_delete_utility utility.
Note:
If a commentary object is referenced by a noncommentary object, this utility cannot delete the
commentary.
Disable ratings
If you have Active Collaboration installed, you can rate objects as well as post questions and
commentary. However, ratings may not be applicable to all your data. To disable ratings, you can edit
the XML rendering style sheets where the ratings are defined.
1. To remove the ratings panel from pages, remove the xrtRatingsPanel element from the
*ShowObjectLocation XML rendering style sheets:
2. Remove the ratings element from the Overview tab. You can do this by performing either of the
following:
• Remove the inject statement from the Awp0ItemRevSummary style sheet and any other style
sheet where is referenced, for example:
• Remove the S2clScalarRatingOverview dataset from the system. Without the dataset, the inject
statement does nothing. This is probably the simplest method.
Active Content allows users to view occurrences and product structure in Active Workspace. The
Content tab in Active Workspace displays the content of a structure. Structures are added to the
search index by administrators.
If your organization has customized the structure data model, you may need to configure Active Content
to expose occurrences and product structure in Active Workspace.
Before you can configure Active Content, you must install the Active Content features. Install the
following from the Features panel of Teamcenter Environment Manager (TEM):
• Active Content
Installs the user interface elements for viewing structures in the Content tab in Active Workspace.
Select Active Workspace→Client→Active Content.
The Content tab displays the content of a structure. The following diagram shows the configurable parts
of the Content tab.
OccurenceManagementSubLocation.SUMMARYRENDERING. The
value of the preference is the name of the style sheet dataset to take
effect.
2 Occurrence cell Set the cell properties preference for the occurrence. Two examples
properties are the Awb0DesignElement.CellProperties preference and the
Arm0RequirementEelement.CellProperties preference.
3 Overview tab Use the summary style sheet of the associated element representing
the occurrence. For example, use the
Awb0DesignElementSummary.xml XML rendering style sheet file to
configure the Overview tab for any design related item revision and
use the Arm0RequirementElementSummary.xml file for
requirement revisions.
Tip:
To show the in-context search icon run the index on the BOM.
To view the Architecture tab, set the Awb0AvailableFor business object constant on the
Ase0ArchitectureFeature business object in the Business Modeler IDE. Set the
Awb0AvailableFor business object constant to list the business object types for which a feature
should be made available, for example:
Functionality,Fnd0LogicalBlock,RequirementSpec,Requirement,Paragraph,Fnd0SystemModel
Active Content Structure is an implementation-neutral interface for exposing occurrences and product
structure in Active Workspace. It encapsulates structure concepts in Teamcenter by providing an
interface and a run-time data model. Other models that are based on active content extend this
paradigm, for example, requirements management. The application data returned from these modules
is adapted to the active content data model before returning to the client.
Additional configuration is necessary if you customize the standard active content data model or any of
the modules that are based on it, for example, requirements management or systems modeling.
Active content supports several domains and the capabilities provided by the domains may vary by
versions and levels of customization. To accommodate these differences, a feature discovery mechanism
is provided. This is implemented as an awb0SupportedFeature property on the
Awb0ProductContextInfo object. This property defines the features supported for a configuration as a
list of run-time business objects. For example, when the Awb0FullTextSearchFeature is included in the
list, users can perform a full-text search on the structure.
To display your custom business object in the Content tab of Active Workspace, you must add it to the
Awb0SupportsStructure global constant in the Business Modeler IDE. This procedure also allows
instances of the custom business object to be returned by in context searches if the object is indexed,
and also adds the Add Element button for the custom object.
1. In the Business Modeler IDE, ensure the Active Content Structure template is loaded and then
open the Global Constants Editor.
3. In the Add dialog box of the Edit window, enter the name of the class corresponding to the first
custom object you want to display.
4. Repeat the previous step for each of the other custom objects you want to display.
5. Click Finish on both the Modify Global Constant and the Add Value dialog boxes to save the
additions.
Note:
On some systems, you may have to reopen each additional object in the Edit window and
resave the entry for each added item. Failure to save your entries on the first attempt does
not necessarily indicate they are incorrect.
6. To enable the custom objects to be returned by in context searches, set the Awp0SearchIsIndexed
business object constant to true on each custom object.
An LOV attached to the BOMLine property to which the Awb0Element property is mapped is not
automatically displayed in the Active Workspace Content tab. To display the LOV in the Content tab in
Active Workspace, you must attach the same LOV to the mapped Awb0Element property.
If you have custom business object types that have assembly children, the Content tab will not be
displayed by default for them. To get the Content tab to appear in this case, you must perform the
following steps:
1. Ensure that the corresponding custom business object type is listed under the
Awb0SupportsStructure global business constant.
2. Add the following page pertaining to the Content tab to the ShowObjectLocation Summary XRT.
3. If the ShowObjectLocation Summary XRT is not available, add a custom summary XRT for the
required business object. Then, add the preference for
Custom_BO_type.showObjectLocation.<SubLocation>. This maps the summary XRT to the
business object type.
Because Active Content uses intermediary objects to represent their underlying objects in the Content
tab, when you select one of these objects, you're actually selecting the intermediary object. Any
declarative functionality, like conditions for example, are based on that selected intermediary object.
However, there are many times when you will want the declarative client to base its decisions on the
underlying object instead. Command visibility is the most common example of this.
The shipped commands that are already available in the Content tab are already added to the
preference. As an Administrator, you can check them before adding new commands.
Users can view the shared effectivity associated to a structure in the Table view. The effectivity is shown
when the Table view is selected in the Overview tab. To view effectivity in the Table view, add the
following string in the Awb0ContentTableItemRevUiConfigCots.xml file:
<ColumnDef objectType="Awb0ConditionalElement"
propertyName="awb0ElementEffId" width="4000"/>
Set the PSEShowViewTypePref preference to True to display the View Type attribute in the BOMLine
title. Set the preference to False to hide the View Type attribute.
Set the PSE_default_view_type preference to specify the default view type for all users at the site. This
setting is most appropriately defined in conjunction with each user's role.
For example, for the users with the role of production engineer, the default view type can be defined as
Manufacture, and for those with the role of designer, it can be defined as Design.
Active content provides a number of business objects to represent the occurrences returned by the
various structure applications. Awb0Element is the root type and is abstract. The following table lists
the default active content types that represent occurrence types for BVR structures.
For structures that are not indexed, standard Teamcenter security is applied, for example, Access
Manager rule processing. When using indexing, Access Manager rules are included in the index as a read
expression.
For detailed information about setting ACLs, see Access Manager in the Teamcenter collection.
The Awb0Element business object and its subtypes have a Awb0BOMArchetypeToOccurrence type
constant. The value of this constant:
• Is a comma-separated list of item revision or GDE subtypes. Using such a list avoids the need to create
a separate Awb0Element business object for each item revision type.
For example, Awb0DesignElement has the value set to ItemRevision for this type constant.
Consequently, an instance of Awb0DesignElement is created if the BOM line represents item revisions.
By creating different object types of Awb0Element based on the archetype, the system controls the
visible properties by the domain. For example, for a requirement, the geometry specific properties are
not relevant and it can be mapped to Awb0ConditionalElement or a subtype.
Each subtype of Awb0Element may have an associated XRT style sheet containing the details of the
properties. You should not create a new subtype to represent each supported custom item revision.
Instead, if the custom item revision can be represented by a default type, consider modifying the
corresponding constant value.
Note:
This constant applies only to BVR models.
Awb0Element
Awb0ConditionalElement
Awb0Connection PSConnectionRevision
Awb0PositionedElement
Awb0DesignElement ItemRevision
Awb0Interface Interfaces
If you need to create a new subtype of Awb0Element to represent a custom subtype of ItemRevision,
note that ItemRevision has a discrete set of properties that may not be relevant. Instead, review the
table of the default Awb0Element subtypes and create a subtype of the Awb0Element subtype that
best matches your purpose.
For example, if your custom type has custom properties and also effectivity, create a subtype of
Awb0ConditionalElement. Alternatively, if it also has associated geometry information and must be
visualized, create a subtype of Awb0DesignElement instead.
The Awb0BOMToOccurrence type constant specifies the subtype of BOMLine that is mapped to a given
Awb0Element subtype. The subtype name specified as the value becomes the backing object for the
Awb0Element subtype and the properties are fetched from this type. The value is inherited by the
subtypes but can be overridden at any level.
For example, the value of this constant for Awb0DesignElement is specified as BOMLine. The value of
the properties is then fetched from BOMLine.
The Awb0SupportsStructure global constant controls the types that can be opened in the active
content explorer. This constant can take multiple values and each value is the name of a type that
supports structure. Only the names of types that are specified in this constant can be opened in the
explorer. The structure property is not inherited by subtypes, that is, you must add each subtype
separately.
By default, this constant includes ItemRevision, DesignRevision and PartRevision as the values. For
BVR structures, use the ItemRevision type as the value.
You can display the properties of the underlying object (called the archetype) in a structure element
object tile. For example, you can show the release status of an item revision on the tile of an element in
a structure using the following syntax: awb0Archetype.release_status_list.
For more information about defining object tiles, see Organizing your users' common destinations.
The packing action groups multiple identical components in one level of an assembly. It groups the
components that satisfy the packing criteria, which in turn is configured by setting the following
preferences.
• Configure the packing action to exclude or include the sequence number as the packing criteria by
specifying the BOMExcludeFromPackCheck preference.
Syntax: BOMExcludeFromPackCheck:seqno|none
• If this preference is set to seqno, BOMLines with the same sequence numbers are packed.
• If the preference is set to none, sequence numbers are excluded from structure line packing
checks.
• If only the property name is specified, then lines having the same value for the property are
packed.
• If the property name is followed by a colon, the string after the colon is the value when the pack is
not allowed.
Syntax: PSEAutoPackPref:0/1
A structure is duplicated (cloned) using the Save As or Revise command. The cloning action is either
executed at the Item Revision level or the Occurrence level. The site administrator must set the
Structureless preference to configure the duplication behavior at either the item revision level or at the
occurrence level. The default value of the preference is False and this implies item revision level
duplicate.
You can customize the duplication operation by implementing the following user exits to:
• Override the duplication for certain BOM lines, for example, standard parts, using the following pre-
process user exit.
/**
Gets the operation for a BOMLine during structure clone.
<br/>If @p use_default_operation is true, @p duplicate_operation will
be ignored.
Default opeartion configured by the system will be used.
<br/>If the user exit is not overridden, default opeartion configured
by the system will be used.
@returns
<ul>
<li>#ITK_ok on success.
<li>#BOM_invalid_tag if the @p bomline is invalid.
</ul>
*/
extern TCCORE_API int USER_bom_clone_get_operation(
const tag_t bomline,
/**< (I) BOMLine to get duplicate operation. */
bool* use_default_operation,
/**< (O) Use default duplicate operation for bomline. */
int* duplicate_operation
/**< (O) Duplicate operation for bomline. */
);
• Establish a post-process equivalence between the source and cloned lines using the following post-
process user exit. This user exit is invoked only once after the duplication process is complete. It
establishes a relationship between the source and the cloned structures.
/**
Processes cloned objects after clone operation is complete.
<br/>Customizers need to replace the base action for the user exit
BMF_USER_bomline_process_cloned_structure to address their business
needs.
</ul>
@returns
<ul>
<li>#ITK_ok on success.
<li>#BOM_invalid_tag if the @p cloned_top_item_rev is invalid.
</ul>
*/
extern BOM_API int USER_bomline_process_cloned_structure(
const tag_t cloned_top_item_rev,
/**< (I) Top Item Revision of the cloned structure. */
const int cloning_type,
/**< (I) Cloning type for clone operation. Expected values are:
<ul>
<li>#ITEM_REVISION_CLONE
<li>#BOMLINE_CLONE
</ul>
*/
const int n_source_bom_lines,
/**< (I) Number of BOMLines to be cloned. */
const tag_t* source_bom_lines,
/**< (I) n_source_bom_lines List of BOMLines to be cloned. */
const tag_t* cloned_occurrences
/**< (I) n_source_bom_lines List of cloned PSOccurrences. */
Note:
The USER_bom_clone_process_cloned_structure post-processor exit does not work. Use the
USER_bomline_process_cloned_structure post-process user exit for this.
Domain-specific occurrences contain properties relevant to the specific domain. End users understand
and interact with these domain-specific properties. These properties are mapped from the BOMLine or
ModelElement type onto the occurrence. This mapping is provided by property constants defined in the
Business Modeler IDE and the property constants are scoped to the Awb0Element type. Default
properties are provided on Awb0Element and its subtypes, but you can add custom properties
necessary for your implementation.
All custom properties must be mapped to a property defined on the type specified in the
Awb0BOMToOccurrence type constant. The property mapping is then achieved through the
Awb0BOMToOccurrence property constant. The value of this property constant is inherited and can be
overridden at any level.
For example, the awb0BoundingBox property on the Awb0PositionedElement business object has the
value of bl_bounding_boxes. It also has the value BOMLine for the Awb0BOMToOccurrence type
constant. Consequently, whenever the awb0BoundingBox property is requested on an
Awb0PositionedElement object, the value is fetched from the bl_bounding_boxes property of the
BOM line.
Awb0Element awb0ElementId
Default getter and setter methods are registered for all properties of Awb0Element and child business
objects that have a mapping defined in the Awb0BOMToOccurrence property constant. You must
provide a custom getter and setter for all properties that are not already mapped. For example, the
awb0NumberOfChildren property specifies the number of child elements and does not have a value for
the property constant; custom getter and setter methods are registered for it. You can use the same
mechanism to register getter and setter methods for properties on custom Awb0Element subtypes.
Many configured runtime properties on BOMLine are derived from Item, ItemRevision, or another
object. These are always of type string, irrespective of the type from which they are derived. Mapping to
such a property will result in losing the type information about the property that the system requires for
proper filtering of Solr results. To avoid this, instead of mapping to a configured runtime property, define
a new compound property on the backing object and use the relations or reference properties to get the
source property. This maintains the type information for the property so that it can be used in mapping.
For example, you may want to get the last modified date stored in the configured runtime property
bl_rev_last_mod_date on the BOM line. Instead of using the bl_rev_last_mod_date property, consider
the awb0RevisionLastModifiedDate compound property on the BOM line. This uses the bl_revision
property to access the item revision and you can get the last_mod_date property from there. An
awb0ArchetypeRevLastModDate property is defined on the Awb0DesignElement business object and
then mapped to the awb0RevisionLastModifiedDate property.
Teamcenter deletes background working contexts to free up disk space, according to their age and the
maximum number of allowed contexts per user. To control this clean up, set the following preferences:
• AWBBackgroundContextCleanupDays
Controls the maximum time working contexts are kept. For example, if this preference is set to 30
days, when a user opens a structure, all working contexts older than 30 days are deleted.
• AWBBackgroundContextMaxCountPerUser
Controls the maximum number of working contexts kept for each user. For example, if this preference
is set to 50, when a user opens a structure, the oldest working contexts from the set of that user’s
contexts beyond the limit of 50 are deleted.
The minimum valid value for the AWBBackgroundContextMaxCountPerUser preference is 1. The
users must set this preference to 1 or more.
These settings applies to all users and it is not possible to set a different cleanup period for individual
users.
Users can save a working context to share with other users, stakeholders, and collaborators. To enable
the sharing of a user’s saved working context, the system administrator must add the Has
Class( Awb0SavedBookmark ) rule to the Access Manager (AM) rule tree.
You can add the rule using the rich client. Rules are evaluated based on their placement in the tree
structure. Therefore, the location of the rules in the rule tree is important.
1. Add the Has Class( Awb0SavedBookmark ) rule and set the Condition, Value, and ACL Name as
follows:
Active Workspace users can review the active or closed changes associated with any structure. To enable
the highlighting of the changes with red strikethroughs or in italicized green text, the system
administrator must set the AWC_Enable_RedLine_feature preference to TRUE.
TC_Config_Rule_Name specifies the default revision rule for structures. Set the
AWBUseDefaultRevisionRule preference to True so that the configuration panel uses the existing
TC_Config_Rule_Name as the default revision rule.
To allow full text search of structures, mark the Awb0Element types and their properties for indexing in
a similar way to how you identify properties from related objects for object searches. To index a
property, set the Awp0SearchIsIndexed property constant to true, and also set the
Awp0SearchIsIndexed business object constant of the type on which the property is created to true. If
filtering is required on the property, set the Awp0SearchCanFilter property constant to true.
For BVR structures, Active Workspace provides two adapters, one using a BOM window (BOM line) based
API and the other an indexed adapter. The indexed adapter uses the configured structure stored in the
database for faster access. Only structures that use the index adapter can utilize the full text structure
search capabilities.
In Active Workspace, you can specify if a structure is precise or imprecise by editing the top line of the
structure from the Properties panel and selecting the Precise property. The default value is Imprecise.
If you do not see the Precise property for an element such as a logical block, you must edit the XRT of
that element and add the following property under the tc_xrt_Properties section:
<property name="awb0IsPrecise">
Note:
To set the default value for newly created product structures as precise, change the value of the
TC_BOM_Precision_Preference preference to Precise. (The default value is Imprecise.)
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
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 collection.
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 collection 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 collection 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.
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 collection 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 requestor, 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 define attributes to make an object easy 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 that support 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 your own eCl@ss-compliant
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 traditional Classification, see Classification and Classification Admin in the
Teamcenter help collection.
To best plan implementing search for your users, see the Administering Search Guidemap in the
Teamcenter help collection.
• To find out more about classification standard taxonomy, see Configuring Active Workspace and What
is classification standard taxonomy?.
I want to ...
If you have a classification hierarchy in Teamcenter rich client and begin using Active Workspace, you
must first install classification for Active Workspace and configure the search before your class hierarchy
is visible and your data is searchable.
The CLASSIFICATION tile on the Home page opens the classification location where you can browse the
hierarchy and search within classes. The tile is installed automatically if you install libraries or
classification standard taxonomy. If, however, you only install traditional classification, you must enable
this tile separately.
A basic installation of traditional classification with the CLASSIFICATION tile provides you with visual
navigation cards for browsing in the classification location.
Display only the branches of the classification hierarchy that relate to my project
The Library Management feature allows you to display only select areas of the classification hierarchy
that are relevant to the work at hand.
If you are just starting with classification and do not already have a traditional classification hierarchy,
you can install classification standard taxonomy (CST) directly.
When classifying an object in the user interface, using artificial intelligence, Active Workspace can
provide suggestions of classes that may be suitable for classification.
If you have a class hierarchy and data in rich client, you can expose these for classifying and searching in
Active Workspace.
The Classification tile on the Home page opens a dedicated location to browse the classification
hierarchy.
After installing classification or after adding data (classes, views, properties), you must enable searching
for the data.
1. Create search index views and choose properties by which to search and filter
Each property for which you want to search must be contained in a search index view.
Because you changed the hierarchy by adding search index views, you must regenerate the schema
files.
Create search index views and choose properties by which to search and
filter
1. In Teamcenter rich client Classification, verify that classified data is available. Classification should
contain a structure of classes with attributes and classified objects.
2. Choose one of the following to define the classification properties you want to index.
• To select all classes, attributes, and filters, run the smlutility utility. For example, from a
Teamcenter command window, type:
A search index view is created for each class in Classification Admin. All attributes of the class are
assigned to the view. You can only run this command once for a class.
b. In the Teamcenter rich client Classification Admin, the Add View operation now includes
the Search Index View option.
Class attributes for these classes are not yet configured for indexing or filtering.
For a class to be available for indexing and filtering, the class must contain a search index
view, at least one attribute, and at least one classified object.
c. In Teamcenter rich client Classification Admin, select the search index view for a class and
select the View Attributes tab.
d. Add all attributes that you want included in the indexing to the View Attributes list.
You cannot add linked attributes to search index views, since these attributes can be
directly searched via the object properties they are linked to.
e. Individually, in the View Attributes list: select an attribute, choose Edit Current Instance
, select the Filter check box, and click Save Current Instance.
The Filter property indicates that the attribute is to be available in the Filter list in Active
Workspace.
For example, in a Teamcenter command window, change to the tc_root\bin directory and type:
a. Verify that the tc_solr_schema.xml file in the TC_DATA\ftsi\solr_schema_files folder has the
current date and time.
b. Open the tc_solr_schema.xml file in a text editor and search for 0Y0_CLASSIFICATION_0Y0.
You should find several lines containing this string. Close the text editor without saving.
4. Merge the Teamcenter and Solr schemas. For example, in a Teamcenter command window, change
to the tc_root\solr-version directory and run this utility:
TcSchemaToSolrSchemaTransform "%TC_DATA%\ftsi\solr_schema_files
b. Open the schema.xml file in a text editor search for 0Y0_CLASSIFICATION_0Y0. You should
find several lines containing this string. Close the text editor without saving.
The following procedure sets up general indexing and helps you troubleshoot the indexing of
classification objects. If general indexing is set up and correctly functioning for the creation of objects in
Active Workspace, the indexing mechanism described here includes classification authoring activities
(such as classifying an object or deleting a classification). If, however, you use traditional classification
and make changes to the search index views (such as adding or removing a search index view from a
class or adding or removing properties from a search index view), you can use classification delta
indexing to pick up only these changes and prevent you from having to re-index all of your data.
This step causes indexing logs to be saved and must be performed before you index.
After you index, you can check whether the indexer found new objects.
runTcftsIndexer -task=objdata:clear n
Enter option 4 to clear the indexer cache, the Solr index, and the objdata indexing records:
-task=objdata:clear 4
runTcftsIndexer -task=objdata:index
Each time you modify existing classification classes or views, or create new ones on top of them,
you must update your template, merge the schema files, and re-index the search data.
a. Check the date and time of the log file located in the tc_root\TcFTSIndexer\logs folder.
b. The TcFTS indexer follows a specific sequence which is displayed in the window running the
indexer. For example:
...
Query found 18 objects in 0.556 seconds ***
Export of 18 objects in (secs): 2.989 ***
Transform time (sec) 0.942 ***
Load time (secs): 0.37 seconds ***
Query found 15 objects in 0.406 seconds ***
Export of 15 objects in (secs): 2.543 ***
Transform time (sec) 0.842 ***
Load time (secs): 0.27 seconds ***
...
• Query — The indexer examines the object types to be indexed and determines what has
changed. Changes include created, modified, or deleted objects.
• Transform — The indexer transforms the tcxml_<number>xml file into Solr format
creating a solr_<number>xml file. Both files are placed in the tc_root\TcFTSIndexer
\working\TcFtsIndexer_objdata\<number>\result folder.
• Load — The indexer loads the changes into the Solr database. The Solr data can then be
displayed in the filter dialog box in Active Workspace and Teamcenter Manufacturing
Access.
classified object. For example, if you classified something with the attribute name=Face mill,
then you can search for Face mill in the XML files. If it is there, indexing was successful.
Note:
Reindexing is required because you changed the schema. From this point forward, changes
to your data can be captured by scheduling regular syncing of the database with the
runTcftsIndexer command.
The search index views in traditional classification define which classes and properties are searchable in
Active Workspace. If you make any changes to these views, you must update and merge the schema file
and index the data. Indexing all data can be very time-consuming. To perform this task more quickly,
you can index only the changes made in the search index views. Changes in the search index view that
require indexing are:
This procedure assumes that regular Active Workspace indexing is running and synchronizing on a
regular basis.
Running this utility using the dryrun option displays the objects that will be marked for indexing in
the next step. Scanning this output can assist you in troubleshooting the indexing of your data.
This step marks the changes found for indexing. Once marked, these objects are picked up in the
next regular indexing synchronization flow.
This example demonstrates how to configure the search in Active Workspace when using traditional
classification.
In rich client, there is the following classification hierarchy containing two abstract classes (Machines
and Tools) and each of those classes contains two storage classes. Each storage class contains one
classified object.
After installing the client and server components of Active Workspace, the Classification tab is now
visible:
However, trying to search for a machine that is classified using one of its properties returns no search
results:
To enable searching:
2. For each property , select the Filter attribute and save the view.
Note:
This example works through a simple use case. When performing these activities for
production data, use the smlutility utility to create the Search index views.
Now, when you search for the Supplier property in Active Workspace, the data is found. The
classification class and the properties are displayed in the Filter list in Active Workspace:
The presentation layer provides more flexibility than the traditional classification storage hierarchy. It
serves as the basis for implementing other classification features such as classification standard
taxonomy (CST) and classification libraries. It provides the ability to deal with traditional classification
features (such as creating a class hierarchy, adding classification objects to a classification hierarchy,
classifying workspace objects, searching for classification objects, and modifying and deleting objects
from a classification hierarchy) and CST and library features simultaneously.
Additionally, installing the presentation layer adds the Classification tile to the home page and allows
you to configure visual navigation cards for searching.
• In Teamcenter Environment Manager, navigate to the Features page and select Base Install > Active
Workspace > Server Extensions > Reuse and standardization > Next Generation Classification
Server and complete the installation.
1. Extend classification data to the presentation layer by running the following command line utility:
This command extends the classification subhierarchy under the specified group or class.
• For classification groups, running this utility creates presentation layer group nodes with the
same ID as the associated groups.
• For classification classes, running this utility creates presentation layer master nodes with the
storage_class_type property corresponding to their associated classes.
• -include_instances
Includes ICOs in the subhierarchy.
• -exclude_children
Excludes the subhierarchy. It extends the specified group or class only.
Use one of the following methods to synchronize the presentation layer with the underlying
classification hierarchy:
• If a target is not found in the presentation hierarchy, it is created (applies to node or element).
■ To create a node in the presentation hierarchy, Teamcenter matches the parent node with the
parent class.
■ To create an element in the presentation node, Teamcenter matches the node with the storage
class.
■ A master node with the storage class type property pointing to the associated classification class
Visual navigation cards (VNCs) allow the display of larger images while viewing the selected level in the
classification node hierarchy. The images displayed in the VNCs reflect the class image stored in the
database.
Tip:
To make optimal use of the image space on the VNC, create a square class image. Rectangular
images are cropped.
VNCs are always visible for authoring. The classification location displays VNCs regardless of the
classification features you have installed (whether you have only traditional classification or additionally
the presentation layer). When searching, however, you must have the presentation layer installed and
the classes extended to the presentation layer (and indexed) to see visual navigation cards.
Define the properties displayed on tiles by configuring the following business objects:
• To configure visual navigation cards for the classification hierarchy, configure the Cls0HierarchyNode
business object.
This business object is available after installing the presentation layer (Next Generation
Classification).
These business objects are available after installing classification libraries (Classification Library
Management).
Attributes are referred to as interchangeable if you can search for the value of one and the results list
other attributes in the group. For example, if length, width, and height are set to Interchangeable,
you can search for length=10 and the results return all objects with length=10, width=10, and
height=10.
For example, to define two attributes whose IDs are 10000 and 10001 as interchangeable, set the
preference value as follows:
10000:10001
10001:10000
To define three attributes as interchangeable whose IDs are 10000, 10001, and 10002, set the
following value:
10000:10001, 10002
10001:10000, 10002
10002:10000, 10001
The search similar feature finds the filters of objects and presents them. By modifying these facets, you
can find other objects with similar properties.
There are two types of properties that you can enable for the search similar feature:
• Classification properties
Classification properties for the search similar feature are enabled using any of the following
methods:
• In rich client, in the Search index view of a class, select the Search Similar option for each desired
attribute.
• To enable the search similar feature for all properties in all classes, type the following:
smlutility -update_indexing_views -searchSimilar
This enables the Search Similar option on all properties in every Search Index view that have the
Filter option checked.
• To enable or disable the search similar feature for selected attributes in every class containing a
Search Index view, add the -attrids= argument. To disable an attribute, add an exclamation mark
before the attribute ID:
smlutility -update_indexing_views -searchSimilar -attrids= attr1, !attr2,attr3
• To enable or disable the search similar feature for selected classes, add the -classids= argument.
smlutility -update_indexing_views -searchSimilar -attrids= attr1, !attr2,attr3
classids=class1,class2
{
"SchemaVersion": "1.0.0",
"Classes": [
{
"ID": "classA",
"Enabled": [ "1" ],
],
"Attributes": {
"Enabled": [ "4", "5" ],
"Disabled": [ "6" ]
}
}
• Enables attributes 4 and 5 in all classes containing a Search Index view and having the Filter
option set on both of these attributes.
For more information about the syntax of the JSON file, see the following schema file.
...\TR\data\classification\json\JSON-schema-version\SearchSimilar.schema.json
To use CGM or DWG file formats as class graphics, you must first convert them to PDF using the prepare
utility delivered with the Lifecycle Visualization installation.
1. Run the Lifecycle Visualization installation, and select the Convert and Print option.
2. Copy the CGM or DWG file to the VVCP directory in the installation location.
4. Run the utility to convert the CGM or DWG files to PDF. For example, for a file named
my_drawing.dwg, enter the following:
This converts the my_drawing.dwg file and creates the my_drawing.pdf file in the VVCP
directory.
You can add path names to change the input and output directories.
5. Associate the PDF to the required class in Classification Admin (rich client).
"classiBOM": {
"iconName": "Classified",
"tooltip": {
"showPropDisplayName": false,
"propNames": ["ics_classified"]
},
"modelTypes": ["Awb0DesignElement"],
"prop": {
"names": ["awb0UnderlyingObject"],
"type": {
"names": ["ItemRevision"],
"prop": {
"names": ["ics_classified"],
"conditions": {
"ics_classified": {
"$eq": "YES"
}
}
}
}
}
}
Upgrade classification
After upgrading Teamcenter or Active Workspace, or adding any (classification) features in Teamcenter
Environment Manager, you must do the following (if not already done for regular object indexing):
If you make any changes to the traditional classification hierarchy, you must:
The classification standard taxonomy (CST) is a framework that supports using standardized
classification hierarchies and data so that classification data can easily be shared between customers
and suppliers. In particular, this framework supports the eCl@ss standard that describes products and
services across a wide range of industries through the use of classes and properties with unique
identifiers.
For more information about the eCl@ss standard, visit their website:
https://www.eclass.eu/en.html
Teamcenter eCl@ss Data Management introduces the CST to support eCl@ss structures. CST classes are
available in the classification hierarchy, and if desired, alongside traditional classification classes (ICS) to
classify your data. Using Teamcenter eCl@ss Data Management, you can import and export eCl@ss-
compliant data.
The classification standard taxonomy objects and concepts have different nomenclature than the eCl@ss
objects.
http://wiki.eclass.eu/wiki/Category:Structure_and_structural_elements
IRDI IRDI ID
Aspect Aspect --
1. Run TEM and select the Classification Standard Taxonomy support (found in the Features
section under Extensions→Reuse and Standardization).
When you select this option, the Next generation Classification foundation option is
automatically selected as well. This option installs the presentation layer.
Note:
If your environment contains both SML classes and CST classes, see Classify with CST and ICS
simultaneously.
2. Make the node hierarchy (presentation layer) visible in the Active Workspace user interface by
creating the following user preference:
CLS_is_presentation_hierarchy_active=true
Being able to turn the visibility of the node hierarchy on and off per user allows users of both
traditional classification and CST to classify objects in the same environment. Depending on the
setting, a user can see either the traditional classification classes or the CST classes.
Note:
CST classes are not subject to access control. Therefore, if your environment contains both CST
and traditional classification classes, if the presentation hierarchy is not active
(CLS_is_presentation_hierarchy_active=false), CST classes are displayed in the search results for
traditional classification users.
Classification standard taxonomy features (CST) are available with a regular classification authoring
license. Reading, authoring, and browsing of a custom CST hierarchy is possible. If, however, you
download and use hierarchy data from eCl@ss, you require a cls_eclass_user named user license. With
this license, you can perform create, update, and delete operations on an eCl@ss hierarchy and data.
For complete information about licenses required, contact your Siemens Digital Industries Software
representative.
IRDI
The International Registration Data Identifier (IRDI) originates from the eCl@ss standard. This
identifier is used by the classification standard taxonomy to uniquely identify all classes, properties,
and key-LOVs. Most importantly, using an IRDI supports:
• Unique namespaces
• Revisioning
aaaa...a#bb-cccccc#nnn
Example:
XMPL#01-CLS001#001
Where:
IRDI Description
components
IRDI Description
components
# Separator character
bb Data type
01: class
02: property
Node hierarchy
The classification hierarchy consists of nodes of differing types.
• A master node references an application class that holds data. Master nodes can have other
master nodes as children.
• Application class
An application class is referenced by nodes and can be used to store data. They hold the
properties used to define the class. An application class can reference properties and aspect
classes.
• Aspect class
An aspect class groups properties that pertain to overarching aspects of many objects and can be
reused across multiple object types. They often group such parameters as commercial
information, for example, supplier contact information, that have nothing to do with product
definition. Aspect classes can only be referenced directly by application classes.
Key list of values
A key list of values (key-LOV) holds selection lists.
• String
• Integer
• Double
• Boolean
• Reference
Reference property types point to another object such as a key-LOV definition or a property block
class.
Classification object
An internal classification object (ICO) is used to classify Active Workspace data.
View
Used to display all or a subset of the properties in a class in the user interface. There are two types
of views used in classification classes:
• Base view
The classification standard taxonomy (CST) is displayed through a hierarchy of groups containing master
nodes that reference classes in which data is stored. This hierarchy is referred to as the presentation
layer (the installation option is called Next generation Classification foundation).
The presentation layer does not actually store the classes. It references classes that are stored in the CST
layer. A node in the hierarchy can hold a reference to a class that stores data. Group nodes are used for
organizational structure, and master nodes reference application classes in the CST layer. The CST layer
also stores properties and key-LOVs. Classification data is stored in the Teamcenter server layer.
The significance of this architecture becomes apparent when understanding how CST and traditional
Classification (SML) work together.
Classifying objects functions in the same manner for both the traditional classification classes. and
classification standard taxonomy (CST) classes.
CST classes offer more options for filtering data and adding property values because they can contain
property blocks, cardinality, and polymorphism.
Note:
You cannot classify an object multiple times when using CST classes.
Cardinality on property blocks allows a user to specify the number of times that a property block class is
used in an application class. For example, when designing a power supply for mobile devices, there is a
class called Power supply containing two properties, Designation and Type. The number of times you
can enter a designation and type depends on the value of a third property, Number of slots.
In the user interface, you first specify the number of slots , and then, for each slot, specify a
designation and type.
About polymorphism
Polymorphism refers to the idea of displaying different sets of properties depending on the value of
another property. For example, when designing a power supply for mobile devices, two types of power
supplies are produced with the following connector types:
Regular Deluxe
USB USB
Lightning Lightning
USB-Type C
Thunderbolt
The set (property block class) of connector types (properties) displayed depends on a property called
Type of power supply (key-LOV). This property is referred to as the polymorphism controller. On the
user interface, this is displayed as follows. A user can choose between a Regular or a Deluxe power
supply and the properties displayed vary.
• Develop
• Released
• Retired
• When you create a new object and do not specify a release status, it is automatically assigned the
Develop status. You can also specify the status explicitly:
This means the class is in a draft state. You can still modify it, for example, by adding or removing
attributes in a class, but you cannot yet use it to classify data.
• Once the editing work is complete, you change the status of the object to Released using the
clsutility command line utility as follows:
{
"SchemaVersion":"1.0.0",
"Options":["recursive"],
"Status":"Released",
"ObjectIRDIList":
[
"TDOC#01-CLS001#001"
]
}
Running the utility using the recursive option changes the status of the CLS001 class, as well as all
the objects it references (properties, key-LOV definitions, blocks, aspects) from Develop to Released.
Note:
Nodes do not have a status and cannot be used to change the status of the application classes
they reference.
A Released class is available in the user interface to classify your data. Released classes cannot be
modified.
• If you create a new revision of a class, the status of the previously existing revision is automatically
changed to Retired. All classified objects in the Retired class are automatically moved to the
Released class, with the exception of those that are already released.
• All revisions are imported with three digits, for example, 001. If revisions are less than three digits,
zeros are prefixed up to three digits so that 01 becomes 001. If you then search for revision 01, it is
not found.
After releasing a class, you must create a base view definition of the class. This improves the
performance of the system and allows you to modify the order of presentation of the class properties.
About aspects
An aspect is an eCl@ss object that represents a group of properties. In classification standard taxonomy
terms, an aspect is a kind of block class that can be referenced directly by another application class
without going through a block property first.
Example:
The two class attributes, Front seat and Rear seat, in the application class reference block properties
that, in turn, reference property block classes. The third class attribute, Manufacturer Info, references
the aspect class directly. The aspect class groups the properties pertaining to the manufacturer in one
class.
The application class that references the aspect class is described as follows:
Caution:
• When importing classes with aspects, you must first import the JSON file containing the aspect
classes. Next, you import the application class that references the aspect. You cannot import
these two types of classes using the same JSON file.
You create a CST hierarchy in Active Workspace by importing a series of JSON files containing both
hierarchy and data. The schema files defining the JSON format and example files are in the following
directory:
...\TD\classification\json\1.0.0\schema
1. Key-LOV definitions
2. Property definitions
3. Class definitions
Adhering to the import principle of only being able to reference objects that are already in the database,
when importing classes that reference other classes (for example, when importing aspects), you must
import the referenced classes first, and then, in a separate JSON file, import the referencing classes.
Data is imported from JSON files using the clsutility utility. In general, the syntax of this utility is:
For more information about the available commands and their exact syntax, type clsutility -h for the
top-level help and clsutility -command-name -h for information about each available command.
The following table lists the supported objects and an example of the clsutility statements used to
import these object types.
Class definition Import clsutility -u=user -p=password -g=group -create -class_definitions -request="path-to-
JSON-file"
Application data Import clsutility -u=user -p=password -g=group -create classification_objects -request="path-
(ICOs) to-JSON-file"
Note:
There are pairs of very similar commands in the clsutility: classification_objects and
classification_object, or node_definitions and node_definition. Be sure to use the plural forms
of these commands (objects and definitions) for all CST imports. The singular refers to traditional
classification objects.
This example walks you through creating and importing the JSON files required to describe a class
containing attributes that allow you to configure the seats in a car. The example consists of several
levels of complexity:
• Classify a car in a class containing simple properties, for example, a key-LOV with the type of seat
(front seat or back seat).
• Specify the attributes shown depending on the type of seat selected (polymorphism).
• Specify the attributes shown for each seat when specifying multiple seats (cardinality and
polymorphism).
For each of these examples, the JSON files are explained, as well as the clsutility commands required to
import the JSON files.
To verify that the definitions in the following examples are correct or to create additional definitions,
consult the following schema files found in ...\TR\data\classification\json\desired-release:
• Classification_Save_KeyLOVDefinitions_Request.schema.json
• Classification_Save_PropertyDefinitions_Request.schema.json
• Classification_Save_ClassDefinitions_Request.schema.json
• Classification_Save_Nodes_Request.schema.json
• Classification_Save_PropertyRecords_Request.schema.json
There are many online JSON validators to assist you in creating JSON files with the proper syntax. We
recommend using any of these to verify the JSON files that you create prior to importing them.
• The definitions are imported with a release status of Develop. This ensures that you can still modify
them if required. When you are satisfied with the structure and classes, you must change the status to
Released. Objects can be classified only in Released classes.
• The TDOC name space is used to differentiate the structures imported in this example from other
structures that you use. Creating your own name space helps when creating queries.
Tip:
Although the hierarchy is displayed in the user interface as soon as you import JSON files, IRDIs are
not displayed anywhere in the user interface. To assist you in viewing the IRDIs of objects that you
import, use the clsutility -list -hierarchy command.
The simplest use case is to import a class containing properties. This example shows how to import a Car
class containing three properties:
• Type of seat
A key-LOV with two entries: Front and Back
• Manufacturer
A simple string property
• Adjustable headrests
A boolean property
The order when importing this class is to first import the key-LOV definitions, then the property
definitions, then the class definition, and finally the node definition so that the class is visible in the
classification hierarchy.
In classification standard taxonomy, a key-LOV definition is separate from its property definition.
In this example, there is one key-LOV whose JSON definition is stored in a file titled
simpleKeylovDef.json:
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"KeyLOVDefinitions": [
{
"ObjectType": "09",
"Namespace": "TDOC",
"ID": "KEY001",
"Revision": "001",
"Name": "Type of seat",
"Status": "Develop",
"LOVItems": {
"DataType": "String",
"LOVStringItems": [
{
"StringValue": "R",
"DisplayValue": "Rear Seat"
},
{
"StringValue": "F",
"DisplayValue": "Front Seat"
}
]
}
}
]
}
In this example, there are three properties to import, one of which (Type of seat) is a key-LOV that
references the key-LOV definition imported in the previous step. The JSON definition for the
properties is stored in a file titled simplePropDef.json:
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"PropertyDefinitions": [
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP001",
"Revision": "001",
"Status": "Develop",
"Name": "Type of seat",
"DataType": {
"Type": "String",
"KeyLOV": "TDOC#09-KEY001#001"
}
},
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP002",
"Revision": "001",
"Name": "Manufacturer",
"Status": "Develop",
"DataType": {
"Type": "String"
}
},
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP003",
"Revision": "001",
"Name": "Adjustable headrests",
"Status": "Develop",
"DataType": {
"Type": "Boolean"
}
}
]
}
The Car class contains only three properties: Type of seat, Manufacturer, and Adjustable
headrests:
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"ClassDefinitions": [
{
"ObjectType": "01",
"Namespace": "TDOC",
"ID": "CLS001",
"Revision": "001",
"Name": "Car",
"Status": "Develop",
"IsAbstract": false,
"UnitSystem": 3,
"ClassType": "Application Class",
"ClassAttributes": [
{
"Type": "Property",
"Reference": "TDOC#02-PRP001#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP002#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP003#001"
}
]
}
]
}
4. Import the node definition that makes the class visible in Active Workspace.
To import this hierarchy, create the following JSON file and name it simpleNodeDef.json.
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"NodeDefinitions": [
{
"Namespace": "TDOC",
"ID": "CSTAE0",
"Revision": "001",
"Name": "Automotive Engineering"
},
{
"Namespace": "TDOC",
"ID": "CSTAA0",
"Revision": "001",
"Parent": {
"Namespace": "TDOC",
"ID": "CSTAE0",
"Revision": "001"
},
"Name": "Assemblies"
},
{
"Namespace": "TDOC",
"ID": "CSTAA1",
"Revision": "001",
"Parent": {
"Namespace": "TDOC",
"ID": "CSTAA0",
"Revision": "001"
},
"Name": "Cars"
},
{
"Namespace": "TDOC",
"ID": "CSTAA2",
"Revision": "001",
"Parent": {
"Namespace": "TDOC",
"ID": "CSTAA1",
"Revision": "001"
},
"Name": "Simple Car",
"ApplicationClass": {
"Namespace": "TDOC",
"ID": "CLS001",
"Revision": "001"
}
}
]
}
Definitions are imported using the clsutility utility. Run each of the following commands in a
Teamcenter command window:
Frequently, there is a group of properties that is always used together. For example, the following set of
properties describe a front seat and a rear seat:
Material Material
Color Color
Lumbar support
Heated seats
Each time you create a class, you could manually add each of these properties to the class to describe
each of these seat types. However, it is easier to group them and select a single property called Front
seat that contains all the required properties. This set of properties is called a property block. A property
block is a special kind of class.
Property blocks are referenced by block properties which, in turn, are referenced in the application class
containing the block properties:
To create the JSON files required to import these classes and properties:
Create the following JSON file and save it in a file named blockPropDef.json as follows:
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"PropertyDefinitions": [
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP004",
"Revision": "001",
"Status": "Develop",
"Name": "Material",
"DataType": {
"Type": "String"
}
},
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP005",
"Revision": "001",
"Name": "Color",
"Status": "Develop",
"DataType": {
"Type": "String"
}
},
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP003",
"Revision": "001",
"Name": "Adjustable headrests",
"Status": "Develop",
"DataType": {
"Type": "Boolean"
}
},
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP006",
"Revision": "001",
"Name": "Electrically adjustable seats",
"Status": "Develop",
"DataType": {
"Type": "Boolean"
}
},
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP007",
"Revision": "001",
"Name": "Lumbar support",
"Status": "Develop",
"DataType": {
"Type": "Boolean"
}
},
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP008",
"Revision": "001",
"Name": "Heated seats",
"Status": "Develop",
"DataType": {
"Type": "Boolean"
}
},
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP009",
"Revision": "001",
"Name": "Rear seat entertainment system",
"Status": "Develop",
"DataType": {
"Type": "Boolean"
}
},
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP010",
"Revision": "001",
"Name": "Front seat",
"Status": "Develop",
"DataType": {
"Type": "Reference",
"BlockReference": "TDOC#01-CLS002#001"
}
},
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP011",
"Revision": "001",
"Name": "Back seat",
"Status": "Develop",
"DataType": {
"Type": "Reference",
"BlockReference": "TDOC#01-CLS003#001"
}
}
]
}
The last two properties, PRP010 and PRP011 reference the two property block classes that hold the
sets of properties.
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"ClassDefinitions": [
{
"ObjectType": "01",
"Namespace": "TDOC",
"ID": "CLS002",
"Revision": "001",
"Name": "Front seat",
"Status": "Develop",
"IsAbstract": true,
"UnitSystem": 3,
"ClassType": "Block",
"ClassAttributes": [
{
"Type": "Property",
"Reference": "TDOC#02-PRP004#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP005#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP003#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP006#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP007#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP008#001"
}
]
},
{
"ObjectType": "01",
"Namespace": "TDOC",
"ID": "CLS003",
"Revision": "001",
"Name": "Back seat",
"Status": "Develop",
"IsAbstract": true,
"UnitSystem": 3,
"ClassType": "Block",
"ClassAttributes": [
{
"Type": "Property",
"Reference": "TDOC#02-PRP004#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP005#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP003#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP009#001"
}
]
},
{
"ObjectType": "01",
"Namespace": "TDOC",
"ID": "CLS004",
"Revision": "001",
"Name": "Car",
"Status": "Develop",
"IsAbstract": false,
"UnitSystem": 3,
"ClassType": "Application Class",
"ClassAttributes": [
{
"Type": "Property",
"Reference": "TDOC#02-PRP010#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP011#001"
}
]
}
]
}
The first two classes, CLS002 and CLS003, are the property block classes and the third class,
CLS004, is the application class that references the two property blocks.
3. Import the node definition that makes the class visible in Active Workspace.
The Block car node must be displayed in the Cars node that you created in the first example. To do
this, import the new node specifying the Car node, CSTAA1, as the parent. Save the following in a
file named blockNodeDef.json.
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"NodeDefinitions": [
{
"Namespace": "TDOC",
"ID": "CSTAA3",
"Revision": "001",
"Parent": {
"Namespace": "TDOC",
"ID": "CSTAA1",
"Revision": "001"
},
"Name": "Block Car",
"ApplicationClass": {
"Namespace": "TDOC",
"ID": "CLS004",
"Revision": "001"
}
}
]
}
Definitions are imported using the clsutility utility. Run each of the following commands in a
Teamcenter command window:
This example shows how to create a class where we can specify the number of seat rows in a car during
classification. For example, when classifying a sports car, there is only one row of seats, so only one set
of seat properties is necessary. When classifying a family van, there are three rows of seats that each
need a set of properties to describe them.
This property block class contains the same attributes as in the previous example, but additionally
includes a new key-LOV property, Type of seat, where you can specify whether the seats are front, back,
or third-row seats.
The number of times that this block of properties is displayed in the user interface is determined by a
special property called a cardinality controller:
A cardinality controller is referenced by another property and is only of significance if set to true. If this
is the case, then the user can specify the number of times that the set of properties is displayed.
To create the JSON files required to import these classes and properties:
This example introduces a new key-LOV, Type of seat, with three values, Front, Rear, and Third.
Save the following in a file named cardinalKeyLOVDef.json
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"KeyLOVDefinitions": [
{
"ObjectType": "09",
"Namespace": "TDOC",
"ID": "KEY002",
"Revision": "001",
"Name": "Type of seat",
"Status": "Develop",
"LOVItems": {
"DataType": "String",
"LOVStringItems": [
{
"StringValue": "F",
"DisplayValue": "Front"
},
{
"StringValue": "R",
"DisplayValue": "Rear"
},
{
"StringValue": "T",
"DisplayValue": "Third row"
}
]
}
}
]
}
There are three new properties in this example: Type of seat that references the new key-LOV,
Seat, the property that specifies the property block class that is to be displayed and acts as an
indicator that cardinality is involved, and the Number of seats that holds the count.
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"PropertyDefinitions": [
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP012",
"Revision": "001",
"Name": "Type of seat",
"Status": "Develop",
"DataType": {
"Type": "String",
"KeyLOV": "TDOC#09-KEY002#001"
}
},
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP013",
"Revision": "001",
"Name": "Seat",
"Status": "Develop",
"DataType": {
"Type": "Reference",
"BlockReference": "TDOC#01-CLS005#001",
"CardinalityController": "TDOC#02-PRP014#001"
}
},
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP014",
"Revision": "001",
"Name": "Number of seats",
"Status": "Develop",
"DataType": {
"Type": "Integer"
}
}
]
}
This example introduces two new classes, CLS005, the property block class, and CLS006, the
application class. Save the following in a file named cardinalPropDef.json.
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"ClassDefinitions": [
{
"ObjectType": "01",
"Namespace": "TDOC",
"ID": "CLS005",
"Revision": "001",
"Name": "Seat properties",
"Status": "Develop",
"IsAbstract": true,
"UnitSystem": 3,
"ClassType": "Block",
"ClassAttributes": [
{
"Type": "Property",
"Reference": "TDOC#02-PRP012#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP004#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP005#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP006#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP003#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP007#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP008#001"
}
]
},
{
"ObjectType": "01",
"Namespace": "TDOC",
"ID": "CLS006",
"Revision": "001",
"Name": "Cardinal car",
"Status": "Develop",
"IsAbstract": false,
"UnitSystem": 3,
"ClassType": "Application Class",
"ClassAttributes": [
{
"Type": "Property",
"Reference": "TDOC#02-PRP013#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP014#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP002#001"
}
]
}
]
}
4. Import the node definition that makes the class visible in Active Workspace.
The Cardinal car node must be displayed in the Cars node that we created in the first example. To
do this, import the new node specifying the Car node, CSTAA1, as the parent. Save the following
in a file named cardinalNodeDef.json.
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"NodeDefinitions": [
{
"Namespace": "TDOC",
"ID": "CSTAA4",
"Revision": "001",
"Parent": {
"Namespace": "TDOC",
"ID": "CSTAA1",
"Revision": "001"
},
"Name": "Cardinal car",
"ApplicationClass": {
"Namespace": "TDOC",
"ID": "CLS006",
"Revision": "001"
}
}
]
}
Definitions are imported using the clsutility utility. Run each of the following commands in a
Teamcenter command window:
After specifying the number of seats in , that number of Seat property blocks is displayed . You
can assign different values for each seat row. With the new key-LOV , you can specify a separate type
of seat for each row.
This example shows how to create a class where we can specify the properties displayed depending on
the type of seat row in a car that you select during classification. The following table displays the
different properties available for each seat row type:
Material Material
Color Color
Lumbar support
Heated seats
These are the same properties used in the second example. The difference is that in this example, you
can specify the seat type during classification and, depending on this selection, display different
properties. The concept of displaying different properties depending on the value of an additional
property is referred to as polymorphism.
This example contains two classes describing the front and rear seats:
Each of the property block classes contains a special property that specifies the type of seat. This
property references a key-LOV with the values Front or Rear.
The following application class contains the polymorphic Seat property that references the key-LOV.
Another property that references the key-LOV, PRP016, contains the isPolymorphismController
attribute. When this property is used in a property block class (CLS0007 or CLS008), the
isPolymorphismController attribute indicates that the property is polymorphic and that its value
determines the list of class properties displayed in the user interface.
This example introduces one new key-LOV that is saved in a file called
polymorphicKeylovDef.json:
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"KeyLOVDefinitions": [
{
"ObjectType": "09",
"Namespace": "TDOC",
"ID": "KEY003",
"Revision": "001",
"Name": "Type of seat",
"Status": "Develop",
"LOVItems": {
"DataType": "Reference",
"LOVReferenceItems": [
{
"StringValue": "F",
"DisplayValue": "Front",
"BlockReference": "TDOC#01-CLS007#001"
},
{
"StringValue": "R",
"DisplayValue": "Rear",
"BlockReference": "TDOC#01-CLS008#001"
}
]
}
}
]
}
The values of the key-LOV, Front and Rear, reference their respective property block classes,
CLS007 and CLS008.
This example uses many of the properties created in the earlier examples, as well as two new
properties. Create the following JSON file and save it in a file named polymorphicPropDef.json.
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"PropertyDefinitions": [
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP015",
"Revision": "001",
"Name": "Type of seat",
"Status": "Develop",
"DataType": {
"Type": "Reference",
"BlockReference": "TDOC#09-KEY003#001"
}
},
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP016",
"Revision": "001",
"Name": "Seat",
"Status": "Develop",
"DataType": {
"Type": "String",
"KeyLOV": "TDOC#09-KEY003#001",
"IsPolymorphismController": true
}
}
]
}
This example introduces two new property block classes very similar to those in the block class
example, but additionally containing the polymorphic PRP016 property. Save this in a file named
polymorphicClassDef.json.
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"ClassDefinitions": [
{
"ObjectType": "01",
"Namespace": "TDOC",
"ID": "CLS007",
"Revision": "001",
"Name": "Front seat",
"Status": "Develop",
"IsAbstract": true,
"UnitSystem": 3,
"ClassType": "Block",
"ClassAttributes": [
{
"Type": "Property",
"Reference": "TDOC#02-PRP016#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP004#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP005#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP006#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP003#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP007#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP008#001"
}
]
},
{
"ObjectType": "01",
"Namespace": "TDOC",
"ID": "CLS008",
"Revision": "001",
"Name": "Back seat",
"Status": "Develop",
"IsAbstract": true,
"UnitSystem": 3,
"ClassType": "Block",
"ClassAttributes": [
{
"Type": "Property",
"Reference": "TDOC#02-PRP016#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP004#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP005#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP003#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP009#001"
}
]
},
{
"ObjectType": "01",
"Namespace": "TDOC",
"ID": "CLS009",
"Revision": "001",
"Name": "Polymorphic car",
"Status": "Develop",
"IsAbstract": false,
"UnitSystem": 3,
"ClassType": "Application Class",
"ClassAttributes": [
{
"Type": "Property",
"Reference": "TDOC#02-PRP015#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP002#001"
}
]
}
]
}
The application class CLS009 references PRP015, which is associated with the polymorphic
attribute PRP016 through the key-LOV.
4. Import the node definition that makes the class visible in Active Workspace.
The Polymorphic car node must be displayed in the Cars node that we created in the first
example. To do this, import the new node specifying the Car node CSTAA1 as the parent. Save the
following in a file named polymorphicNodeDef.json.
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"NodeDefinitions": [
{
"Namespace": "TDOC",
"ID": "CSTAA5",
"Revision": "001",
"Parent": {
"Namespace": "TDOC",
"ID": "CSTAA1",
"Revision": "001"
},
"Name": "Polymorphic car",
"ApplicationClass": {
"Namespace": "TDOC",
"ID": "CLS009",
"Revision": "001"
}
}
]
}
Definitions are imported using the clsutility utility. Run each of the following commands in a
Teamcenter command window:
This example shows how to create a class where you can first specify the number of seat rows a car has
during classification. For each seat row, the properties displayed depend on the type of seat row that
you select.
This example uses the same two property block classes as the previous example, describing the front
and rear seats:
Again, these classes are referenced by the same key-LOV as in the previous example, which determines
which of these classes is displayed:
The application class references the properties that determine the polymorphism and cardinality:
After completing the previous examples, there are only a few new objects required to import this
example. To create the JSON files for this example:
This example uses PRP014 created in the cardinality example and PRP016 created in the
polymorphism example. One new property is required that references the key-LOV created in the
polymorphism example. Create the following JSON file and save it in a file named
poly_cardPropDef.json.
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"PropertyDefinitions": [
{
"ObjectType": "02",
"Namespace": "TDOC",
"ID": "PRP017",
"Revision": "001",
"Name": "Seat",
"Status": "Develop",
"DataType": {
"Type": "Reference",
"BlockReference": "TDOC#09-KEY003#001",
"CardinalityController": "TDOC#02-PRP014#001"
}
}
]
}
This property references the key-LOV definition, as well as the cardinality controller property. The
polymorphism is achieved by the reference of PRP016 to the key-LOV.
This example introduces only one new application class. Save this in a file named
poly_cardClassDef.json.
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"ClassDefinitions": [
{
"ObjectType": "01",
"Namespace": "TDOC",
"ID": "CLS010",
"Revision": "001",
"Name": "Polymorphic cardinal car",
"Status": "Develop",
"IsAbstract": false,
"UnitSystem": 3,
"ClassType": "Application Class",
"ClassAttributes": [
{
"Type": "Property",
"Reference": "TDOC#02-PRP014#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP017#001"
},
{
"Type": "Property",
"Reference": "TDOC#02-PRP002#001"
}
]
}
]
}
3. Import the node definition that makes the class visible in Active Workspace.
The Polymorphic cardinal car node must be displayed in the Cars node that we created in the first
example. To do this, import the new node specifying the Car node CSTAA1 the as parent. Save the
following in a file named poly_cardNodeDef.json.
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"NodeDefinitions": [
{
"Namespace": "TDOC",
"ID": "CSTAA6",
"Revision": "001",
"Parent": {
"Namespace": "TDOC",
"ID": "CSTAA1",
"Revision": "001"
},
"Name": "Polymorphic cardinal car",
"ApplicationClass": {
"Namespace": "TDOC",
"ID": "CLS010",
"Revision": "001"
}
}
]
}
Definitions are imported using the clsutility utility. Run each of the following commands in a
Teamcenter command window:
Deleting objects is performed using clsutility with the -delete arguments. You may delete any of the
following using the utility:
• Nodes
• Classification objects
• Classes
• Properties
• Key-LOVs
The utility requires a JSON file as input. The format for the JSON is found in the schema directory. The
following example contains the request used to test (using the dryrun option) whether the TDOC#01-
CLS001#001 class and all the objects it references (including other block classes, key-LOVs, and
properties) can be deleted:
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"Options": [ "recursive", "dryrun"],
"ObjectIRDIList": [
"TDOC#01-CLS001#001"
]
}
To actually delete the class and all the objects it references, remove the dryrun option in the JSON
request file and run the clsutility -delete command again.
• To delete a branch in the classification hierarchy, delete the topmost class in the branch using the
recursive argument. This deletes everything from that class downwards and prevents you from
having to list all objects requiring deletion individually.
• You cannot delete a class in which objects are classified. You must first delete the classifications and
then the classes.
Views are used to display all or a subset of the properties in a class in the user interface. There are two
types of views used in classification classes:
Base view A base view is used internally to cache data required to display the class, helping to
improve performance. Additionally, you can use the base view to modify the order in
which the properties of a class are displayed in the user interface. For best results,
create a base view for each application class in a Released state.
If no other view exists in the class, the user interface displays the properties contained
in the base view.
User, group, These types of views are used to override the order of properties in the base view and
or role view limit the number of properties shown to different types of users based on their needs.
For example, an Engineering group may need to see one group of properties, whereas
a Logistics group needs to see a different group of properties. You can create views for
specific groups, roles, or individual users.
Note:
You can create views only for application classes. Because of this, you can influence the order in
which properties, blocks, and aspects are displayed in a class, but you cannot influence the order
of properties within blocks or aspects.
When you use the following commands, you can quickly create base views.
This command creates a base view definition for every application class in the Released state. If an
application class already has a base view, it is skipped.
This command creates a base view for the application class with the specified IRDI.
• To create a base view for all released application classes, regardless of whether they already have one:
This command creates a new base view definition for every application class in the Released state
and overwrites any existing base view.
You cannot use the -create -base_view_definitions command to modify the order in which class
properties are displayed in the user interface. To do this, you must use the -create -view_definitions
command and specify the ViewType as BaseView in the JSON input file.
You create user, group, or role views by importing a JSON file that defines the properties that are
displayed for each group, role, or user in the user interface. The properties of the class are displayed in
their order of appearance in the JSON file (from top to bottom). You can include only properties in the
views that already exist in the base view of the class. Hide attributes by excluding them in the JSON file
for the view.
...\TD\classification\json\1.0.0\schema
\Classification_Save_ViewDefinitions_Request.schema.json
...\TD\classification\json\1.0.0\samples
\Classification_Save_ViewDefinition_Request_sample.json
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"ViewDefinitions": [
{
"ClassDefinition": "TDOC#01-APPC04#001",
"ViewType": "GroupView",
"ViewId": "Engineering",
"ViewAttributes": [
{
"IRDI": "TDOC#02-PDF015#001"
},
{
"IRDI": "TDOC#02-PDF016#001"
}
]
},
{
"ClassDefinition": "TDOC#01-APPC04#001",
"ViewType": "RoleView",
"ViewId": "Designer",
"ViewAttributes": [
{
"IRDI": "TDOC#02-PDF011#001"
},
{
"IRDI": "TDOC#02-PDF014#001",
"IsProtected": true,
"IsRequired": true
}
]
},
{
"ClassDefinition": "TDOC#01-APPC04#001",
"ViewType": "UserView",
"ViewId": "JSmith",
"ViewAttributes": [
{
"IRDI": "TDOC#02-PDF012#001"
},
{
"IRDI": "TDOC#02-PDF013#001"
}
]
}
]
}
Notice that you can specify whether a property value must be entered for a property (IsRequired) or
whether it is protected and cannot be modified in the user interface (IsProtected).
To create a base view to reorder its properties, the input must resemble the following:
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"ViewDefinitions": [
{
"ClassDefinition": "TDOC#01-APPC04#001",
"ViewType": "BaseView",
"ViewId": "BaseView",
"ViewAttributes": [
{
"IRDI": "TDOC#02-PDF013#001"
},
{
"IRDI": "TDOC#02-PDF015#001"
},
{
"IRDI": "TDOC#02-PDF011#001",
"IsProtected": true
},
{
"IRDI": "TDOC#02-PDF014#001",
"IsRequired": true
},
{
"IRDI": "TDOC#02-PDF012#001"
},
{
"IRDI": "TDOC#02-PDF016#001"
}
]
}
]
}
You can also extract an existing view definition from the database using the following command:
The JSON schema file for the -find command is found in:
...\TD\classification\json\1.0.0\schema\Classification_Find_View_Request.schema.json
...\TD\classification\json\1.0.0\samples
\Classification_Find_ViewDefinition_Request_sample.json
{
"SchemaVersion": "1.0.0",
"Locale": "en_US",
"ViewDefinitions": [
{
"ClassDefinition": "TDOC#01-APPC10#001"
},
{
"ClassDefinition": "TDOC#01-APPC12#001",
"ViewType": "GroupView"
},
{
"ClassDefinition": "TDOC#01-APPC09#001",
"ViewId": "JSmith"
},
{
"ClassDefinition": "TDOC#01-APPC08#001",
"ViewType": "GroupView",
"ViewId": "Engineering"
},
{
"ViewType": "UserView",
"ViewId": "JSmith"
},
{
"ViewId": "MNancy"
},
{
"ClassDefinition": "TDOC#01-APPC11#001",
"ViewType": "BaseView",
"ViewId": "BaseView"
}
]
}
It is not necessary to uniquely identify each view that you want to display. It is sufficient to just request;
for example, all the views for a particular class:
{
"ClassDefinition": "TDOC#01-APPC10#001"
}
Alternatively, you could request all user views for a particular user:
{
"ViewType": "UserView",
"ViewId": "JSmith"
}
Whereas a class definition describes only the class, or a key-LOV definition only one key-LOV, the class
descriptor compiles all the definitions required to describe an ICO. Each node of the hierarchy shares a
class descriptor. The class descriptor provides a view on the data from the classification consumer
perspective.
The schema file explaining the required JSON syntax is found in:
...\TD\classification\json\1.0.0\schema\Classification_Get_ClassDescriptor_Request.schema.json
When deleting, the JSON request file uses the same schema as the JSON find request.
Note:
Be careful when deleting base views. For performance reasons, a released class should always
contain a base view. It is advisable to overwrite an undesired base view with a corrected version
instead of deleting it.
To export the classification information (the ICO) for an object classified in a CST hierarchy, use the
following clsutility command:
This command requires a JSON file resembling the following (see the
Classification_FindRequest.schema.json schema file):
{
"SchemaVersion": "1.0.0",
"Locale" : "en_US",
"ObjectIDList": [
{
"ID": "026144/A"
}
]
}
The input JSON file contains a list of object IDs for which the ICO information is exported to a file of your
choice.
• ONTO ML XML
Hierarchy (segment) data downloaded from the eCl@ss website is delivered in this format.
• BMECAT XML
Classification objects that are downloaded from the Siemens Industry Mall website are delivered in
this format.
To import this data into Active Workspace, it must be converted into the JSON file format. You can do
this with the eclass2json utility.
This utility is launched using a platform-independent Perl script and is configured using the
eclass2json.properties file found in the same directory:
..\TR\bin\eclass2json
The utility functions by outputting a variety of data to temporary files that it then references to create
the JSON files. For this reason, the correct creation of the JSON files requires running the utility to
output objects individually in the following sequence:
2. Units unitsmap
3. Key-LOVs keylovs
4. Properties properties
5. Aspects aspects
6. Blocks blocks
The utility requires a specific directory structure that it uses to find its input, as well as to store the
completed JSON files. As input, this directory must contain the extracted XML files to be converted.
During processing, the utility creates subdirectories for both the temporary hash map files and the newly
created JSON files.
The properties file consists of several sections. The first section contains default input parameters. Each
of these can be overridden in the second section of the file. Furthermore, in the properties file, you can
specify multiple configurations, allowing you to use the same properties file to convert various different
types of data (for example, eCl@ss91 and eCl@ss10). For example, for an import of eCl@ss91 advanced
data, you might name your configuration eclass_9_1_advanced. The configuration name can be any
contiguous string. The name is used solely by the utility and is not displayed in the user interface after
import.
Tip:
Each property can also be overridden in the command line arguments. See the
eclass2json.properties file for the correct syntax.
1. cfgName.objType.propertyName
2. cfgName.propertyName
3. objType.propertyName
4. propertyName
eClass91.hashMaps.baseDirectory = C:\\hashmaps
eClass101.baseDirectory = C:\\baseDirectory
baseDirectory=C:\\classification\\baseDirectory
If the utility is run for hash maps and the eClass101 configuration, the hash maps are stored in C:\
\baseDirectory. For any other configuration, such as my_configuration, the hash maps are stored in
the C:\\classification\\baseDirectory directory because the utility first looks if there is a property called
my_configuration.hashMaps.baseDirectory, and then it looks whether there is a property called
my_configuration.baseDirectory. After that, it searches for a directory called
hashmaps.baseDirectory and finally, it looks for baseDirectory. As the only result the utility finds is the
simple baseDirectory, this value is chosen.
2. Open the eclass2json.properties file in a text editor. The following properties are listed in the
default section at the top of the file:
Property Description
status Specifies the status the data will have in the database after
conversion. It can be either Develop or Released. You can classify
in released classes only.
baseDirectory Describes the path to a directory that you create in your operating
system. This directory must contain the input files. Other file paths
specified in the eclass2json.properties file are specified relative to
this path.
xmlFileDirectory Specifies the path to the directory holding the XML files to be
converted. This path must be specified relative to the
baseDirectory path.
xmlFileNameBase Specifies the name of the XML segment file to be converted, for
example, eClass9_1_ADVANCED_EN_.
xmlFileNameLocale For data (BMECAT) files only, specifies which language version of
the input file is to be used. For example, if you downloaded data for
both English and German, files such as the following XML files are
found in the input directory:
CAx_171117_92926_deu.xml
CAx_171117_92926_eng.xml
The string specified here must exactly match the text used in the
file name. To convert the German files, then, the property must be
stated as:
xmlFileNameLocale = deu
xmlFileNameExtension For data (BMECAT) files only, specifies the file type, for example,
xml.
Property Description
WSO.revision_separator Specifies the separator between item ID and item revision that is
used at import when creating a classified item revision in Active
Workspace.
jsonOutputDirectory Specifies the name of the directory in which the utility places the
JSON files it creates. The utility creates this directory in the base
directory.
hashMapDirectory Specifies the name of the directory in which the utility places the
temporary files it creates for further reference. The utility creates
this directory in the base directory.
The values you set here for the path, file name, file name base, and file name extension are used
by the utility to construct the complete paths to the files it requires. It is important that you set
them exactly as they are shown in your operating system.
3. Examine these properties and modify them based on your directory structures. If you want to save
several import configurations (for example, eCl@ss91 and eCl@ss10) in the same properties file,
navigate to the bottom of the file and enter the overriding properties in the following format:
configuration-name.property-name = value
For example, to import segment 13 instead of the default segment 27, enter:
eclass_9_1_advanced.segment = SG_13
4. Obtain the hierarchy data from the eCl@ss website and extract the contents into a directory.
5. Enter the path to this directory as the value for the eclass_9_1_advanced.baseDirectory in the
overrides section of the properties file.
6. When you are satisfied that the properties file adequately describes the location of the input data
as well as the desired property values and output locations, save the file and open a Teamcenter
command prompt.
7. Call the Perl script in the required order. The following example displays the commands for the
eclass_9_1_advanced configuration:
After running these commands, the base directory contains a folder for the temporary files and a
folder for the JSON files.
8. Import the newly created JSON files into the database as described in Importing JSON files.
Siemens classifies their product data according to the eCl@ss standard. When downloading data from
the Siemens Industry Mall, you can choose to download CAx data that is delivered in the BMECAT XML
file format. This data is provided as a zipped file that you unpack in a directory on your operating
system. The files of interest for the eclass2json conversion utility are found in the 01_Product-Master-
Data directory.
The BMECAT data is contained in a different file structure than the eCl@ss data. Consider this when
modifying the eclass2json.properties file. For example, if you are importing property records for a
configuration called eclass_9_1_advanced, you must overwrite the path properties with the correct
information for the -objectType=data step. For a directory structure such as the following:
eclass_9_1_advanced.data.baseDirectory = C:\\baseDirectory\
\caxxonline_ECLASS90_190212_105539
eclass_9_1_advanced.data.xmlFileNameDirectory = 01_Product-Master-Data
eclass_9_1_advanced.data.xmlFileNameLocale = eng
During conversion, the utility creates a property record (classification object) for each PRODUCT in the
XML file . The FEATURES are used to create properties. The MANUFACTURER_PID is used to create
the classification object ID .
JSON file:
The REFERENCE_FEATURE_GROUP is used to create the hierarchical position. The first two digits,
in this case, 27, indicate the segment being converted.
The utility creates a section in the JSON file for a classified object and uses the
MANUFACTURER_PID to identify the item ID. During import, the utility checks whether there is an item
revision in the database with that ID. If so, it is automatically classified. If not, the item revision is
created and automatically classified. The DESCRIPTION_SHORT is used as the classification object
description .
When viewing classification data in Active Workspace, you can convert between units that exist in the
database. The eCl@ss standard data packages include a large number of unit definitions. These are
contained in an XML file in the eCl@ss data package that you downloaded. To be able to convert
between units when using eCl@ss data in Active Workspace, you must first import the units into the
database.
1. Open the eclass2json.properties file in a text editor. This file can be found in:
..\TR\bin\eclass2json
Ensure that the eCl@ss version of the unit file that you use matches the version of the eCl@ss data
in your database.
4. Convert the unit definition file to JSON with the eclass2json utility:
5. Import the newly created JSON file found in the jsonOutputDirectory folder as follows:
The eCl@ss units are now available for use in the user interface. When converting between measures,
the value is stored in the object's unit system (the one chosen in the Unit System radio buttons at the
top of the Properties section). For example, if a property's base unit is mm and if the unit system of an
object is metric, even if you set the value of the Net weight property to lb or kg, internally, the value is
converted to mm before being stored.
Both CST and traditional classification classes can co-exist in a single environment.
In this case, the nodes reference the appropriate class type: For traditional classification, a node
references ICS classes and for CST, it references CST classes.
Note:
The CLS_is_presentation_hierarchy_active preference is not delivered by default. You must add
it manually.
Traditional classification (ICS) classes must be extended to the presentation hierarchy as follows:
1. Extend classification data to the presentation layer by running the following command line utility:
This command extends the classification subhierarchy under the specified group or class.
• For classification groups, running this utility creates presentation layer group nodes with the
same ID as the associated groups.
• For classification classes, running this utility creates presentation layer master nodes with the
storage_class_type property corresponding to their associated classes.
• -include_instances
Includes ICOs in the subhierarchy.
• -exclude_children
Excludes the subhierarchy. It extends the specified group or class only.
Use one of the following methods to synchronize the presentation layer with the underlying
classification hierarchy:
• If a target is not found in the presentation hierarchy, it is created (applies to node or element).
■ To create a node in the presentation hierarchy, Teamcenter matches the parent node with the
parent class.
■ To create an element in the presentation node, Teamcenter matches the node with the storage
class.
■ A master node with the storage class type property pointing to the associated classification class
Classification standard taxonomy (CST) offers some features that traditional classification does not.
Additionally, in the future, CST will be regularly enhanced. For this reason, you may want to consider
migrating your traditional classification classes to the CST format. To do this, you can run the following
utility:
Caution:
It is strongly recommended that you test the migration of your classes in a staging environment
and evaluate the results. Deploy the migration in production only when you are completely
satisfied with the test results.
This utility argument migrates one traditional classification class and all the objects (properties,
dictionary attributes, and key-LOVs) referenced by that class, as well as all the parent classes, to the CST
format. Optionally, the utility can also convert any ICOs already existing in the class using the following
command:
Running the utility creates a class in the database with an automatically generated IRDI. This IRDI is
displayed in the utility output. Additionally, node definitions are created for application classes so that
the migrated CST classes are visible and can be used for classification.
You must set the following two preferences to run the migration:
• CST_Classification_to_cst_namespace
This preference specifies the namespace of all CST objects created by the migration utility.
• CST_classification_to_cst_status
This preference specifies the status of the CST objects created by the migration utility. Valid values are
Develop, Released, or Retired. Objects set to Released can no longer be modified.
Current limitations
Libraries are used to organize classified objects with similar characteristics or application in a hierarchy.
They reflect the business use of the objects they contain. For example, if you were looking for a bolt,
you would start by searching for the bolt library. Once you find the bolt library, you can perform
additional searches, use filters, or browse through the hierarchy to find the object that meets your
criteria.
The class hierarchy is built based upon attribute inheritance. This does not always reflect the business
use of the object for which you search. Libraries are based on a presentation hierarchy and provide you
with a different view on the data. The presentation hierarchy is built on top of the traditional
classification hierarchy and mirrors it. However, because it is built from workspace objects, it supports
the flexibility of libraries. A library contains library elements that are used to manage library objects and,
ultimately, reference classification classes. A classifying node links to a storage class. Using an optional
synchronization mechanism, you can ensure that any actions performed on the traditional classification
hierarchy are also performed on the presentation hierarchy.
A presentation hierarchy can have its own symbols and images but its structure is a one-to-one
reflection of the classification storage hierarchy. Classification nodes in the presentation hierarchy refer
back to classification classes in the storage hierarchy.
There is no user interface for classification libraries. You can display presentation layer nodes in My
Teamcenter and search for data filtered by libraries in Active Workspace. Libraries are administered using
the clsutility and lbrmanger utilities.
Membership rules are used to populate a library on demand. A membership rule tells Teamcenter to
search through a part of a presentation hierarchy and find all elements that have a particular
characteristic, and then create a library element for the node element. For example, select all classified
bolts from the Bolts class that are made of titanium and whose diameter is greater than 20. You can
create multiple rules for a particular library node, and you can search either presentation hierarchies or
other libraries to populate a new library.
• Indexing of libraries
• Library
• Hierarchy
• Hierarchy nodes
• Library elements with classification properties and the underlying library object section
• Library: container
• Hierarchies
■ Hierarchy nodes
◊ Library elements
◊ Membership rules
• Specifications
• Specification rules
Rule B Select all bolts from the vendor catalog where material is titanium and
diameter greater than 20.
Specification Design or component selection guidelines set up by expert users for a particular
domain or discipline to assist you in finding components suitable to a particular design
purpose.
• clsutility
This utility is used to create and update the presentation layer based on the classification hierarchy.
• lbrmanager
This utility is used to create, display, publish, and retract library objects.
These utilities contain many arguments and subarguments. The instructions about how to use the
utilities is embedded in the utilities themselves. To obtain help for the utilities, enter:
utility-name -h
For example:
lbrmanager -h
utility-name -subargument -h
For example:
clsutility -include_instances -h
The following examples demonstrate how to create, display, publish, and retract library objects.
Note:
To obtain more information about any of these commands, type:
command-name -sub-command -h
For example:
To display a library:
Create a hierarchy
To display a hierarchy:
To display a node:
To display a node:
Output Description
[MechanicalPartsLibrary] Library created in Create a standalone library.
MechanicalPartsLibrary
Prerequisite data:
-elemPropNames=lbr0ElementId -lbr0ElementId=BasePlateLE01
-elemPropNames=lbr0ElementId -lbr0ElementId=BasePlateLE02
Output Description
[MechanicalPartsLibrary] Library created in Create a standalone library.
MechanicalPartsLibrary
Prerequisite data:
Creating a library from the Fixtures branch of the Manufacturing Resource Library—
Example
Using artificial intelligence (AI), Active Workspace can guide you to the correct class in which to classify
new objects. This is beneficial if your hierarchy is very large so you do not have to manually navigate to
the desired class or remember the required class name. This saves time, especially for workflows where
you often classify into similar classes.
The classification AI engine is based on TensorFlow, an open source machine-learning library. It can,
optionally, use Geolus, the Teamcenter shape search engine, to recommend a class based on the shape
of the object being classified. After being trained on a database, the engine receives object metadata
from the Teamcenter server and returns the probabilities for potential classes. You can specify which
classes are displayed in the user interface based on these probabilities. For example, only classes with a
probability of higher than 50% are displayed as potential classification classes.
To configure classification AI, the AI engine must first be trained on the data in your database. The
training outputs a data model (files) that is used to deliver suggested classes.
Training the AI engine is carried out by running a utility. This utility need only be run when necessary. If
your data changes often, new training is required. Training can be time-consuming depending on how
much data you have.
Prerequisite:
If you want to use the Geolus shape search engine, it must be installed and configured on the
Teamcenter server. For details refer to the Geolus documentation.
This procedure assumes that classification is already installed on Active Workspace. Additionally, if
desired, Geolus must already be installed and configured.
• Deployment Center
• Deployment Center:
b. In the Components section, in the Microservice Node panel, specify a value for the Model
File Location. This is the same value you must enter in the CLS_AI_Shared_Directory
preference in a later configuration step.
A. Base Install > Active Workspace > Server Extensions > Reuse and standardization
> Classification AI Training
B. Base Install > Active Workspace > Server Extensions > Reuse and standardization
> Classification AI
b. In the Classification AI Microservice panel, specify a value for the Classification AI Model
File Location. This is the same value you must enter in the CLS_AI_Shared_Directory
preference in a later configuration step.
The installation creates a new folder in the Teamcenter root directory named classification. This folder
contains all the required components to configure classification AI.
Tip:
During installation, the URL of the microservice that is used by the classification AI engine is
displayed. This is the value required for the CLS_AI_Engine_URL that you must set later in the
configuration process.
Training the artificial intelligence engine on your data involves running a utility that extracts data from
the database in a format that the engine can subsequently use to create the training model. The data
that is extracted is determined by a preference.
CLS_AI_Enable_AI_Engine
Set this preference to true to enable class suggestions.
CLS_AI_Shared_Directory
Specifies a directory where the classification artificial intelligence training model is stored. This
is the same path that you specify during installation of classification AI. If this preference does
not exist in the database, you must create it.
CLS_AI_Engine_URL
Specifies the URL of the microservice that supports classification AI. This URL is displayed
during installation of the feature and has this format:
CLS_AI_Enable_Geolus
Enables the additional comparison of shape parameters using the Geolus search engine with
classification AI.
runClsAITraining.bat
• The CLS_AI_Object_Properties preference specifies which properties are used for training.
• By default, the files created by the script are stored in a file named cait-artifacts-
TrainOuput_temp. The optional argument for the runClsAITraining.bat script, ouput-file-name,
allows you to change the suffix of the file from temp to a custom suffix.
• The files are stored in the zipped_models directory in the directory specified by the
CLS_AI_Shared_Directory preference. For each run, a new training model is created. These files
are used by the AI engine to deliver suggestions.
Each time you run the script, you create a new training model that has no memory of the last run.
Troubleshooting classification AI
• To ascertain whether the classification AI server is running, open a Web browser and type the URL
where microservices is installed:
• If Geolus is enabled, the following preferences are set by the installation and can be checked for
accuracy:
SS1_DASS_cer_name
Defines the full name of the Geolus server certification file.
SS1_DASS_cer_path
Defines the path to the Geolus server certification file.
SS1_DASS_ssl_verify
Defines whether CURL verifies the certificate authenticity of the Geolus server.
GeolusServer
Defines a URL that points to the Geolus server.
lbrmanager
Performs various library management functions. Using a multitude of arguments, you can create,
update, and delete data, show data, publish and retract it, as well as search for various library elements.
To use the lbrmanager utility, you must install the Display only the branches of the classification
hierarchy that relate to my project feature in your Teamcenter configuration.
SYNTAX
[-create | -delete | -show | -find | -update | -revise | -copy | -share | -unshare | -evaluate |
ARGUMENTS
The lbrmanager utility contains many arguments and subarguments whose descriptions and syntax you
can find in the help contained within the utility.
lbrmanager -h
lbrmanager -show -h
Running this command lists the help for all the subarguments of the -show command, such as the
following:
ENVIRONMENT
smlutility
Use this command to create or delete search indexing views for classification. Classes that do not have a
search index view or properties that are not included in the search index view cannot be searched for in
the global search in Active Workspace. Additionally, only properties that are included in the search index
view are displayed as filters when searching.
For smlutility details not included below, refer to the Utilities Reference in the Teamcenter collection.
SYNTAX
ARGUMENTS
-create_indexing_views or -delete_indexing_views
Creates or deletes search indexing views for classification.
-u
Specifies the user ID.
This is generally infodba or another user with 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 user'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.
When creating, if no class ID is specified, indexing views for all classes that do not have indexing
views are created. If a class contains a default view, the attributes of the default view are copied to
the Search Index view. Otherwise, all the attributes of the class are set as attributes of the search
indexing view.
When deleting, if no class ID is specified, indexing views for all classes are deleted.
To create Search Index views for a class and all its child class (that is, for a single branch of a
hierarchy), include the topic level class ID in the listIds argument along with the recursive
argument.
-delimiter
Specifies a user-defined delimiter.
-recursive
Specifies that the index view be created (or deleted) for all subclasses. This argument is used
together with the listIds argument.
clsutility
Performs various classification standard taxonomy functions. Using a multitude of arguments, you
can create, update, delete, and migrate data. You can also use this utility to display the node hierarchy
in various levels of detail.
To use the clsutility utility, you must install the Classification Standard Taxonomy feature in your
Teamcenter configuration.
Syntax
[-create | -delete | -find | -ask | -add | -import | -search | -set | -update | -get |
Arguments
The clsutility utility contains many arguments and subarguments whose descriptions and syntax you
can find in the help contained within the utility.
clsutility -h
clsutility -create -h
Running this command lists the help for all the subarguments of the -show command, such as the
following:
USAGE
clsutility
-u=<username>
{-p=<password> | -pf=<password_file> }
-g=<group>
-output=<output file name>
<command> <sub-command> <command options...>
---------------------------------------------------------
For the command "-create" the following sub-commands are available:
-default_objects [Creates default Classification Context, Hierarchy and
Scheme objects.]
-node [Creates a Classification Hierarchy node object.]
-class_definitions [Creates a Classification standard taxonomy Class.]
-property_definitions [Creates a Classification standard taxonomy Property.]
-keylov_definitions [Creates a Classification standard taxonomy Keylov.]
-classification_object [Creates a new instance of Classification object.]
-classification_objects [Creates a set of Classification objects.]
-node_hierarchy [Creates a Classification node hierarchy from
Classification hierarchy.]
-node_definitions [Creates a Classification standard taxonomy Master
node.]
-view_definitions [Creates Classification Standard Taxonomy View
Definitions.]
Environment
Add the following to the command to perform the required actions. Optional arguments are displayed in
brackets ([ ]).
Key-LOV definitions
Property definitions
-find -property_definitions -request=JSON-file-name Find properties described in the given JSON file.
Class definitions
-create -class_definitions -request=JSON-file-name Create classes described in the given JSON file.
-delete -class_definitions -request=JSON-file-name Delete classes described in the given JSON file.
-find -class_definitions -request=JSON-file-name Find classes described in the given JSON file.
-update -class_definitions -request=JSON-file-name Update classes described in the given JSON file.
Nodes
-update -node -id=hierarchy-node-ID -name=new-name-of-hierarchy- Update a hierarchy node with the values
node provided.
-find -node -id=hierarchy-node-ID-including-namespace Find and display a single node based on its ID.
-ask -node_class_props -id=hierarchy-node-ID -name=name-of-property- List all properties belonging to a hierarchy node
including-prefix object with a given name.
-ask -node_parent -id=hierarchy-node-ID List the parent of a given hierarchy node object.
-ask -node_ancestors -id=hierarchy-node-ID List all parents of a given hierarchy node object.
-ask -node_children -id=hierarchy-node-ID List all child nodes of a given type for the
specified hierarchy node object and optionally,
for the given type.
[-type={0: group | 1: master | 3: all}]
-ask -node_type -id=hierarchy-node-ID Display the type of the given hierarchy node.
-ask -node_class_prop -id=hierarchy-node-ID -name=name-of-property- List all properties belonging to a hierarchy node.
being-sought-including-prefix
-ask -node_attachments -id=hierarchy-node-ID List all the attachments belonging to the given
hierarchy node.
-ask -node_characteristic -id=hierarchy-node-ID -characteristic={0: is- List whether a given node is an assembly, has
an-assembly | 1: has-multiple-instances | 3: is-a-leaf-node} multiple instances, or is a leaf node.
-import -image -id=hierarchy-node-ID -os_path=path-to-image-file Import an image for the given hierarchy node.
Images are displayed in the right pane of the
user interface.
[-new_file_name=new-file-name-used-by-Active-Workspace]
-import -icon -id=hierarchy-node-ID -os_path=path-to-image-file Import an icon for the given hierarchy node.
Icons are displayed in the classification hierarchy
and help to visualize the class names.
[-new_file_name=new-file-name-used-by-Active-Workspace]
-get -image -id=hierarchy-node-ID Identify the primary image used by the given
hierarchy node.
-get -images -id=hierarchy-node-ID List all the images used by the given hierarchy
node.
-get -icon -id=hierarchy-node-ID Identify the icon used by the given hierarchy
node.
[-obj_count=number-of-classification-objects]
[-prefixid=prefix-assigned-to-new-objects] |
[-request=JSON-file-name]
Classification views
-create -base_view_definitions -class_definitionIRDI-of-class Create a base view for the given application
class.
-create -view_definitions -request=JSON-file-name Create a user, group, or role view for a class, or
modifies the order of or suppresses properties in
a base view for a class.
-get -class_descriptor -request=JSON-file-name List the class descriptor for specified classes.
Using the clsutility, you can list classification standard taxonomy hierarchy objects to help you better
understand the classification data in the database. This method of viewing the hierarchy is based on the
class descriptor. Whereas a class definition describes only the class, or a key-LOV definition only one key-
LOV, the class descriptor compiles all the definitions required to describe an ICO. Each node of the
hierarchy shares a class descriptor. The class descriptor provides a view on the data from the
classification consumer perspective.
Note:
When you list all the nodes in the database, the utility lists hierarchies that are not migrated to
CST, but it cannot display ICOs belonging to these hierarchies.
The output of the utility can be directed to a text file that you can open in a text editor by using the -
output=output-file-name.txt.
The following arguments are available when using clsutility -list -hierarchy:
Argument Description
-nodeId= Specifies the unique ID of the node for which you want to display the
hierarchy. The utility displays all the parents of the given node, as well as the
node itself. If a node ID is not provided, all top level nodes are displayed.
To view the children of the given node, additionally use the -recursive
argument.
Argument Description
If you use this argument, you cannot use the -classId and -classNamespace
arguments.
-classId= Specifies the class ID of the class definition referenced from the given node.
If you specify a class ID here, you must also specify a namespace in the -
classNamespace argument.
If you use this argument, you cannot use the -nodeId argument.
-classNamespace= Specifies the namespace of the class definition referenced from the node. If
you specify a namespace here, you must also specify a class ID in the -classId
argument.
If you use this argument, you cannot use the -nodeId argument.
-recursive Displays the entire hierarchy below the specified node.
This argument cannot be used with the -showClass argument.
-showClass Shows detailed information about the referenced classes of the given node.
This argument cannot be used with the -recursive argument.
-showJSON Displays the JSON response from CST_class_describe which is used to build
the report of a class.
-showType Displays the class definition of the dynamic runtime type. This argument is
used for Siemens Digital Industries Software internal troubleshooting
purposes.
-showICOs Displays the ICOs of the nodes.
-showICOProperties Displays all ICO properties if you have also specified -showICOs.
-icoLimit= Limits the number of ICOs of a single node that are to be displayed.
-icoId= Shows only the ICO with this ID.
For example, for an eCl@ss class called AC-DC supply, the clsutility -list -hierarchy -recursive
command can be used to find the node ID (in this example, 0173-1#AFX043.
You can then use the node ID as input for the clsutility -list -hierarchy -nodeId=0173-1#AFX043 -
showClass command. The output resembles the following:
This output displays all the parent nodes of 0173-1#AFX043, as well as all the classes (application,
block, aspects) referenced by it, the properties, and the key-LOVs included in the class. The properties
are listed as follows:
Index:internal
code
IRDI
Data type
Unit
Property name
If key-LOVs are used repeatedly in a class, their details are listed the first time they are used.
All subsequent uses of the key-LOV are abbreviated with a reference to the first usage:
• To find the node from which you want to begin displaying the hierarchy assuming you know the class
ID and the class namespace, type:
If the class ID of the AC-DC supply class is AFR745 and the namespace is 0173-1, type:
• To display the JSON file from which the output information is drawn, type:
All the ICOs are displayed in addition to the complete hierarchy, with the number of instances
displayed for each class:
The text files created by this utility can be extremely large. To assist you in manipulating these files, you
can try the following in a text editor:
• Enable collapsing the code in the editor. This can be done, for example, by viewing the text file as C++
code, or a similar viewing feature depending on the text editor. This adds the ability to collapse at
every curly bracket in the output of the hierarchy. Collapsing unwanted portions of the output makes
it easier to find what you are looking for.
ICS_classifiable_types
Stores the business object types that can be classified. If your company works with custom business
objects, you must add the item type to this preference to be able to classify it. If you want to classify,
for example, items only, you must remove the Item Revision entry from the list of classifiable types.
AWC_classification_facets_threshold
Sets the number of search facets displayed using the preference. The default value is 200. The
facets are sorted with the most common facets at the top. Exercise caution when setting the
number of returned facets as a very large number can cause a decrease in performance.
AWC_classification_vnc_threshold
Defines the maximum number of visual navigation cards (VNCs) displayed in a search location. The
default value is 15. This preference is not delivered with the software. You must add it manually.
CLS_is_presentation_hierarchy_active
Specifies whether traditional classes or the presentation hierarchy (nodes) are visible in the
classification hierarchy. If this preferences is set to true, the presentation node hierarchy is visible. If
it is set to false, traditional classes are visible.
This user preference is not delivered by default and must be added manually after installing the
presentation layer (Next Generation Classification Server installation option).
CLS_auto_sync_node_hierarchy
Allows the system to mirror operations performed on the classification storage class hierarchy onto
the node hierarchy in the presentation layer.
CLS_search_similar_wso_props_enabled
Specifies the list of workspace object properties that are displayed in the Filters pane when using
the SearchSimliar feature.
AWC_cls_object_filter_sorting
Defines how the classification hierarchy is sorted in the Filter panel. Valid values are:
• Ascending
Sorts the hierarchy in alphabetical order, from A to Z.
• Descending
Sorts the hierarchy in reverse alphabetical order, from Z to A.
• Count (default)
Sorts the hierarchy based on the number of instances for the given filter value.
The following preferences are required when migrating from traditional classes to classification standard
taxonomy (CST) classes using the clsutility -migrate -classification2cst utility:
CST_Classification_to_cst_namespace
Specifies the namespace of all CST objects created by the migration utility.
CST_classification_to_cst_status
Specifies the status of the CST objects created by the migration utility. Valid values are Develop,
Released, or Retired. Objects set to Released can no longer be modified.
The following preferences are used to configure classification artificial intelligence (AI):
CLS_AI_Enable_AI_Engine
Set this preference to true to enable class suggestions.
CLS_AI_Shared_Directory
Specifies a directory where the classification artificial intelligence training model is stored. This is
the same path that you specify during installation of classification AI.
CLS_AI_Engine_URL
Specifies the URL of the microservice that supports classification AI. This URL is displayed during
installation of the feature and has this format:
object_name
object_desc
object_type
owning_user
owning_group
CLS_AI_Enable_Geolus
Set this preference to true to enable the additional comparison of shape parameters using the
Geolus search engine with classification AI.
CLS_AI_Geolus_Max_Num_Results
Limits the number of results returned by the Geolus search engine. By default, this preference is set
to 1000.
CLS_AI_Engine_Probability_Cutoff
Specifies the percentage probability above which classes are considered appropriate suggestions for
classification AI. If too many class suggestions are displayed or you would like to increase the
accuracy of the classes displayed, you can increase the value of this preference. By default, this
preference is set to 10.
CLS_AI_Engine_Suggestions_Cutoff
Specifies the maximum number of suggestions displayed to the user. The default value is 10.
CLS_AI_Query_Start_Date
Specifies the earliest modification date of the data to include in training. Only objects created or
modified after this date are included in the training. If this date is not set, there is no restriction on
objects used in training.
CLS_AI_Query_End_Date
Specifies the latest modification date of the data to include in training. Only objects created or
modified before this date are included in the training. If this date is not set, there is no restriction on
objects used in training.
CLS_AI_Query_Object_Type
Specifies the type of data to include in training. Only objects of the given type (and any child objects
of this type) are included for training. If left blank, the value of this preference is WorkspaceObject
by default.
• The classification search works but facets are not visible (or there are unassigned facets).
1. Set the dynamic prioritization preferences to display all the configured filters. This allows you to
investigate further.
• The classification search works, but there only a limited number of properties available in the
search filters.
Caution:
Setting this value to a high number can cause a decrease in performance or even cause
problems with Solr.
• The Awp0SearchIsClassifyDataIndexed business object type constant is set to true at the item
and item revision level.
This turns on classification indexing. The object type on which this constant is set is indexed for
searching. All subtypes inherit the setting.
• The Awp0SearchIsIndexed business object type constant is set to true at the item and item
revision level.
The object type on which it is set is indexed for searching. All subtypes inherit the setting.
Note:
Do not set this constant at the workspace level since this prevents your database from being
indexable.
Instead, set it true for each object that you want to index. For example, item and item
revision.
Verify that these constants are correctly set using the gettypeconstantvalue utility, for example:
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 is supported in only Microsoft Internet Explorer. If you use any other browser, you
can view digital signatures, but 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 Windows Server Installation or UNIX and Linux Server Installation).
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.
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 Add 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 license was successfully added by clicking 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 the Detach button. 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.
SLM configuration
What is SLM?
SLM is the Teamcenter service lifecycle management application used for performing ongoing work on
products.
You may want to make some properties visible for use, such as add a list of manufacturers.
Before you can configure SLM, you must install the features. Install the following from the Features
panel of Teamcenter Environment Manager (TEM):
• As-Built
Provides searching and BOM extensions necessary to support SLM As-Built capabilities.
Select Active Workspace→Server Extensions→MRO→As-Built.
• As-Maintained
Provides searching and BOM extensions necessary to support SLM As-Maintained capabilities.
Select Active Workspace→Server Extensions→MRO→As-Maintained.
• Service Event
Provides searching and BOM extensions necessary to support SLM Service Event Management
capabilities.
Select Active Workspace→Server Extensions→MRO→Service Event.
You must also install SLM features to Teamcenter using the Extensions→Maintenance Repair and
Overhaul menu in TEM.
See the Teamcenter service lifecycle management documentation in the Teamcenter help collection.
To add a list of manufacturers to the Manufacturer's ID box in the Generate As-Built Structure,
Generate As-Maintained Structure, and Create Lot dialog boxes, in the Business Modeler IDE creates a
list of values and attaches it to the ManufacturerOrgId property on the PhysicalPartRevision and Lot
business objects.
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 pre-configuration 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 collection 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
• 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
Identifies the plan of action for handling this program risk.
Predefined values are: Not Applicable, Accept, Avoid, Mitigate, Transfer.
• 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 Stylesheet (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 stylesheet.
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 tcxml_export and tcxml_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 Breifcase 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 tcxml_import utility.
b. Search for the BulkLoadDefault Optionset and add the opt_bulk_load_in_prod option.
c. On the destination site, navigate to the Teamcenter command prompt and enter the
following.
tcxml_import -u=infodba -p=infodba -g=dba -file=<name of file>.bcz -bulk_load
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
template. Enter the object name exactly as
it appears in the Business Modeler IDE.
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 a Teamcenter object and pieces of information that describe
aspects of the object. The Relations tab in Active Workspace allows you to see the relationships for a
selected object.
You may want to change how relations are displayed to end users.
Before you can configure relations, you must install the features. Install the following from the Features
panel of 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 relationships.
Select Active Workspace→Server Extensions→Relationship Viewer.
<view name="General">
<ruleName>GenericRule</ruleName>
<group name="relations">
<filter name="Attach" parameterSet="Attach" color="(64,100,142)"/>
<filter name="Folder" parameterSet="FolderRelation" color="(196,189,151)"/>
<filter name="Master" parameterSet="Master" color="(167,153,80)"/>
<filter name="Traceability" parameterSet="Traceability" color="(255,182,121)" />
• 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.
The parameterSet element specifies what objects or relations are to be added to a view, for example,
the following is the parameterSet definition for the Attach relation:
<parameterSet name="Attach">
<fact>source=GRM,key=Attach,relationType=TC_Attaches,targetDirection=forward,
inputTypes=ItemRevision</fact>
<fact>source=GRM,key=Attach,relationType=TC_Attaches,targetDirection=backward,
inputTypes=Dataset</fact>
<fact>source=GRM,key=Attach,relationType=IMAN_specification,targetDirection=forward,
inputTypes=ItemRevision,excludeTypes=FullText</fact>
<fact>source=GRM,key=Attach,relationType=IMAN_specification,targetDirection=backward,
inputTypes=WorkspaceObject</fact>
<fact>source=Property,key=Attach,propertyName=IMAN_Rendering,targetDirection=forward,
inputTypes=ItemRevision</fact>
</parameterSet>
• name
Specifies the name of the parameterSet element. This name must be the same as defined in the
View element.
• fact
Specifies the input parameters to the query service.
• source
Specifies what query service. The following query services are supported:
• GRM
An example is:
source=GRM,key=Attach,relationType=TC_Attaches,targetDirection=forward,
inputTypes=ItemRevision
• WhereUsed
An example is:
source=WhereUsed,key=Structure,inputTypes=ItemRevision
• WhereReferenced
An example is:
source=WhereReferenced,key=Folder,level=1,inputTypes=Item|Folder,
outputTypes=Folder
• Property
An example is:
source=Property,key=Folder,propertyName=contents,targetDirection=forward,
inputTypes=Folder
• key
Specifies one of the existing relation types.
• relationType
Specifies the internal business object name of a Teamcenter relation type.
• targetDirection
Specifies the direction of the relation. The direction values are forward and backward.
The forward direction represents the edge that comes out of the source node and targets a lower
level node.
The backward direction represent the edge that comes out of the source node and targets an upper
level node.
• inputTypes
Queries only those objects that are specified in this element.
• outputTypes
Returns only those objects that are specified in this element. For example, for a folder, you can specify
that the query only return folder, item, or dataset.
• excludeTypes
Specifies what object types to exclude from the query results. For example, when you want your
query to return all dataset types except the FullText dataset type, use this element to exclude the
FullText dataset type.
When users open an object in the Relations tab, the system automatically expands 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. You
can change this expansion using the defaultExpandDirection setting in the RB_UIConfigure.xml file.
3. In the Named References dialog box, select RB_UIConfigure.xml and click Download.
4. Open the RB_UIConfigure.xml file and add the defaultExpandDirection setting as shown:
<view name="General">
<ruleName>GenericRule</ruleName>
<defaultLayout>Bottom-to-Top</defaultLayout>
<defaultExpandDirection>backward</defaultExpandDirection>
…
</view>
• forward
Expands outgoing relations one level upon open. This is the default behavior if there is no
defaultExpandDirection setting in the configuration file.
• backward
Expands incoming relations one level upon open.
• all
Expands both incoming and outgoing relations one level upon open.
6. Delete the original RB_UIConfigure.xml file from the Named References dialog box and import
the new RB_UIConfigure.xml file.
To localize the custom view or the names that appear in the custom Relations Legend views that you
created:
3. In the Named References dialog box, select the RB_UIConfigure.xml file and click Download.
4. Open the RB_UIConfigure.xml file and update the value of the view name property to localize the
name of the custom view and the filter name property to update the name of the relations and
object names. For example, to localize the names of relations and objects that are in the Design
view in Chinese, update the value of the filter name property with the localized name as follows:
<view name="Design">
<ruleName>GenericRule</ruleName>
<defaultLayout>IncrementalHierarchic</defaultLayout>
<group name="relations">
<filter name="Attach" parameterSet="Attach" color="(64,100,142)"/>
<filter name="Impact" parameterSet="Impact" color="(243,130,37)"/>
<filter name="Master" parameterSet="Master" color="(167,153,80)"/>
<filter name="Structure" parameterSet="BOMStructure" color="(138,66,8)"/>
<filter name="Traceability" parameterSet="Traceability" color="(255,182,121)"/>
<filter name="WhereUsed" parameterSet="WhereUsed" color="(149,179,215)"/>
</group>
<group name="objects">
<filter name="Change" parameterSet="Change" color="(243,130,37)"/>
6. Delete the original RB_UIConfigure.xml file from the Named References dialog box and import
the new RB_UIConfigure.xml file.
Update the RV1_DARB_RelationBrowserViews.Relations preference with the name of the views that
you want listed in the Relations Legend panel. The first name listed in the preference appears as the
default view.
A user interface style defines aspects of user interface design such as shape and color of objects and
relations. These user interface styles are defined in an XML dataset that is specified in the
RV1_DARB_GraphStyle_file_name preference.
You can configure what styles your objects and relations use by modifying the XML dataset specified in
the RV1_DARB_PresentationRule_file_name preference, for instance,
RelationBrowserPresentationRule.
This file specifies what style to apply to an object or relation and what conditions to process when
applying the style:
• 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.
The user interface style controls aspects of user interface design such as shape and color of objects and
relations. The style is defined in an XML file. The name of this XML file is specified in the
RV1_DARB_GraphStyle_file_name preference.
<EdgePresentation id="TraceabilityStyle">
<parameter name="lineStyle">
You can configure the style of nodes and edges in the Relations node in Active Workspace using a
combination of preferences and XML files.
Use the RV1_DARB_Tooltip_Max_Row preference to define the maximum number of rows to show in
the Relations node tooltip. Use the RV1_DARB_Tooltip_Max_Width preference to define the maximum
character length to show in the Relations node tooltip.
3. In the Named References dialog box, select GraphStyle.xml and click Download.
4. Open the GraphStyle.xml file and make the necessary changes. For example, to change the line
style of the traceability relation to dash, update the linestyle option under the Traceability Style
section from SOLID to DASH.
<EdgePresentation id="TraceabilityStyle">
<parameter name="lineStyle">
<value>DASH</value>
</parameter>
<parameter name="lineWidth">
<value>2</value>
</parameter>
<parameter name="arrowOption">
<value>target</value>
</parameter>
<parameter name="arrowSourceShape">
<value>circle</value>
</parameter>
<parameter name="arrowSourceFillInterior">
<value>true</value>
</parameter>
<parameter name="arrowSourceScale">
<value>1.0</value>
</parameter>
<parameter name="arrowTargetShape">
<value>simple</value>
</parameter>
<parameter name="arrowTargetFillInterior">
<value>false</value>
</parameter>
<parameter name="arrowTargetScale">
<value>1.0</value>
</parameter>
<parameter name="tooltip">
<value>relationType</value>
</parameter>
</EdgePresentation>
6. Delete the original GraphStyle.xml file from the Named References dialog box and import the
new GraphStyle.xml file.
Update the RV1_DARB_Filter_Properties preference with the internal names of the properties that you
want to see in the properties filter.
Update the RV1_DARB_Expand_Incoming_Levels preference with the number of levels that incoming
links can be expanded.
Update the RV1_DARB_Expand_Outgoing_Levels preference with the number of levels that outgoing
links can be expanded.
When there are too many relation lines attached to an object, it becomes difficult to understand where
the lines are coming from. For easier understanding of where the lines are coming from, you can
terminate all edges as one point.
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 collection.
Before you can configure Schedule Manager, you must install the features. Install the following from the
Features panel of Teamcenter Environment Manager (TEM):
Allows interaction between Schedule Manager and Change Management in Active Workspace. It
allows Active Workspace users to relate schedules and change objects.
• 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).
• 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 collection 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.
Search configuration
What is search?
Searching finds data stored in the Teamcenter environment. Users can search for many types of data,
such as objects, structured content, shapes, and classifications.
You can configure many aspects of indexing and search, such as:
• Structure indexing
• Shape search
• Classification search
You can also install other search-related features such as Active Content and dispatcher.
Before you can configure search, you must install the indexing features.
Structure indexing is part of the Active Content Structure feature that provides support for fast structure
(BOM) navigation and in-context search capability leveraged by the Active Workspace client.
If you are using Massive Model Visualization (MMV), structure indexing must be set up. MMV also
requires Visualization Data Server. The Visualization Data Server uses the structure indexing
infrastructure of Active Workspace to keep cached product structures up-to-date.
For any given product configuration, there are two indexes maintained:
• An index within the Teamcenter database that is used for structure modeling and navigation.
• An index within Solr used for in-context searches. (Structure data is stored within the same Solr
instance as object data but within a separate collection.)
• Template
Contains the model and schema, the tcserver libraries, and so on.
Use the bomindex_admin utility and the TcFTSIndexer to manage BOM index data. The
runTcFTSIndexer utility maintains both Teamcenter and Solr indexes. Structure indexing support is
added into the TcFTSIndexer installation during installation. Active Workspace should already be
installed and working.
All Active Workspace indexing is orchestrated by a single TcFTSIndexer instance. This is the index
orchestrator that performs orchestration functions for all types of indexing (object data, structure, and
so on). It is expected that the TcFTSIndexer is run with the -service argument, and separate commands
are issued to control the indexing operations for the different indexing types. A given indexing action
can be executed once or executed on a given interval.
Indexing structure content requires effort. Therefore, you must understand what content should be
indexed for the most benefit, and the configurations of that content that are appropriate and useful for
index-enabled interaction.
For example, suppose you have a dozen significant top-level structures representing product platforms.
This is a clear example of content that would benefit from being indexed. Even if that content were no
longer active within the engineering organization or were out of production, there may still be value to
sustaining that definition if users would benefit from the information about those products.
To help you decide what you should index, following are some examples.
• Must index
• R&D concepts
Structure indexing provides where-used capabilities in the top-level assembly contexts that are indexed
and facet-based search filtering capability.
Structure indexing is required for Massive Model Visualization (MMV) large structures. MMV also
requires the Visualization Data Server. The Visualization Data Server uses the structure indexing
infrastructure of Active Workspace to keep cached product structures up-to-date.
You can retain interim files that represent changes between the last valid indexed version and the latest
structure data.
Teamcenter maintains a separate index for structured content to ensure search results are always up-to-
date. The administrator defines the structures and configurations to index, minimizing response times
whenever a user searches for data.
The following diagram shows the process that occurs when you create an index for structured content.
To define structured content search indexes, you define property constants on structure elements in the
Business Modeler IDE to specify the properties to index. The Teamcenter indexer then indexes those
properties when it creates or updates the structured content index. You use the same property
constants as you use with the basic Active Workspace search but attach them to structure elements.
Changing the structure filters follows the same process as other search filters.
You must reindex the structure at regular intervals to ensure that the search results reflect changes to
the structure. Manual edits and system operations (for example, release and revise) on structures are
reflected only after the indexer processes the changes.
Each top level of a structure is indexed for all the specified revision rules and effectivities. For example:
For best performance, Siemens Digital Industries Software recommends you index only those structures
and configurations that are frequently accessed.
Note:
Whenever there is a change to a revision rule or a saved variant rule (SVR), you must run an index
synchronization on the structure.
For each searchable revision rule, the system creates a unique set of occurrences that includes all
possible variations in the structure (sometimes referred to as a 150% BOM). Each indexed occurrence is
stored with a bit mask that identifies the valid variant rule for the occurrence. The variant mask is
exported in TC XML format and indexed in the Teamcenter indexer. Teamcenter can then process the bit
mask to build a 100% BOM for any given variant rule.
Tip:
To have the index update the variant mask when new SVRs are added to the index definition, set
the PersistFullyExpandedSVR site preference to true before creating the SVRs.
The following diagram shows the process that occurs when a user changes index content and
Teamcenter updates the index.
Index the structure content by running the bomindex_admin utility, for example:
Maintain the structure indexes by running the runTcFTSIndexer utility using the structure type.
Over the course of an index life cycle there are 16 possible states. These states represent the current
processing or condition the index is in.
1. Created
Product configuration parameters are defined but the index data is not yet generated.
2. Active
The index data is generated and synchronized periodically.
3. Delete pending
The product configuration is marked for deletion, or the delete processing is occurring.
4. Deleted
There are no longer any artifacts relating to the index configuration.
The current index state and configuration details for product configurations are maintained within the
Teamcenter database as unique BOMIndexAdminData table entries. As indexes for product
configurations are created, maintained, and then eventually deleted, it is the BOMIndexAdminData
table entry that tracks the configuration and state information. The data contained in the
BOMIndexAdminData table is often referred to as product configuration, BIAD, or BIADInfo.
The BOMIndexAdminData entry for a given product configuration is created (and deleted) using the
bomindex_admin command line utility.
The TcFTSIndexer is responsible for orchestrating the index generation and synchronization of the
indexes defined by the BOMIndexAdminData entries.
Updating an indexed structure with an added or modified saved variant rule (SVR)
Structure indexing supports adding new as well as modified saved variant rules on an existing indexed
structure without a need to completely re-index the structure. When SVRs are saved, they do not
automatically capture the default and derived default values. These values must be saved for each SVR
that is used for indexing.
Log on to the Teamcenter client and set the PersistFullyExpandedSVR preference to true. Load the
existing SVR in Structure Manager and click the Save button.
Administrators can index a structure with a closure rule to skip a subassembly or leaf BOM lines from
structure indexing. Such lines do not appear in Active Workspace. These subassembly or leaf BOM lines
do not appear in in-context search results and are not considered for index synchronization. The closure
rule based filter can be applied per indexed configuration. The input file line format is as follows:
If the closure rule is updated, removed, or replaced, the administrator must trigger re-index.
A product configuration has many parameters, and they are passed to the utility in a text file specified
by the -inputfile parameter. The input file is described in the bomindex_admin utility.
You can specify up to 110 effectivities. The effectivity numbers must be comma separated. Also, you
must repeat the effectivity end item query string for each effectivity unit, for example:
| 5,10,12 | item_id=HDD-0527,item_id=HDD-0527,item_id=HDD-0527 |
When performing the same function (action) on multiple product configurations, each product
configuration can be specified on separate lines in the input file. Add these one at a time to help
manage errors that may occur during the creation process.
Note:
Any revision status is not supported, either in the revision rule or in a custom revision rule entry
for the input file. Find information on creating revision rules in the Teamcenter online help.
The TcFTSIndexer is used to orchestrate the required processing to create, synchronize, and eventually
delete the indexes defined by the BOMIndexAdminData tables (BIADs). TcFTSIndexer can be run in a
number of ways and is also used to perform object data indexing.
The TcFTSIndexer has an extensibility model that allows different indexing types to define the
processing required using a sequence of steps organized in flows. Steps can be reused by multiple flows
and different indexing types. This is different than the traditional QETL model where every action is
plugged in as a part of query, extract, transform, or load.
• Type
Specifies the name of the indexing type (for example, objdata, structure).
• Action
Specifies a name that ties a command line option to start a flow (for example, sync starts the
synchronization flow).
• Flow
Specifies the flow to execute (for example, reindexflow, syncflow).
• Step
Specifies a single step that is executed as part of a flow.
• A number of steps that are the building blocks of the various flows
The general syntax for starting any action is using the runTcFTSIndexer utility is:
The -help argument lists all available actions. Do not use any actions described as Internal use only.
runTcFTSIndexer -help
If you are using multiple types of indexing (for example, object indexing and structure indexing), the
TcFTSIndexer process must first be started in service mode, for example:
runTcFTSIndexer -service
However, you can still run the -task=structure:show and -task=structure:help tasks without having to
start it as a service first.
• -task=structure:test
Performs basic tests, such as for Teamcenter logon, FMS connectivity, verifying or downloading of
transform files, Solr schema, and so on. This command cannot be run concurrently with other
structure indexing actions.
• -task=structure:show
Shows a summary of all configured product configurations.
• -task=structure:sync
Performs normal synchronization and delete actions for all product configurations. This command
queues up all the synchronization actions for the product configurations. The queued synchronization
actions are processed as resource permits. This command cannot be run concurrently with other
structure indexing actions. The TcFTSIndexer must be running in service mode to run this command.
• -task=structure:syncone product-config-UID
Performs normal synchronization and delete actions for a single product configuration UID. This
command queues up all the synchronization actions for the product configurations. The queued
synchronization actions are processed as resource permits. This command cannot be run concurrently
with other structure indexing actions.
• -task=structure:recoverfailures
Changes all product configurations with failed states to the last known good state. Structure indexing
will resume from the recovery state and structure will not be re-indexed completely.
For example:
• -task=structure:resetall
Downloads the latest transform and schema files, resets all active product configurations to the
ReadyToIndex state, and resets all deleted product configurations to the MarkedForDeletion state.
This command cannot be run concurrently with other structure indexing actions.
• -task=structure:reset product-config-UID
Resets the given PRODUCT_CONFIG_UID setting to the ReadyToIndex or MarkedForDeletion state.
This command cannot be run concurrently with other actions.
TcFTSIndexer troubleshooting
TcFTSIndexer logs are located in TC_ROOT\TcFTSIndexer\logs\. These logs contain messages from
object and structure data as well as framework messages. For example:
• TcFtsIndexer_objdata.log contains object data messages. These messages are filtered from
TcFtsIndexer.log.
• TcFtsIndexer_structure.log contains structure data messages. These messages are filtered from
TcFtsIndexer.log.
• logging.rootLogger
• logging.logger.Teamcenter
• logging.logger.Teamcenter.Soa.Communication
2. Change the logging level to DEBUG for the following in the %TC_ROOT%\ TcFTSIndexer\conf
\log4j.properties file:
• Log4j.logger.com.siemens.teamcenter.ftsi
3. Restart Solr and theTcServers and rerun the test use case.
4. Send the TcFtsIndexer log and the matching syslog and comlog files to the Global Technical
Access Center (GTAC) team.
You can identify the syslog and comlog files by matching the local time in the TcFtsindexer log
where the error occurred with the UTC time within the syslogs. Send all files that fit this criteria.
Note:
To avoid performance issues, revert the logging levels back to the original state when your debug
session is complete.
Note:
If you need more information or if a file is referenced in
the error, you can search for the TaskId in the files
associated with the error, including the files from the
previous step, in the TcFtsIndexer\working directory. For
example, if the error is in Transform, the associated
directory contains export files and transform files that
you can use to resolve the error.
Note:
To ensure the optimal number of warmed up servers,
Siemens Digital Industries Software recommends that the
pool manager that maintains the tcservers be setup on a
separate, dedicated machine.
runTcFTSIndexer -maxConnections=connections
Note:
If you receive WARN - Connection to Tc failed
messages, check to ensure the number of
Tc.maxConnections has not exceeded the number of
warmed servers.
Login error You may encounter the following error when attempting to run
the runTcFTSIndexer utility and the environment is configured
for SSO:
It may occur because the user running the utility is not properly
authenticated in the LDAP server. The default user that runs the
utility is infodba, as defined in the Tc.user setting in the TC_ROOT
\TcFTSIndexer\conf\TcFtsIndexer.properties file.
Ensure that the user running the indexer is authorized in LDAP:
1. If you are using multiple TCCS SSO App IDs, make sure they
are configured correctly.
You can configure multiple application IDs using the
Environment Settings for Client Communication System
panel in Teamcenter Environment Manager (TEM).
set mytcenv=password
set mytcenv=
tcserver Solr Error: An error has occurred during JSON parsing: Unknown
authentication value type. Line 1 character 1.
error
To resolve this error, update Solr credentials to reset the Solr
password.
Troubleshooting structure
TcFTSIndexer output indicates a The following message is displayed in output after running the
type definition does not exist runTcFTSIndexer utility:
Changes to structured content do Changed data is shown immediately in searches when users
not appear immediately in add, remove, or change elements (occurrences or BOM lines).
searches.
However, when users change the underlying objects to which
occurrences or BOM lines refer, the changed data is not shown
immediately in the content. This includes:
Users see these changes in the content the next time data is
indexed.
Note:
The interval between indexing synchronizations is set by
the search administrator.
To manage a given structure index, it first must be created using the bomindex_admin utility with the -
function=create option.
Once the product configuration is created, the TcFTSIndexer service automatically maintains the indexes
keeping them synchronized with the Teamcenter data that defines the structure. The index is
synchronized periodically based on the interval the synchronization operation runs using the following
runTcFTSIndexer utility command:
Once the product configuration is no longer needed, the bomindex_admin utility is used to mark the
product configuration for deletion using the -function=delete option. On the next synchronization
interval, the TcFTSIndexer process deletes the indexes and then finally deletes the associated
BOMIndexAdminData object that defined the product configuration.
To create an index for a specific product configuration, use the bomindex_admin utility with the -
function=create and -inputfile options. Determine the product configuration that defines the index.
Create an input file with the format specified, configuring the index.
You can specify up to 110 effectivities. The effectivity numbers must be comma separated. Additionally,
you must repeat the effectivity end item query string for each effectivity unit, for example:
| 5,10,12 | item_id=HDD-0527,item_id=HDD-0527,item_id=HDD-0527 |
You can specify up to 256 variant rules. The variant rules (also known as saved variant rules) are comma
separated and follow this format:
SVR-name:owning-item-query-string:owning-itemrevision-ID
Assuming that there are no errors, this creates the required BOMIndexAdminData entries for the
specified product configuration. At this point, the configuration required to generate and maintain the
indexes exists, but there is no actual index data.
Save the input file for later use when the product configuration must be deleted.
When a given product configuration is no longer needed, mark the index for deletion so that the index
artifacts can be cleaned up. Use the bomindex_admin utility to mark the product configuration for
deletion using the same input file contents when the index was created.
Assuming there are no errors, this marks the BOMIndexAdminData entries for deletion. On the next
sync action, the index data and BOMIndexAdminData table entry are deleted. At the end of the sync
action (delete), the show output is printed to the console:
------------ ------------
AC gcRNr4APIWcIeC 9Axq$7ymM1y6BD 8 SUB-479/A;1-holland-assy
2,254 2,254
AC gcUNanthIWcIeC $JCJg8_$M1Cq9C 8 flipfone_assembly/A;1
14 14
------ ------------------ -------------- ----- ------------------------------
------------ ------------
Little should be required to maintain the structure indexes. The TcFTSIndexer service handles all
processing as part of the -task=structure:sync -interval=seconds processing.
It is good practice to verify index states occasionally by using the -task=structure:show action. The
show action prints a summary of information to the service console of all product configurations
configured for indexing. Details of the configured indexers is shown in output as well as counts and
status. When synchronization is not actively processing an index, all states should be 8. (See the
following example.) If synchronization is actively processing a given index, the index can also be in
various intermediate states. Within the show output, verify the state, the last update date, and that the
TC counts and Solr counts match.
runTcFTSIndexer -task=structure:show
The following example output in the service console shows all indexes are in state 8. The counts match
and the last update dates are current.
Note:
The show action does require available Teamcenter connections. If the show command takes a
long time to run it usually is the result of other actions within the indexer using the connections.
Once a connection becomes available, the show action runs.
The show output currently is only displayed in the TcFTSIndexer service console. The show output
is also printed at the end of many of the structure indexer actions.
Another useful TcFTSIndexer option is -status. This prints status information about any currently running
flows. The output in the syncdispatchstep sections provides details about current structure:sync
processing.
runTcFTSIndexer –status
The following output was gathered while the structure:sync command was in process. For
structure:sync actions, the most useful information is contained in the syncdispatchstep output
sections. Run the runTcFTSIndexer -status command to see output similar to the following example:
------------------------------------------
syncdispatchstep------------------------------------------
TaskId Time Status StepInfo
U14977b73edd1c0a802641379 0.00 Started {ProductConfigUID=goZRkWxoqd$DyB,
WindowUID=nmSCFWD0M1SBXC,
Process=sync (update),
Status=SOA call in progress, CurrentState=8 (SolrIndexGenSuccess), StateHistory=[8],
LastStatusUpdate=2014-10-27 17:02:42 -0500}
-----------------------------------------------------------------------------------------
-----------
Status: Created: 0 Started: 1 Done: 0 Error: 0
Total Time 0.00 Total Count 0
Step Summary
syncdispatchstep
Status: Created: 0 Started: 1 Done: 0 Error: 0
Total time for all Steps 0 sec
Overall Time 5.314 sec
------------------------------------------
syncdispatchstep------------------------------------------
TaskId Time Status StepInfo
U1493c8428cd7c0a802641381 0.00 Started {ProductConfigUID=gocRkWxoqd$DyB,
WindowUID=ybqRdpVmM1Sn1A,
Process=sync (update),
Status=Waiting for 1 permits, CurrentState=8 (SolrIndexGenSuccess), StateHistory=[8],
LastStatusUpdate=2014-10-27 17:02:39 -0500}
-----------------------------------------------------------------------------------------
-----------
Status: Created: 0 Started: 1 Done: 0 Error: 0
Total Time 0.00 Total Count 0
Step Summary
syncdispatchstep
Because the sections and status output is scattered you may want to filter the output to show only the
status lines. Run the runTcFTSIndexer -status | find "ProductConf" command to see output similar to
the following example:
This output shows the various product configurations, what initial state they were in, the states they
were propagated through (for this sync action), and other status information about what types of
operation are currently pending such as waiting on connection, SOA call in progress, or done.
Managing failures
When a product configuration ends up in a failed state, it remains in that state until the administrator
runs the structure:recoverfailures action. When that is run, any failed product configurations are
returned to the initial state and the index is regenerated (re-indexed) on the next synchronization.
runTcFTSIndexer -task=structure:recoverfailures
On the next synchronization interval, that product configuration's indexes regenerated, and in this case,
it succeeds. Following is the truncated output:
If a product configuration continues to fail, output generated during the synchronization processing,
TcFTSIndexer logs, and tcserver syslog files should help diagnose the underlying issue.
A common source of errors is stopping the TcFTSIndexer while synchronization operations are in
progress. If you wish to stop the TcFTSIndexer you should never kill the process while actions are being
processed. Use the -stop option to stop the scheduling of any flows, then verify that all flows have
stopped using the -status option, and then finally shut down the TcFTSIndexer process using Ctrl+C in
the service console window.
Sometimes you may observe that the FTS indexer is stuck. The symptoms of this condition are one or
more of the following:
• When you run TcFTSIndexer.bat with the -status argument, it reports status as Status=SOA call
in progress. This status does not change over a long period of time.
These symptoms indicate the Teamcenter server crashed while processing and the crash was not
reported back to the FTS indexer by the pool manager or Web tier.
To resolve this condition, you should stop synchronization, then (after an interval) restart the
TcFTSIndexer service and reset the stuck configuration.
• Initial
Indicates either new index creation or that an existing index is marked for deletion. In the state
output, the create state is 0 - ReadForIndexing and the marked for deletion state is 10 -
MarkedForDeletion. These states are usually set by the bomindex_admin utility, but can also be set
by certain TcFTSIndexer actions. When the next sync action occurs, any product configuration in
these states is propagated to other states during processing.
• Transitional
Tracks the intermediate progress while processing a given product configuration. Transitional states
should naturally propagate to final or terminal (failed) states during sync processing. Transitional
states are only expected to be encountered during sync processing. If a transitional state is
encountered at the start of sync processing, that indicates the given product configuration was not
able to complete index processing for an unknown reason and that product configuration is promoted
to the closest failure state.
• Final
Indicates index processing for the given product configuration completed normally (8 -
SolrIndexGenSuccess). Although you might expect to have a final deleted success state as well, the
final step in index delete processing is to delete the product configuration data for the index, along
with the state information.
• Terminal
Track failures at particular steps in index processing. Once these states are reached, no further
processing occurs for the given product configuration. Failure states are set either:
• Directly as a result of a processBOMIndex SOA call when the tcserver process had an issue
processing the index. Examine the tcserver syslogs for details about the failure. Examine the
TcFtsIndexer.log file for the ERROR message and any other information that was sent back with
the error.
• Or the failure was detected in the TcFTSIndexer process due to a failure or an unexpected event.
Examine the TcFtsIndexer.log file or the TcFtsIndexer_structure.log file for ERROR information.
To recover from terminal states (failures) use the structure:recoverfailures action, which resets all
failed product configurations to the appropriate initial state and the next sync action attempts to
process them again.
You must be careful that TcFTSIndexer is never stopped while the structure:sync action is running. If it
is stopped prematurely any indexes that were still being processed are in transitional states and are set
to terminal states on the next sync action.
Run the following runTcFTSIndexer utility command to see the list of structure index states:
runTcFTSIndexer -task=structure:show
0 – ReadyToIndex
Indicates an initial index state usually set by the bomindex_admin -function=create command.
This state is also set by the structure:reset, structure:resetall, or structure:recoverfailures
actions for active but failed indexes.
1 – IndexGenStarted
Indicates a transitional state set by the processBOMIndex SOA operation. It is set while the
Teamcenter database index generation is in progress.
2 – IndexGenSuccess
Indicates a transitional state set by the processBOMIndex SOA operation. It is set when the
Teamcenter database index generation is complete.
3 – IndexGenFailure
Indicates a terminal failure state set by the processBOMIndex SOA operation. It is set if the
Teamcenter database index generation failed.
4 – IndexExportStarted
Indicates a transitional state set by the processBOMIndex SOA operation. It is set while the
Teamcenter database index export is in progress.
5 – IndexExportSuccess
Indicates a transitional state set by the processBOMIndex SOA operation. It is set while the
Teamcenter database index export is complete and the TC XML download is starting.
6 – IndexExportFailure
Indicates a terminal failure state set by the processBOMIndex SOA operation. It is set if the
Teamcenter database index export or TC XML download fails.
7 – SolrIndexGenStarted
Indicates a transitional state set by structure indexer. It is set while the TcFTSIndexer is
transforming and uploading the index data to Solr.
8 – SolrIndexGenSuccess
Indicates a final resting state set by structure indexer. It is set when the TcFTSIndexer has
successfully updated Solr with the index data.
9 – SolrIndexGenFailure
Indicates a terminal failure state set by structure indexer. It is set if the TcFTSIndexer had a failure
while transforming or uploading the index data.
10 – MarkedForDeletion
Indicates an initial delete state usually set by the bomindex_admin -function=delete command. It
is also set by the structure:recoverfailures action for any deleted indexes that failed during delete
processing.
11 – IndexDelStarted
Indicates a transitional state set by the processBOMIndex SOA operation. It is set while the
Teamcenter database index data is being deleted.
12 – IndexDelSuccess
Indicates a transitional state set by the processBOMIndex SOA operation. It is set when the
Teamcenter database index data delete is complete.
13 – IndexDelFailure
Indicates a terminal failure state set by the processBOMIndex SOA operation. It is set if the
Teamcenter database index data delete failed.
14 – SolrIndexDelStarted
Indicates a transitional state set by the structure indexer. It is set while the TcFTSIndexer is deleting
the Solr index data.
15 – SolrIndexDelSuccess
Indicates a transitional state set by the structure indexer prior to object deletion. After this state,
the BOMIndexAdminData entry is deleted.
16 – SolrIndexDelFailure
Indicates a terminal failure state set by the structure indexer. It is set if the TcFTSIndexer had a
failure while deleting the Solr index data.
17 – IndexGenSyncStarted
Indicates a transitional state set by the processBOMIndex SOA operation when an index was
previously synchronized and is currently being synchronized again. (This is a synchronization
update as opposed to an initial synchronization.)
This is the actual state propagation that occurs when processing indexes. Not all of these states are
necessarily seen in the indexer as many are expected to be transitioned during backend server
processing. Following is a complete set of state propagations for various types of sync processing:
• sync (initial)
0 - ReadyToIndex
1 – IndexGenStarted (On failure, processing goes to 3 – IndexGenFailure and then stops.)
2 – IndexGenSuccess
4 – IndexExportStarted (On failure, processing goes to 6 – IndexExportFailure and then
stops.)
5 – IndexExportSuccess
7 – SolrIndexGenStarted (On failure, processing goes to 9 – SolrIndexGenFailure and then
stops.)
8 – SolrIndexGenSuccess (Processing then stops.)
• sync (update)
8 – SolrIndexGenSuccess
17 - IndexGenSyncStarted (This is a transitional state set by the processBOMIndex SOA
operation.)
4 – IndexExportStarted (On failure, processing goes to 6 – IndexExportFailure and then
stops.)
5 – IndexExportSuccess
7 – SolrIndexGenStarted (On failure, processing goes to 9 – SolrIndexGenFailure and then
stops.)
8 – SolrIndexGenSuccess (Processing then stops.)
• sync (delete)
10 - MarkedForDeletion
11 – IndexDelStarted (On failure, processing goes to 13 – IndexDelFailure and then stops.)
12 – IndexDelSuccess
14 – SolrIndexDelStarted (On failure, processing goes to 16 – SolrIndexDelFailure and then
stops.)
15 – SolrIndexDelSuccess (The entry is deleted.)
Run the following runTcFTSIndexer utility command to see the structure index status:
runTcFTSIndexer -task=structure:show
• Status
Indicates the general category of the index state. The output is sorted by the status category.
■ AI
Flagged for initial index generation or re-index.
■ AP
Indicates that sync process in progress.
■ AC
Indicates that the sync process is complete.
■ AF
Indicates that the sync process failed.
■ DI
Flagged for deletion.
■ DP
Indicates that deletion is in progress.
■ DF
Indicates that the deletion failed.
• Window UIDs
Indicates the BOM window UID.
• State
Indicates the state of the index. A state legend is included in the show output.
• Name
Indicates the name of the top line of the product structure.
• TC Count
Indicates the number of occurrences found in the database for this product configuration.
• Solr Count
Indicates the number of occurrences found in Solr for this product configuration. (The counts should
match.)
Following is an example of the output in the syncdispatchstep section filtered to show only the
structure status information:
• ProductConfigUID
Indicates the UID of the BomIndexAdminData object that identifies the product configuration details.
• WindowUID
Indicates the BOM window UID.
• Process
Indicates the type of processing that is occurring for the given product configuration. Following are
available values:
• Dispatching
Indicates that dispatching is occurring. This is a transient message.
• sync (initial)
Indicates the first time the index is generated (for example, during re-index).
• sync (update)
Indicates an incremental sync update is occurring.
• sync (delete)
Indicates sync delete processing.
• Status
Indicates fine-grained detail about the current processing. Possible values include:
• Download
Indicates that export files are being downloaded.
• Transform
Indicates that export data is being transformed into Solr files.
• Solr
Indicates that Solr is being updated.
• Done
Indicates that process completed without error.
• Failed
Indicates that an error occurred.
• CurrentState
Indicates the current state of the given product configuration.
• StateHistory
Indicates the history of the states recorded while processing this product configuration during this
sync process. Some expected values are [8, 5, 8] (sync update) and [0, 2, 5, 8] (initial sync).
• Configuration file
TC_ROOT\TcFTSIndexer\conf\TcFtsIndexer_structure.properties file
This properties file configures the structure indexing including the type, flows, steps, and actions.
Most of the content in this file should not be modified. There is one set of properties that configures
control logic to limit the number of concurrent sync operations, weighting the different types of sync
actions (initial versus update) differently. The reason for the different weighting is that initial sync
processing is a much more resource intensive operation on the tcserver instance and database
processes.
Default values are shown in the file as follows:
#
# control the number of concurrent structure syncs to limit server and oracle load
#
permits.total=7
permits.required.initialsync=3
permits.required.updatesync=1
For a given type of sync actions to run (initial or update), it must be able to obtain the required
number of permits for that type. There is a limited (total) number of permits that can be used at any
given time. Any sync operation that cannot obtain the required permits waits until other sync
processing finishes, releasing more permits. This controls the load on the servers during the sync
processing.
The combinations of sync processes that can run concurrently:
When making changes to these values also consider the maximum number of connections properties
found in the TcFtsIndexer.properties file.
TC_ROOT\TcFTSIndexer\conf\log4j.properties
This file is used to change the logging level. (The default logging level for the TcFTSIndexer process is
INFO.)
• Log file
TC_ROOT\TcFTSIndexer\logs\TcFtsIndexer.log
• Cache files
TC_ROOT\TcFTSIndexer\cache\*.cache
These files may need to be deleted if Teamcenter preferences are changed that affect the Solr
installation and FMS.
If there are steps that need to be offloaded to a different machine for CPU or memory optimizations,
mark them as step-name.usedispatcher=true in the property file. Each step must implement the
dispatcher-specific interfaces. These methods are called by the TcFTSIndexer framework from the
TcFTSIndexer orchestrator or the Dispatcher module depending on the context.
1. Make sure that the TcFTSIndexer is installed and working in dispatcher mode.
2. Create a dispatcher flow that calls the step to be run in the Dispatcher module in the
TcFtsIndexer_type-name.properties file.
7. Run the main flow from TcFTSIndexer orchestrator using the -dispatcher argument.
If you installed the Shape Search feature, you can configure it using the following preferences:
• GeolusServer
Defines the URL used for communication between shape search and Geolus.
• AWC_ShapeSearch_Max_Result_Count
Improve performance by setting the maximum number of search results. The default is 3000, and the
maximum is 5000.
• SS1_DASS_enable
Enables and disables shape search.
• SS1_DASS_shape_default
Specifies the default shape similarity for shape search.
• SS1_DASS_size_default_max
Specifies the default upper range limit a user can specify when applying a size filter.
• SS1_DASS_size_default_min
Specifies the default lower range limit a user can specify when applying a size filter.
• SS1_DASS_size_lower_limit
Specifies the smallest lower range limit a user can specify when applying a size filter.
• SS1_DASS_size_upper_limit
Specifies the highest upper range limit a user can specify when applying a size filter.
To best plan implementing search for your users, see the Administering Search Guidemap in the
Teamcenter help.
The Shape Search feature in Active Workspace uses the Geolus shape search engine. To enable
communication between shape search and Geolus, you must create the GeolusServer preference.
Note:
This step is required only if you installed Shape Search.
Using Preference Management in Active Workspace or Organization in the rich client, create the
GeolusServer preference with the following properties:
• Name: GeolusServer.
• Category: DecisionApps.ShapeSearch.Preferences.
gServer is the machine name or IP address of the machine running the Geolus server. It must be
accessible by all Teamcenter clients that need to connect to it.
gPort is the port number that the server uses to handle HTTP or HTTPS requests.
Use the following Teamcenter preferences to specify which thumbnails are displayed.
• TC__thumbnail_relation_order
• TC__thumbnail_dataset_type_order
Starting from the source object, the system will use the priorities listed in the relation and dataset
preferences to find a target dataset from which to retrieve the thumbnail image. Within the target
dataset, the priority of Named References is based on their file extensions as follows:
In this example, the images_preview.qaf image would be displayed as the thumbnail image.
Note:
• Changes made to these preferences will affect other clients.
• If the TC__thumbnail_relation_order preference is not specified, the default list and order of
relation types is used.
Thumbnail
IMAN_specification
IMAN_manifestation
IMAN_Rendering
IMAN_Motion
IMAN_3D_snap_shot
TC_Attaches
Fnd0DiagramSnapshot
IMAN_Simulation
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-signon 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:
You can set or change an owning program on an object to control access to data. Once you configure
owning program, users can set or change owning programs for instances such as:
To view the Owning program tab, you must set the AWC_Project_showOwningProgramTab
preference to true. Owning program can be set on the object only if the autoAssignToProject extension
is enabled on the object type.
Note:
If you use the Aerospace and Defense template, the autoAssignToProject extension is enabled by
default.
For more information on owning program and the autoAssignToProject extension, refer to Project and
Program in the Teamcenter help collection.
You can configure project-level security for selected objects at the item level and have it available to all
revisions under the item. When selecting either This Revision or All Revisions, the following
preferences should be set to the default value to ensure security is applied correctly.
• TC_Security_Apply_To_Visible
Activates the visibility of the Apply To project option. When set to true (default), the Apply To
project option is available.
• TC_Security_Apply_To_Item_Revision
Controls the behavior of the Apply To project option. When set to true, security is applied to item
revisions. If set to false (default), security is applied to items.
Also, you can hide the project section from the Add panel for items. To do this, modify your data model
configuration in Teamcenter using the Business Modeler IDE and set the Fnd0EnableAssignProjects
constant to False.
For more information about modifying business object constants, see Configure your business data
model in BMIDE.
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": {
"frameguard": false,
"noSniff": 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.
noSniff
Disabled for Active Workspace. If you enable this feature, the thumbnail renderer in Internet
Explorer 11 will not function.
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
}
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 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
The URL path on the gateway which this route will use. For example, http://host:port/path.
Either the target or alias field must be provided, but not both.
alias
The alias registered in the microservice dispatcher. This value is used for dynamic targeting of the
backend service.
Either the target or alias field must be provided, but not both.
graphQL
Indicates to the gateway if this route should be registered in the federation GraphQL network
managed by the gateway.
Simulation Process Management is a solution used for validating or improving a design in the early
stages of the product lifecycle.
If your organization has customized the simulation data model, you may need to configure Simulation
Process Management's tables to add new properties and expose the new fields in Active Workspace. You
may also configure the way Active Workspace searches for related simulation data.
Before you can configure Simulation Process Management, you must install the Simulation Process
Management feature from the Features panel of Teamcenter Environment Manager (TEM):
Tip:
After installing new features, you must redeploy the generated web application file (awc.war for
Java or awc.zip for .NET) into your web application.
You (as a system administrator) can configure the fields in the Related Simulation Objects table of the
Simulation tab in Active Workspace.
You can edit style sheets in the Teamcenter rich client to add new properties and expose the new fields
in the graphical user interface (GUI) for the following types:
By default, the Related Simulation Objects section displays the Object, Type, Relation, Release
Status, Date Released, and Owner fields.
The style sheets referred to here are XML documents stored in Teamcenter XMLStylesheetRendering
datasets. The following is an example of how to edit two style sheets for the CAE Analysis Revision type
to add the object_name property and expose the Name field in the Related Simulation Objects
section.
You can also add custom properties for the CAE Analysis Revision type.
1. To search for style sheets related to the CAE Analysis Revision type, in My Teamcenter (rich
client), type Cae1CAEAna*, select Dataset type, and perform a search.
Note:
Only a DBA user can modify style sheets.
In Active Workspace, users can select a CAE Analysis Revision type from the Results page and
click the Simulation tab to view the details.
Alternatively, they can select a CAE Analysis Revision type from the Results page, click Open to
open it separately, and click the Simulation tab to view the details.
2. To view the style sheet, select Cae1CAEAnalysisRevSummary from the Search Results view, and
click the Viewer tab.
3. Edit the tc_xrt_Analysis section in the style sheet to add the new object_name property and
expose the Name field in the GUI..
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
<section titleKey="tc_xrt_Result">
<objectSet source="TC_CAE_Results.CAEResultRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="listDisplay">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<!-- ******** Your customization goes here ******** -->
<property name="object_name"/>
<!-- ******** End of customization ******** -->
<property name="relation"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
In Active Workspace, select a CAE Analysis Revision type from the Results page and click the
Simulation tab to view the details.
The Related Simulation Objects table displays the new Name field.
Similarly, to search for style sheets related to the CAE Analysis Revision type, in My Teamcenter (rich
client), select the Cae1CAEAnalysisRevSummaryForShowObjectLocation sheet from the Search
Results view. Click the Viewer tab and repeat steps 3 and 4.
Edit style sheets to expose custom revision types in the Simulation tab
You (as a user with dba privileges) can edit style sheets to expose custom revision types in the context
of the product revision and configure traversal paths to define how to traverse the data structure and
specify which relationships are of interest and what should be done when these relationships are
encountered. For example, you can define a traversal path from a primary item type, such as an analysis
revision, to the solver-specific data deck (CAESolver) and from CAESolver to the file to be exported.
In Active Workspace, users can select an item revision type from the Results page and view the details in
the Simulation tab. Alternatively, they can select an item revision type from the Results page, click
Open to open it separately, and view the details in the Simulation tab. The Cae1ItemRevSummary
and the Cae1ItemRevSummaryForShowObjectLocation style sheets determine the objects displayed
in the Related Simulation Objects table for the respective selection.
You can edit style sheets to add a new traversal path and expose the new objects or edit the default
traversal path to hide some objects in the graphical user interface (GUI). In Active Workspace, you can
use the XRT Editor to directly edit the style sheet controlling the current page's layout. The editor
automatically finds the associated XMLRenderingStylesheet dataset, and presents it for viewing and
editing.
• Edit the Cae1ItemRevSummary style sheet and add custom geometry, model, analysis, and result
revisions. In addition, create construct queries for each of these custom revisions to specify traversal
paths.
The following is an example of how to edit the style sheet to customize the GUI to display model, result,
geometry, and analysis revisions in the Related Simulation Objects table.
a. To edit the Cae1ItemRevSummary style sheet, search for the item revision, select it and click
the Simulation tab.
b. To start the XRT Editor, open a second browser window, copy the first portion of the URL (up
to the awc/#/), and then append xrteditor to the end of it.
http://10.134.152.100:7001/awc/#/com.siemens.splm.
clientfx.tcui.xrt.showObject?uid= ...
http://10.134.152.100:7001/awc/#/xrteditor
The editor window is now linked to the first window. As you navigate through Active
Workspace using the first window, the editor will follow, displaying the XRT used to render
each page.
Example:
Item Revision
<-(TC_CAE_Source/TC_CAE_Target) CAE Geometry Revision
*/
Cae1SimulationSearchProvider.CAEGeometryRevision.
(S2P$TC_CAE_Source^^S2P$TC_CAE_Target)
b. Edit the objectSet source properties in the tc_xrt_Geometry section of the style sheet.
<section titleKey="tc_xrt_Geometry">
<objectSet source="Cae1SimulationSearchProvider.CAEGeometryRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Geometry">
<!–- ********** Start of customization ********** -->
<objectSet source="Cae1SimulationSearchProvider.CAEGeometryRevision.
(S2P$TC_CAE_Source^^S2P$TC_CAE_Target)"
<!–- ********** End of customization ********** -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Tip:
You can specify S2P$ as the prefix before a relation to specify that the traversal path is
from the secondary object to the primary object, ^^ as an AND operator between two
paths, and # as the separator between the two segments of the traversal path.
Example:
Item Revision
<-(TC_CAE_Source/TC_CAE_Target) CAE Model Revision,
Item Revision
<-(TC_CAE_Source/TC_CAE_Target) CAE Geometry Revision
<-(TC_CAE_Source) CAE Model Revision
*/
Cae1SimulationSearchProvider.CAEModelRevision.
(S2P$TC_CAE_Target^^S2P$TC_CAE_Source
^^S2P$TC_CAE_Target:CAEGeometryRevision#S2P$TC_CAE_Source
^^S2P$TC_CAE_Source:CAEGeometryRevision#S2P$TC_CAE_Source)
b. Edit the objectSet source properties in the tc_xrt_Model section of the style sheet.
<section titleKey="tc_xrt_Model">
<objectSet source="Cae1SimulationSearchProvider.CAEModelRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Model">
<!–- ********** Start of customization ********** -->
<objectSet source="Cae1SimulationSearchProvider.CAEModelRevision
(S2P$TC_CAE_Target ^^S2P$TC_CAE_Source
^^S2P$TC_CAE_Target:CAEGeometryRevision#S2P$TC_CAE_Source
^^S2P$TC_CAE_Source:CAEGeometryRevision#S2P$TC_CAE_Source)"
<!–- ********** End of customization ********** -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Example:
Item Revision
<-(TC_CAE_Source/TC_CAE_Target) CAE Geometry Revision
<-(TC_CAE_Source) CAE Model Revision
<-(TC_CAE_Defining) CAE Analysis Revision,
Item Revision
<-(TC_CAE_Source/TC_CAE_Target) CAE Geometry Revision
<-(TC_CAE_Source) CAE Analysis Revision,
Item Revision
<-(TC_CAE_Source/TC_CAE_Target) CAE Model Revision
<-(TC_CAE_Defining) CAE Analysis Revision,
Item Revision
<-(TC_CAE_Target) CAE Analysis Revision
*/
Cae1SimulationSearchProvider.CAEAnalysisRevision.
(S2P$TC_CAE_Source:CAEGeometryRevision
#S2P$TC_CAE_Source:CAEModelRevision
#S2P$TC_CAE_Defining
^^S2P$TC_CAE_Target:CAEGeometryRevision
#S2P$TC_CAE_Source:CAEModelRevision#S2P$TC_CAE_Defining
^^S2P$TC_CAE_Source:CAEGeometryRevision#S2P$TC_CAE_Source
^^S2P$TC_CAE_Target:CAEGeometryRevision#S2P$TC_CAE_Source
^^S2P$TC_CAE_Source:CAEModelRevision#S2P$TC_CAE_Defining
^^S2P$TC_CAE_Target:CAEModelRevision#S2P$TC_CAE_Defining
^^S2P$TC_CAE_Target)
b. Edit the objectSet source properties in the tc_xrt_Analysis section of the style sheet.
<section titleKey="tc_xrt_Analysis">
<objectSet source="Cae1SimulationSearchProvider.CAEAnalysisRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Analysis">
<!–- ********** Start of customization ********** -->
<objectSet source="Cae1SimulationSearchProvider.CAEAnalysisRevision.
(S2P$TC_CAE_Source:CAEGeometryRevision
#S2P$TC_CAE_Source:CAEModelRevision
#S2P$TC_CAE_Defining
^^S2P$TC_CAE_Target:CAEGeometryRevision
#S2P$TC_CAE_Source:CAEModelRevision#S2P$TC_CAE_Defining
^^S2P$TC_CAE_Source:CAEGeometryRevision#S2P$TC_CAE_Source
^^S2P$TC_CAE_Target:CAEGeometryRevision#S2P$TC_CAE_Source
^^S2P$TC_CAE_Source:CAEModelRevision#S2P$TC_CAE_Defining
^^S2P$TC_CAE_Target:CAEModelRevision#S2P$TC_CAE_Defining
^^S2P$TC_CAE_Target)"
<!–- ********** End of customization ********** -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Example:
Item Revision
<-(TC_CAE_Source/TC_CAE_Target) CAE Geometry Revision
<-(TC_CAE_Source) CAE Model Revision
<-(TC_CAE_Defining) CAE Analysis Revision (TC_CAE_Results)
-> CAE Result Revision,
Item Revision
<-(TC_CAE_Source/TC_CAE_Target) CAE Model Revision
<-(TC_CAE_Defining) CAE Analysis Revision (TC_CAE_Results)
-> CAE Result Revision,
Item Revision
<-(TC_CAE_Source/TC_CAE_Target) CAE Geometry Revision
<-(TC_CAE_Source) CAE Analysis Revision (TC_CAE_Results)
-> CAE Result Revision,
Item Revision
<-(TC_CAE_Target) CAE Analysis Revision (TC_CAE_Results)
-> CAE Result Revision
*/
Cae1SimulationSearchProvider.CAEResultRevision.
(S2P$TC_CAE_Source:CAEGeometryRevision
#S2P$TC_CAE_Source:CAEModelRevision
#S2P$TC_CAE_Defining:CAEAnalysisRevision
#TC_CAE_Results
^^S2P$TC_CAE_Target:CAEGeometryRevision
#S2P$TC_CAE_Source:CAEModelRevision
#S2P$TC_CAE_Defining:CAEAnalysisRevision
#TC_CAE_Results
^^S2P$TC_CAE_Source:CAEModelRevision
#S2P$TC_CAE_Defining:CAEAnalysisRevision
#TC_CAE_Results
^^S2P$TC_CAE_Target:CAEModelRevision
#S2P$TC_CAE_Defining:CAEAnalysisRevision
#TC_CAE_Results
^^S2P$TC_CAE_Source:CAEGeometryRevision
#S2P$TC_CAE_Source:CAEAnalysisRevision
#TC_CAE_Results
^^S2P$TC_CAE_Target:CAEGeometryRevision
#S2P$TC_CAE_Source:CAEAnalysisRevision
#TC_CAE_Results
^^S2P$TC_CAE_Target:CAEAnalysisRevision
#TC_CAE_Results)
b. Edit the objectSet source properties in the tc_xrt_Result section of the style sheet.
<section titleKey="tc_xrt_Result">
<objectSet source="Cae1SimulationSearchProvider.CAEResult"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Result">
<!–- ********** Start of customization ********** -->
<objectSet source="Cae1SimulationSearchProvider.CAEResultRevision.
(S2P$TC_CAE_Source:CAEGeometryRevision
#S2P$TC_CAE_Source:CAEModelRevision
#S2P$TC_CAE_Defining:CAEAnalysisRevision
#TC_CAE_Results
^^S2P$TC_CAE_Target:CAEGeometryRevision
#S2P$TC_CAE_Source:CAEModelRevision
#S2P$TC_CAE_Defining:CAEAnalysisRevision
#TC_CAE_Results
^^S2P$TC_CAE_Source:CAEModelRevision
#S2P$TC_CAE_Defining:CAEAnalysisRevision
#TC_CAE_Results
^^S2P$TC_CAE_Target:CAEModelRevision
#S2P$TC_CAE_Defining:CAEAnalysisRevision
#TC_CAE_Results
^^S2P$TC_CAE_Source:CAEGeometryRevision
#S2P$TC_CAE_Source:CAEAnalysisRevision
#TC_CAE_Results
^^S2P$TC_CAE_Target:CAEGeometryRevision
#S2P$TC_CAE_Source:CAEAnalysisRevision
#TC_CAE_Results
^^S2P$TC_CAE_Target:CAEAnalysisRevision
#TC_CAE_Results)"
<!–- ********** End of customization ********** -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
8. To view the customized revisions, search for an item revision type in Active Workspace, select it
from the Results page, and click the Simulation tab to view the details. The Related Simulation
Objects table displays the customized model, result, geometry, and analysis revisions.
c. To view the customized revisions, search for an item revision type in Active Workspace, select
it from the Results page, click Open to open it separately, and click the Simulation tab to
view the details. The Related Simulation Objects table displays the customized model, result,
geometry, and analysis revisions.
You (as a user with dba privileges) can edit style sheets to expose custom revision types in the context
of the product revision and configure traversal paths to define how to traverse the data structure and
specify which relationships are of interest and what should be done when these relationships are
encountered. For example, you can define a traversal path from a primary item type, such as an analysis
revision, to the solver-specific data deck (CAESolver) and from CAESolver to the file to be exported.
In Active Workspace, users can select a geometry revision from the Results page and view the details in
the Simulation tab. Alternatively, they can select a geometry revision from the Results page, click Open
to open it separately, and view the details in the Simulation tab. The Cae1GeometryRevSummary
and the Cae1GeometryRevSummaryForShowObjectLocation style sheets determine the objects
displayed in the Related Simulation Objects table for the respective selection.
You can edit style sheets to add a new traversal path and expose the new objects or edit the default
traversal path to hide some objects in the graphical user interface (GUI). In Active Workspace, you can
use the XRT Editor to directly edit the style sheet controlling the current page's layout. The editor
automatically finds the associated XMLRenderingStylesheet dataset, and presents it for viewing and
editing.
The following is an example of how to edit the style sheet to customize the GUI to display product,
model, analysis, and result revisions in the Related Simulation Objects table.
• Edit the Cae1ItemRevSummary style sheet and add customized product, model, analysis, and result
revisions. In addition, create construct queries for each of these custom revisions to specify traversal
paths.
a. To edit the Cae1GeometryRevSummary style sheet, search for the geometry revision, select
it and click the Simulation tab.
b. To start the XRT Editor, open a second browser window, copy the first portion of the URL (up
to the awc/#/), and then append xrteditor to the end of it.
http://10.134.152.100:7001/awc/#/com.siemens.splm.
clientfx.tcui.xrt.showObject?uid= ...
http://10.134.152.100:7001/awc/#/xrteditor
The editor window is now linked to the first window. As you navigate through Active
Workspace using the first window, the editor will follow, displaying the XRT used to render
each page.
Example:
*/
Cae1SimulationSearchProvider.ItemRevision.
(TC_CAE_Source^^TC_CAE_Target)
b. Edit the objectSet source properties in the tc_xrt_Product section of the style sheet.
<section titleKey="tc_xrt_Product">
<objectSet source="Cae1SimulationSearchProvider.ItemRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Product">
<!–- ********** Start of customization ********** -->
<objectSet source="Cae1SimulationSearchProvider.ItemRevision.
(TC_CAE_Source^^TC_CAE_Target)"
<!–- ********** End of customization ********** -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Tip:
You can specify S2P$ as the prefix before a relation to specify that the traversal path is
from the secondary object to the primary object, ^^ as an AND operator between two
paths, and # as the separator between the two segments of the traversal path.
Example:
CAEGeometryRevision
<-(TC_CAE_Source) CAEModelRevision
*/
Cae1SimulationSearchProvider.CAEModelRevision.
(S2P$TC_CAE_Source)
b. Edit the objectSet source properties in the tc_xrt_Model section of the style sheet.
<section titleKey="tc_xrt_Model">
<objectSet source="Cae1SimulationSearchProvider.CAEGeometryRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Model">
<!–- ********** Start of customization ********** -->
<objectSet source="Cae1SimulationSearchProvider.CAEModelRevision.
(S2P$TC_CAE_Source)"
<!–- ********** End of customization ********** -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Example:
*/
Cae1SimulationSearchProvider.CAEAnalysisRevision.
(S2P$TC_CAE_Source ^^S2P$TC_CAE_Source:CAEModelRevision
#S2P$TC_CAE_Defining)
b. Edit the objectSet source properties in the tc_xrt_Analysis section of the style sheet.
<section titleKey="tc_xrt_Analysis">
<objectSet source="Cae1SimulationSearchProvider.CAEAnalysis"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Analysis">
<!–- ********** Start of customization ********** -->
<objectSet source="Cae1SimulationSearchProvider.CAEAnalysisRevision.
(S2P$TC_CAE_Source^^S2P$TC_CAE_Source:CAEModelRevision
#S2P$TC_CAE_Defining)"
<!–- ********** End of customization ********** -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Example:
*/
Cae1SimulationSearchProvider.CAEResultRevision.
(S2P$TC_CAE_Source:
CAEAnalysisRevision#TC_CAE_Results
^^S2P$TC_CAE_Source:CAEModelRevision
#S2P$TC_CAE_Defining:CAEAnalysisRevision
#TC_CAE_Results)
b. Edit the objectSet source properties in the tc_xrt_Result section of the style sheet.
<section titleKey="tc_xrt_Result">
<objectSet source="Cae1SimulationSearchProvider.CAEResult"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Result">
<!–- ********** Start of customization ********** -->
<objectSet source="Cae1SimulationSearchProvider.CAEResultRevision.
(S2P$TC_CAE_Source:
CAEAnalysisRevision#TC_CAE_Results
^^S2P$TC_CAE_Source:CAEModelRevision
#S2P$TC_CAE_Defining:CAEAnalysisRevision
#TC_CAE_Results)"
<!–- ********** End of customization ********** -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
8. To view the customized revisions, search for a geometry revision type in Active Workspace, select it
from the Results page, and click the Simulation tab to view the details. The Related Simulation
Objects table displays the customized product, model, result, and analysis revisions.
c. To view the customized revisions, search for a geometry revision type in Active Workspace,
select it from the Results page, click Open to open it separately, and click the Simulation
tab to view the details. The Related Simulation Objects table displays the customized
product, model, result, and analysis revisions.
You (as a user with dba privileges) can edit style sheets to expose custom revision types in the context
of the product revision and configure traversal paths to define how to traverse the data structure and
specify which relationships are of interest and what should be done when these relationships are
encountered. For example, you can define a traversal path from a primary item type, such as an analysis
revision, to the solver-specific data deck (CAESolver) and from CAESolver to the file to be exported.
In Active Workspace, users can select a model revision from the Results page and view the details in the
Simulation tab. Alternatively, they can select a model revision type from the Results page, click Open
to open it separately, and view the details in the Simulation tab. The Cae1ModelRevSummary and
the Cae1ModelRevSummaryForShowObjectLocation style sheets determine the objects displayed in
the Related Simulation Objects table for the respective selection.
You can edit style sheets to add a new traversal path and expose the new objects or edit the default
traversal path to hide some objects in the graphical user interface (GUI). In Active Workspace, you can
use the XRT Editor to directly edit the style sheet controlling the current page's layout. The editor
automatically finds the associated XMLRenderingStylesheet dataset, and presents it for viewing and
editing.
The following is an example of how to edit the style sheet to customize the GUI to display product,
geometry, analysis, and result revisions in the Related Simulation Objects table.
• Edit the Cae1ItemRevSummary style sheet and add customized product, geometry, analysis, and
result revisions. In addition, create construct queries for each of these custom revisions to specify
traversal paths.
a. To edit the Cae1ModelRevSummary style sheet, search for the model revision, select it and
click the Simulation tab.
b. To start the XRT Editor, open a second browser window, copy the first portion of the URL (up
to the awc/#/), and then append xrteditor to the end of it.
http://10.134.152.100:7001/awc/#/com.siemens.splm.
clientfx.tcui.xrt.showObject?uid= ...
http://10.134.152.100:7001/awc/#/xrteditor
The editor window is now linked to the first window. As you navigate through Active
Workspace using the first window, the editor will follow, displaying the XRT used to render
each page.
Example:
*/
Cae1SimulationSearchProvider.ItemRevision.
(TC_CAE_Source:CAEGeometryRevision#TC_CAE_Source
^^TC_CAE_Source:CAEGeometryRevision#TC_CAE_Target
^^TC_CAE_Source^^TC_CAE_Target)
b. Edit the objectSet source properties in the tc_xrt_Product section of the style sheet.
<section titleKey="tc_xrt_Product">
<objectSet source="Cae1SimulationSearchProvider.ItemRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Product">
<!–- ************* Start of customization ************* -->
"Cae1SimulationSearchProvider.ItemRevision.
(TC_CAE_Source:CAEGeometryRevision#TC_CAE_Source
^^TC_CAE_Source:CAEGeometryRevision#TC_CAE_Target
^^TC_CAE_Source^^TC_CAE_Target)"
<!–- ************* End of customization ************* -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Tip:
You can specify S2P$ as the prefix before a relation to specify that the traversal path is
from the secondary object to the primary object, ^^ as an AND operator between two
paths, and # as the separator between the two segments of the traversal path.
Example:
*/
Cae1SimulationSearchProvider.CAEGeometryRevision.
(TC_CAE_Source)
b. Edit the objectSet source properties in the tc_xrt_Geometry section of the style sheet.
<section titleKey="tc_xrt_Geometry">
<objectSet source="Cae1SimulationSearchProvider.CAEGeometryRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Geometry">
<!–- ************* Start of customization ************* -->
<objectSet source="Cae1SimulationSearchProvider.
CAEGeometryRevision.(TC_CAE_Source)"
<!–- ************* End of customization ************* -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Example:
*/
Cae1SimulationSearchProvider.CAEAnalysisRevision.
(S2P$TC_CAE_Defining)
b. Edit the objectSet source properties in the tc_xrt_Analysis section of the style sheet.
<section titleKey="tc_xrt_Analysis">
<objectSet source="Cae1SimulationSearchProvider.CAEAnalysisRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Analysis">
<!–- ************* Start of customization ************* -->
<objectSet source="Cae1SimulationSearchProvider.CAEAnalysisRevision.
(S2P$TC_CAE_Defining)"
<!–- ************* End of customization ************* -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Example:
*/
Cae1SimulationSearchProvider.CAEResultRevision.
(S2P$TC_CAE_Defining:CAEAnalysisRevision
#TC_CAE_Results)
b. Edit the objectSet source properties in the tc_xrt_Result section of the style sheet.
<section titleKey="tc_xrt_Result">
<objectSet source="Cae1SimulationSearchProvider.CAEResultRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Result">
<!–- ************* start of customization ************* -->
<objectSet source="Cae1SimulationSearchProvider.CAEResultRevision.
(S2P$TC_CAE_Defining:CAEAnalysisRevision#TC_CAE_Results)"
<!–- ************* end of customization ************* -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
8. To view the customized revisions, search for a model revision type in Active Workspace, select it
from the Results page, and click the Simulation tab to view the details. The Related Simulation
Objects table displays the customized product, geometry, result, and analysis revisions.
c. To view the customized revisions, search for a model revision type in Active Workspace, select
it from the Results page, click Open to open it separately, and click the Simulation tab to
view the details. The Related Simulation Objects table displays the customized product,
result, geometry, and analysis revisions.
You (as a user with dba privileges) can edit style sheets to expose custom revision types in the context
of the product revision and configure traversal paths to define how to traverse the data structure and
specify which relationships are of interest and what should be done when these relationships are
encountered. For example, you can define a traversal path from a primary item type, such as an analysis
revision, to the solver-specific data deck (CAESolver) and from CAESolver to the file to be exported.
In Active Workspace, users can select an analysis revision from the Results page and view the details in
the Simulation tab. Alternatively, they can select an analysis revision from the Results page, click Open
to open it separately, and view the details in the Simulation tab. The Cae1AnalysisRevSummary
and the Cae1AnalysisRevSummaryForShowObjectLocation style sheets determine the objects
displayed in the Related Simulation Objects table for the respective selection.
You can edit style sheets to add a new traversal path and expose the new objects or edit the default
traversal path to hide some objects in the graphical user interface (GUI). In Active Workspace, you can
use the XRT Editor to directly edit the style sheet controlling the current page's layout. The editor
automatically finds the associated XMLRenderingStylesheet dataset, and presents it for viewing and
editing.
• Edit the Cae1ItemRevSummary style sheet and add customized product, geometry, model, and
result revisions. In addition, create construct queries for each of these custom revisions to specify
traversal paths.
The following is an example of how to edit the style sheet to customize the GUI to display product,
geometry, model, and result revisions in the Related Simulation Objects table.
a. To edit the Cae1AnalysisRevSummary style sheet, search for the analysis revision, select it
and click the Simulation tab.
b. To start the XRT Editor, open a second browser window, copy the first portion of the URL (up
to the awc/#/), and then append xrteditor to the end of it.
http://10.134.152.100:7001/awc/#/com.siemens.splm.
clientfx.tcui.xrt.showObject?uid= ...
http://10.134.152.100:7001/awc/#/xrteditor
The editor window is now linked to the first window. As you navigate through Active
Workspace using the first window, the editor will follow, displaying the XRT used to render
each page.
Example:
*/
Cae1SimulationSearchProvider.ItemRevision.
(TC_CAE_Defining:CAEModelRevision#TC_CAE_Source:CAEGeometryRevision
#TC_CAE_Source^^TC_CAE_Defining:CAEModelRevision
#TC_CAE_Source:CAEGeometryRevision#TC_CAE_Target
^^TC_CAE_Defining:CAEModelRevision#TC_CAE_Source
^^TC_CAE_Defining:CAEModelRevision#TC_CAE_Target
^^TC_CAE_Source:CAEGeometryRevision#TC_CAE_Source
^^TC_CAE_Source:CAEGeometryRevision#TC_CAE_Target
^^TC_CAE_Target)
b. Edit the objectSet source properties in the tc_xrt_Product section of the style sheet.
<section titleKey="tc_xrt_Product">
<objectSet source="Cae1SimulationSearchProvider.ItemRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Product">
<!–- ************* Start of customization ************* -->
<objectSet source="Cae1SimulationSearchProvider.ItemRevision.
(TC_CAE_Defining:CAEModelRevision#TC_CAE_Source:CAEGeometryRevision
#TC_CAE_Source^^TC_CAE_Defining:CAEModelRevision
#TC_CAE_Source:CAEGeometryRevision#TC_CAE_Target
^^TC_CAE_Defining:CAEModelRevision#TC_CAE_Source
^^TC_CAE_Defining:CAEModelRevision#TC_CAE_Target
^^TC_CAE_Source:CAEGeometryRevision#TC_CAE_Source
^^TC_CAE_Source:CAEGeometryRevision#TC_CAE_Target
^^TC_CAE_Target)"
<!–- ************* End of customization ************* -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Tip:
You can specify S2P$ as the prefix before a relation to specify that the traversal path is
from the secondary object to the primary object, ^^ as an AND operator between two
paths, and # as the separator between the two segments of the traversal path.
Example:
*/
Cae1SimulationSearchProvider.CAEGeometryRevision.
(TC_CAE_Defining:CAEModelRevision#TC_CAE_Source
^^TC_CAE_Source)
b. Edit the objectSet source properties in the tc_xrt_Geometry section of the style sheet.
<section titleKey="tc_xrt_Geometry">
<objectSet source="Cae1SimulationSearchProvider.CAEGeometryRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Geometry">
<!–- ************* Start of customization ************* -->
<objectSet source="Cae1SimulationSearchProvider.CAEGeometryRevision.
(TC_CAE_Defining:CAEModelRevision
#TC_CAE_Source^^TC_CAE_Source)"
<!–- ************* End of customization ************* -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Example:
*/
Cae1SimulationSearchProvider.CAEAnalysisRevision.
(TC_CAE_Include^^S2P$TC_CAE_Include)
b. Edit the objectSet source properties in the tc_xrt_Analysis section of the style sheet.
<section titleKey="tc_xrt_Analysis">
<objectSet source="Cae1SimulationSearchProvider.CAEAnalysisRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Analysis">
<!–- ************* Start of customization ************* -->
<objectSet source="Cae1SimulationSearchProvider.CAEAnalysisRevision.
(TC_CAE_Include^^S2P$TC_CAE_Include)"
<!–- ************* End of customization ************* -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Example:
*/
Cae1SimulationSearchProvider.CAEResultRevision.
(TC_CAE_Results)
b. Edit the objectSet source properties in the tc_xrt_Result section of the style sheet.
<section titleKey="tc_xrt_Result">
<objectSet source="Cae1SimulationSearchProvider.CAEResultRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Result">
<!–- ************* Start of customization ************* -->
<objectSet source="Cae1SimulationSearchProvider.
CAEResultRevision.(TC_CAE_Results)"
<!–- ************* End of customization ************* -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
8. To view the customized revisions, search for an analysis revision type in Active Workspace, select it
from the Results page, and click the Simulation tab to view the details. The Related Simulation
Objects table displays the customized product, model, result, and geometry revisions.
c. To view the customized revisions, search for an analysis revision type in Active Workspace,
select it from the Results page, click Open to open it separately, and click the Simulation
tab to view the details. The Related Simulation Objects table displays the customized
product, model, result, and geometry revisions.
You (as a user with dba privileges) can edit style sheets to expose custom revision types in the context
of the product revision and configure traversal paths to define how to traverse the data structure and
specify which relationships are of interest and what should be done when these relationships are
encountered. For example, you can define a traversal path from a primary item type, such as an analysis
revision, to the solver-specific data deck (CAESolver) and from CAESolver to the file to be exported.
In Active Workspace, users can select a result revision from the Results page and view the details in the
Simulation tab. Alternatively, they can select a result revision from the Results page, click Open to
open it separately, and view the details in the Simulation tab. The Cae1ResultRevSummary and the
Cae1ResultRevSummaryForShowObjectLocation style sheets determine the objects displayed in the
Related Simulation Objects table for the respective selection.
You can edit style sheets to add a new traversal path and expose the new objects or edit the default
traversal path to hide some objects in the graphical user interface (GUI). In Active Workspace, you can
use the XRT Editor to directly edit the style sheet controlling the current page's layout. The editor
automatically finds the associated XMLRenderingStylesheet dataset, and presents it for viewing and
editing.
• Edit the Cae1ItemRevSummary style sheet and add customized product, geometry, model, and
analysis revisions. In addition, create construct queries for each of these custom revisions to specify
traversal paths.
The following is an example of how to edit the style sheet to customize the GUI to display product,
geometry, model, and analysis revisions in the Related Simulation Objects table.
a. To edit the Cae1ResultRevSummary style sheet, search for the result revision, select it and
click the Simulation tab.
b. To start the XRT Editor, open a second browser window, copy the first portion of the URL (up
to the awc/#/), and then append xrteditor to the end of it.
http://10.134.152.100:7001/awc/#/com.siemens.splm.
clientfx.tcui.xrt.showObject?uid= ...
http://10.134.152.100:7001/awc/#/xrteditor
The editor window is now linked to the first window. As you navigate through Active
Workspace using the first window, the editor will follow, displaying the XRT used to render
each page.
Example:
*/
Cae1SimulationSearchProvider.ItemRevision.
(S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Defining:CAEModelRevision
#TC_CAE_Source:CAEGeometryRevision
#TC_CAE_Source^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Defining:CAEModelRevision
#TC_CAE_Source:CAEGeometryRevision
#TC_CAE_Target^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Defining:CAEModelRevision
#TC_CAE_Source^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Defining:CAEModelRevision
#TC_CAE_Target^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Source:CAEGeometryRevision
#TC_CAE_Source^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Source:CAEGeometryRevision
#TC_CAE_Target^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Target)
b. Edit the objectSet source properties in the tc_xrt_Product section of the style sheet.
<section titleKey="tc_xrt_Product">
<objectSet source="Cae1SimulationSearchProvider.ItemRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Product">
<!–- ************* start of customization ************* -->
<objectSet source="Cae1SimulationSearchProvider.ItemRevision.
(S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Defining:CAEModelRevision
#TC_CAE_Source:CAEGeometryRevision
#TC_CAE_Source^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Defining:CAEModelRevision
#TC_CAE_Source:CAEGeometryRevision
#TC_CAE_Target^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Defining:CAEModelRevision
#TC_CAE_Source^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Defining:CAEModelRevision
#TC_CAE_Target^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Source:CAEGeometryRevision
#TC_CAE_Source^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Source:CAEGeometryRevision
#TC_CAE_Target^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Target)"
<!–- ************* end of customization ************* -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Tip:
You can specify S2P$ as the prefix before a relation to specify that the traversal path is
from the secondary object to the primary object, ^^ as an AND operator between two
paths, and # as the separator between the two segments of the traversal path.
Example:
*/
Cae1SimulationSearchProvider.CAEGeometryRevision.
(S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Defining:CAEModelRevision
#TC_CAE_Source^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Source)
b. Edit the objectSet source properties in the tc_xrt_Geometry section of the style sheet.
<section titleKey="tc_xrt_Geometry">
<objectSet source="Cae1SimulationSearchProvider.CAEGeometryRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Geometry">
<!–- ************* start of customization ************* -->
<objectSet source="Cae1SimulationSearchProvider.CAEGeometryRevision.
(S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Defining:CAEModelRevision
#TC_CAE_Source^^S2P$TC_CAE_Results:CAEAnalysisRevision
#TC_CAE_Source)"
Example:
*/
Cae1SimulationSearchProvider.CAEModelRevision.
(S2P$TC_CAE_Results:CAEAnalysisRevision#TC_CAE_Defining)
b. Edit the objectSet source properties in the tc_xrt_Model section of the style sheet.
<section titleKey="tc_xrt_Model">
<objectSet source="Cae1SimulationSearchProvider.CAEModelRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Model">
<!–- ************* start of customization ************* -->
<objectSet source="Cae1SimulationSearchProvider.CAEModelRevision.
(S2P$TC_CAE_Results:CAEAnalysisRevision#TC_CAE_Defining)"
<!–- ************* end of customization ************* -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Example:
*/
Cae1SimulationSearchProvider.
CAEAnalysisRevision.(S2P$TC_CAE_Results)
b. Edit the objectSet source properties in the tc_xrt_Analysis section of the style sheet.
<section titleKey="tc_xrt_Analysis">
<objectSet source="Cae1SimulationSearchProvider.CAEAnalysisRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
Change to:
<section titleKey="tc_xrt_Analysis">
<!–- ************* start of customization ************* -->
<objectSet source="Cae1SimulationSearchProvider.
CAEAnalysisRevision.(S2P$TC_CAE_Results)"
<!–- ************* end of customization ************* -->
sortdirection="ascending" sortby="object_string"
defaultdisplay="tableDisplay" maxRowCount="5">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
</objectSet>
</section>
8. To view the customized revisions, search for a result revision type in Active Workspace, select it
from the Results page, and click the Simulation tab to view the details. The Related Simulation
Objects table displays the customized product, geometry, model, and analysis revisions.
c. To view the customized revisions, search for a result revision type in Active Workspace, select
it from the Results page, click Open to open it separately, and click the Simulation tab to
view the details. The Related Simulation Objects table displays the customized product,
geometry, model, and analysis revisions.
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.
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
• On UNIX and Linux machines, add the following line to the tc_profilevars file:
TC_MESSAGING_MUX_URL=${TC_MESSAGING_MUX_URL:=http://blserver1:8087}
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.
Note:
• 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:
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.
See Getting Started with Product Visualization in the Teamcenter help collection.
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 Installation/Customization in the Teamcenter
help collection.
Note:
• 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.
Note:
• 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.
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.
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 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.
Preloading On Awb0TcVisPreFetchAllowed
assemblies
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.
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. To change the measurement precision, follow these
steps on the machine hosting the visualization server.
1. Click the Windows Start button and type regedit in the search box.
3. Locate the following registry key, replacing version with the Active Workspace version.
HKEY_CURRENT_USER\Software\Siemens\AW_Retained\version\Common\C\Measurement\
Values Precision
0 3
1 3.1
2 3.14
3 3.142
4 3.1416
5 3.14159
9. Click OK.
10. Restart the Visualization Server Manager to see the change take effect.
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.
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
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...
# ProductManager.BBoxValidator.BBoxLimit= -10, -10, -10, 10, 10, 10
# 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 collection 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 collection.
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 collection for more
information about setting conditions.
If you want to display custom properties in the inbox, you need tounderstand 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.
1. Install Client for Microsoft Office. You can install it using Teamcenter Environment Manager (TEM)
or with a standalone installer.
This places the Teamcenter ribbon on the Microsoft Office applications. (Active Workspace
functionality is accessed from the Teamcenter ribbon.) Refer to the Client for Microsoft Office
documentation for instructions.
2. Define the desired hosting preferences to link to your Active Workspace installation:
Note:
Active Workspace Application Connect is available only when using Active Workspace 4.3 or later
and Lifecycle Visualization 12.3 or later.
Active Workspace Application Connect enables users to use the Active Workspace Open in Visualization
command to open their data in a new browser tab and send data to the Lifecycle Visualization
application. Like hosting, this connectivity option allows the user to see their work synchronized
between Active Workspace and Lifecycle Visualization. Unlike hosting, Active Workspace Application
Connect allows the user to open multiple documents—either in the same browser tab or in separate
browser tabs—and retain connectivity for all opened documents. Active Workspace Application Connect
also has improved cross-selection performance.
To enable a user to establish a connection between Active Workspace and Lifecycle Visualization, set the
following preferences:
• AWV0UseAWAppConnect
Causes a new tab to open in the default browser, which enables the Active Workspace session to
interoperate with Lifecycle Visualization. If the value of this preference is True, Active Workspace
Application Connect is enabled. If it is False but the AWV0HostAWInVisUponLaunch preference is
set to True, then connection between Active Workspace and Lifecycle Visualization is completed
through hosting and not Active Workspace Application Connect.
The URL of the Active Workspace Application Connect browser tab will begin with http://
<your_aw_deployment>?ah=true&room=TcVis_.
• AWV0HostAWInVisUponLaunch
Enables an Active Workspace session in Lifecycle Visualization when you open a model in
visualization. If the value of this preference is True the Active Workspace session is enabled. If it is
False, only the visualization session is enabled. This preference must be set for both Active Workspace
Application Connect and for hosting.
To Do
You can host Active Workspace in the browser embedded in standalone Lifecycle Visualization. Hosting
is especially useful because if you use the Active Workspace Open in Visualization command to send
data to the Lifecycle Visualization application, then selecting parts in either the hosted Active Workspace
structure or in the viewing window applies the same selection status in both locations. This behavior is
referred to as "cross-selection."
Configure the local computer to host Active Workspace in standalone Lifecycle Visualization
• The Teamcenter administrator has installed the Active Workspace server extension for Visualization.
• Standalone Lifecycle Visualization software is installed on the local computer.
• A File Management System client cache (FCC) for the Active Workspace Teamcenter database is
configured on the local computer.
1. In the standalone viewer, from the Application toolbar, choose Menu→Web→Edit Links.
4. Select the link and then, in the Link URL box, type the Active Workspace address.
?ah=true
http://<your_aw_deployment>?ah=true
Adding the ?ah=true suffix selects and disables the Display in Info Browser check box.
6. Click OK.
7. In the Windows registry, create the following browser emulation DWORD entries.
HKEY_CURRENT_USER
SOFTWARE
Microsoft
Internet Explorer
Main
FeatureControl
FEATURE_BROWSER_EMULATION
visview.exe = (DWORD) 00011000
visview_ng.exe = (DWORD) 00011000
Make sure the 11000 DWORD values are in decimal. The equivalent value in hexadecimal is 2AF8.
b. Press Alt to display the Menu bar (or right-click the Address bar and then select Menu bar).
1. As needed, configure the local computer to host Active Workspace in standalone Lifecycle
Visualization.
3. Type your user name and password, and click Sign in.
4. (Optional, but likely desired) In the hosted Active Workspace browser, send visualization data to the
standalone viewer.
• Specify the URL for accessing Active Workspace from the Adobe applications.
• Copy the plugin to launch the Adobe files from Active Workspace to appropriate Adobe CC
applications:
Copy \additional_applications\adode\Win64\Lauch.aip to C:\Program Files\Adobe\Adobe Illustrator CC
2019\Plug-ins\Tools.
If you wish to discontinue hosting Active Workspace within Adobe Creative Cloud applications, remove
Teamcenter Adobe CC Integration.
1. Ensure that Active Workspace is installed. For more information on this, refer to Active Workspace
Deployment in the Active Workspace help.
2. Download the Adobe ExMan Command Line Tool ZIP file from https://partners.adobe.com/
exchangeprogram/creativecloud/support/exman-com-line-tool.html. Download the version for
Windows. For more information on Adobe's Extension Manager command line utility and the
available commands, see https://helpx.adobe.com/extension-manager/using/command-
line.html.
3. Extract the contents of the ExManCmd_win.zip file into any folder of your choice, for example,
ExMan_root.
4. In the software distribution image of your Teamcenter version, locate the folder where you
downloaded the Active Workspace distribution package and navigate to: additional_applications
\adobe.
In the adobe folder, verify that the following files exist:
• config.xml (this is the Active Workspace Adobe configuration file that can be configured for
automated deployments)
5. Copy the AWIntegration.zxp file into the ExMan_root folder so that this is in the same location as
the ExManCmd.exe utility.
6. Close all active Adobe applications that are compatible with the extension.
Specify the URL for accessing Active Workspace from Adobe applications
The steps below are optional. If the config.xml file is not present in the correct location, the user can set
the values while executing the Adobe extension for the first time. However, as an administrator, if you
wish to automate the deployment of the Adobe extension, you can perform the following steps to
preconfigure the settings in the config.xml file for the user and to deploy the file in the proper location:
1. In the software distribution image of your Teamcenter version, locate the folder where you
downloaded the Active Workspace distribution package and navigate to: additional_applications
\adobe.
3. Open the config.xml file and modify the <ActiveWorkspaceUrl> tag to specify the Active
Workspace URL. Ensure that ?ah=true is appended at the end of the URL.
Example:
<ActiveWorkspaceUrl>http://host:port/awc/
?ah=true</ActiveWorkspaceUrl>
4. (Optional) Modify the <WorkingDirectory> tag to specify the directory to use when downloading
or uploading files.
Example:
For Windows:
<WorkingDirectory>c:\temp</WorkingDirectory>
2. Change the directory to the location where you saved the ExManCmd utility, for example,
ExMan_root.
Hosting preferences
The following preferences are used to enable the hosting of Active Workspace functionality in the rich
client or other Teamcenter clients and in NX.
Tip:
You must create these preferences. These preferences are not created by the Teamcenter
installation process.
• 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.Office.URL
Specifies the URL used by Teamcenter Client for Microsoft Office to communicate with Active
Workspace for hosted operations.
• 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.
Asia-Pacific
Americas Suites 4301-4302, 43/F
Granite Park One AIA Kowloon Tower, Landmark East
5800 Granite Parkway 100 How Ming Street
Suite 600 Kwun Tong, Kowloon
Plano, TX 75024 Hong Kong
USA +852 2230 3308
+1 314 264 8499