Linked Data Framework
Linked Data Framework
Teamcenter 12.2
Integrating
Applications
Using Linked Data
Framework
PLM00027 • 12.2
Contents
Sample change management process that uses Linked Data Framework . . . . . . . . . . . . . 2-1
Customize mapping between Teamcenter and external applications using the semantic mapping
file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1
Configuring the Creation Delegated UI dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-8
Create custom icons for semantic types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-9
Define the relations to apply when creating remote links . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-9
Customizations to show Linked Data Framework objects and relations in the Relations tab . . . 8-11
Customize Active Workspace page to create links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-12
Querying attributes of remote objects and receiving notifications from remote systems . . . . . . 8-14
Workflow handlers for performing operations on remote objects . . . . . . . . . . . . . . . . . . . . . 8-15
Embedded Software Management customizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-15
Using Linked Data Framework REST APIs to create and update Teamcenter resources . . 10-1
Linked Data Framework is an integration framework that allows you to integrate different applications
or enterprise information systems such as Product Lifecycle Management (PLM) systems and
Application Lifecycle Management (ALM) systems using data linking techniques.
Linked Data Framework helps with the following business problems:
• How do you implement a process such as change management across different domains such as
PLM and ALM?
You can create links between parts of a process, such as between a change request in PLM and
a defect in ALM. You can also extend Linked Data Framework to enhance its capabilities.
• How do you avoid creating new UIs for integrating different applications, and help users avoid
learning new UIs?
Using UI-based services (UI delegation), you can reuse existing UIs, validation, and business
rules that are already enforced by the host application from the external application.
• How do you enable users to access PLM data without having to learn PLM concepts or new tools?
You can use your tools you are familiar with and use UI delegation to view PLM data.
This process uses Linked Data Framework to integrate Teamcenter, which is a PLM tool, with
Rational Team Concert (RTC), which is an ALM tool that is used to manage software products.
Without Linked Data Framework, you would have to coordinate the PLM and ALM workflows manually.
Assume an automobile company wants to upgrade the power window system of their car based on
customer feedback. The following change process shows how the change can be handled in two
different domains using Linked Data Framework.
• Advanced customization
In addition to Change Management and core services, you can set up other domains such as
Requirements Management to use Linked Data Framework.
Deployment checklist
Check if you have deployed the components required for Linked Data Framework to work:
Check if the Linked Data Framework services are installed in the TC_ROOT/lis directory.
Check if the core Linked Data Framework services are installed either as a Windows service
or a UNIX daemon.
Check that you can start the Linked Data Framework services
Check that you are able to access the Linked Data Framework root services.
2. Select the appropriate options until you reach the Features panel.
3. In the Features panel, under the Base Install navigation, select the following prerequisite
features:
a. Teamcenter Foundation
b. (Optional) Business Modeler IDE Standalone, Business Modeler IDE 2-tier, or Business
Modeler IDE 4-tier
Choose this option only if you need to customize Linked Data Framework.
4. In the Features panel, expand Extensions and select Embedded Software Management.
This installs the Embedded Software Management functionality. LDF Embedded Software
Management Integration requires this feature.
b. LDF Foundation
Installs Linked Data Framework.
6. In the Features panel, expand Base Install→Active Workspace→Client and select the
following:
a. Active Workspace Client (Java EE)
Installs the awc.war file and is required by Linked Data Framework.
b. Relationship Browser
Installs the Relations functionality that shows the Linked Data Framework relations in a
graphical format.
7. In the Features panel, expand Base Install→Active Workspace→Indexing Server and select
the following:
a. Active Workspace Indexing Engine
Installs the indexing engine that is used for searching Linked Data Framework artifacts.
b. Relationship Viewer
Installs the Relationship Viewer template. This feature is required by the LDF Foundation
feature.
c. Expand Active Workspace Linked Data Framework Services and select the following:
A. LDF Foundation
Installs Linked Data Framework for Active Workspace.
9. Click Next.
Select the appropriate options until you reach the Configure Linked Data Framework panel.
10. In the Configure Linked Data Framework panel, update the following:
a. 4-tier Server URL
Specifies the Teamcenter 4-tier URL.
Note
This port is only to be used for administration purposes and not by customizers
or integrators.
c. If you want Linked Data Framework to use SSO, select the Is SSO Enabled check box
and specify the following:
A. SSO Login Service URL
Specifies the SSO login URL that has a fully qualified domain name, for example,
http://hostname.domain name:port number/tc.
B. SSO Application ID
Specifies the SSO application ID.
Note
If you have enabled SSO, you must also update the LDAP repository with the
oauthproxy user credentials.
Since Linked Data Framework requires a 4-tier Teamcenter installation, you must generate and
deploy the Teamcenter web application.
If you plan to install security services, ensure that you add the fully qualified domain name in the login
and service URLs while generating the security services web application.
When configuring identity services using the Application Registry table for Teamcenter and Active
Workspace, ensure that each Application Root URL consists of a fully qualified domain name.
Note
To check if the web application server you plan to use is certified with your current
Teamcenter platform, refer to the Software Certifications page on GTAC.
If you have updated the Active Workspace client, you must also deploy the awc.war file.
The lis.war is located at TC_ROOT/lis/stage/lis/lis.war.
Deploying on JBOSS
1. Copy the lis.war file to the same directory where the JBOSS application is installed, for example,
E:\LIS_WAR\.
2. Using a command prompt, navigate to the directory where you copied the lis.war file, for
example, E:\LIS_WAR.
This extracts the lis.war file in the same directory to that you navigated to from the command
prompt.
4. Create a file named jboss-deployment-structure.xml in the WEB-INF folder and paste the
following code in it:
</jboss-deployment-structure>
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>
6. Using a command prompt, navigate to the directory that contains the lis.war file, for example, the
E:\LIS_WAR\lis directory, and execute the following command:
jar –cvf lis.war
Note
If you are using JBOSS 7.1 as your web application server, comment the following lines
from the standalone.xml file:
<extension module="org.jboss.as.jaxrs"/>
<subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>
1. Copy the lis.war file to the same directory where the WebSphere application is installed, for
example, E:\LIS_WAR\.
2. Using a command prompt, navigate to the directory where you copied the lis.war file, for
example, E:\LIS_WAR.
This extracts the lis.war file in the same directory that you navigated to from the command prompt.
5. Copy the following JAR files from the new location where you extracted the contents of the
lis.war file. For example, copy the jar files from E:\LIS_WAR \lis\WEB-INF\lib directory to the
E:\LIS_WAR\shared_lib directory.
• hk2-api-2.5.0-b32.jar
• hk2-locator-2.5.0-b32.jar
• hk2-utils-2.5.0-b32.jar
• jersey-common.jar
• jersey-container-servlet-core.jar
• jersey-guava-2.25.1.jar
• jersey-media-jaxb.jar
• jersey-server.jar
• oauth-httpclient4-20090617.jar
• org.apache.httpcomponents.httpclient_4.1.0.v201103311320.jar
• org.apache.httpcomponents.httpcore_4.1.0.v201101201700.jar
• org.osgi.core-4.2.0.jar
• osgi-resource-locator-1.0.1.jar
6. Delete the copied jar files from the lib directory. For example, delete the jar files from the
E:\LIS_WAR\lis\WEB-INF\lib directory.
7. Using a command prompt, navigate to the directory that contains the lis.war file, for example, the
E:\LIS_WAR\lis directory, and execute the following command:
jar –cvf lis.war
This creates a new lis.war file that does not have JAR files that we deleted in the previous step.
Deploy the lis.war file into the WebSphere application as follows:
8. In the WebSphere navigation tree, expand Environment and click Shared libraries.
• Description: Provide a description for the library, for example, Shared isolated library for
Apache Http Client and Apache Wink.
• Classpath: Specify the location that contains new LIS files. For example, change the
classpath from the E:\LIS_WAR\lis\WEB-INF\lib directory to E:\LIS_WAR \shared_lib.
• Select the option Use an isolated class loader for this shared library.
Click OK.
12. On the Enterprise Applications page, click Class loading and update Detection.
13. Select the Classes loaded with local class loader first (parent last) check box and click OK.
15. Under Application, select lis_war and click Reference shared libraries.
16. In the Shared Library Mapping page, move the library from the Available list to the Selected list.
18. Disable the built in JAX-RS by updating the following JVM property to true:
com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine=true
You can update this property in the admin console of WebSphere by going to
Servers→All Server→Server Infrastructure→Java and Process Management→Process
Definition→Additional Properties→Java Virtual Machine→Additional Properties→Custom
Properties.
21. Check if your configuration is saved and then start the lis application.
2. Using a command prompt, navigate to the directory where you copied the lis.war file, for
example, E:\LIS_WAR.
4. Create a file named weblogic.xml in the WEB-INF folder and add the following code to it:
<prefer-application-resources>
<resource-name>META-INF/services/javax.servlet.
ServletContainerInitializer</resource-name>
<resource-name>META-INF/services/javax.ws.rs.ext.
RuntimeDelegate</resource-name>
<resource-name>jersey.repackaged.*</resource-name>
</prefer-application-resources>
</container-descriptor>
</weblogic-web-app>
5. Using a command prompt, navigate to the directory that contains the lis.war file, for example, the
E:\LIS_WAR\lis directory, and execute the following command:
jar –cvf lis.war
This creates a new lis.war file that does not have the JAR files that we deleted in the previous
step.
• Start the application server (where tc.ear is deployed) and wait till it is in running mode.
• The core services of Linked Data Framework are installed either as a Windows service or a UNIX
daemon. On Windows, the service starts automatically, while on UNIX, the system administrator
must configure the daemon to start automatically.
• You are able to access the Linked Data Framework root services . This rootservices document
shows root services with service catalogs, services, and OAuth authorization URLs.
The root service url is in the format http://Web app host:Port/lis/oslc/rootservices, for example,
http://lm6s003:7001/lis/oslc/rootservices.
• Provider: A provider allows the other application to access its services. For example, when
Teamcenter is set up as a provider, external applications can access its services such as change
management.
You can print the following checklist and use it to verify if you have completed all the tasks required
for configuring Linked Data Framework:
Teamcenter configurations
Create a Linked Data Framework site in Teamcenter that represents the external application
Add service providers
Update service providers with semantic relations they can use
Set mandatory preferences (if not already set)
ActiveWorkspaceHosting.LIS.URL
If the preference does not exist, create it.
TC_LDF_host_url
LDF_FQDN
Update remote links with new relation types
Perform this step if you have Linked Data Framework installed on a version of Teamcenter
previous to 10.1.7 or 11.2.3
Update to new Linked Data Framework relations
Perform this step if you have upgrade to Teamcenter versions 11.4 or later.
Configure Relations Browser to show Linked Data Framework objects and relations
Polarion configurations
For more information about configuring Polarion, see the Polarion Connector for Teamcenter Polarion
Installation Guide.
These basic configurations will allow you to use Linked Data Framework integration. To extend
the Linked Data Framework functionality, you must perform the following advanced configurations
and customizations:
• Update the semantic mapping file.
• Customize Relations Browser functionality to display Linked Data Framework objects and
relations.
Tip
Provide a specific name so that it is easy to identify the external system for which
you have created a site.
Note
Do not specify an IP address.
5. Type the secret phrase to be associated with the OAuth Consumer key in the OAuth Secret box.
The secret phrase can be any text.
6. Type the secret phrase, the one you provided above, again in the Re-type Secret box.
7. (Optional) Type the OAuth consumer key in the OAuth Consumer Key box. If this box is left
blank, Teamcenter automatically generates a consumer key.
8. Select the Trusted check box to indicate that the site you are creating can trust Teamcenter.
Trusted sites can share authorization data with other trusted sites.
9. Select the Active check box if it is not already checked to mark the site as active.
Only an active site can integrate with other sites.
10. Provide a path to the catalog that contains services this site provides by adding the catalog
URL to the Add Catalog URL list.
3. In the Service Provider dialog box, select the service provider you want to add from the Available
Service Provider list and add the service provider to the Selected Service Provider list.
Note
Teamcenter allows only 128 characters in the service provider name. In case your
service provider name is greater than 128 characters, modify the service provider
name in the external application and limit the name to 128 characters.
4. Click OK.
If Teamcenter is configured with SSO and you do not have an existing SSO session, a dialog
box opens asking for login and password. Type your login and password after which the service
provider is created.
The service provider appears under the site name in the Linked Data Framework Providers node of
the Organization List tree.
3. In the Semantics dialog box, select the semantic relations you want from the Available
Semantics list and add them to the Selected Semantics list.
4. Click OK.
5. Click Modify.
Note
Your external application must support OAuth 1.0a ( RFC5849) for authentication and
authorization.
The exact method of adding a site differs across tools. Refer to your tool documentation for more
information.
In IBM RTC, you can add Teamcenter as a site by creating a Friend as follows:
3.
b. In the Root Services URI box, type the URI for Teamcenter root services.
When specifying the Root Services URI, ensure that you specify a host name that is public.
Do not specify an IP address.
c. In the OAuth Secret and Re-type Secret boxes, type the OAuth secret code.
d. Select the Trusted check box to indicate that Teamcenter can trust the external application.
4. Click Finish.
2. In the Active Project Areas page, click the project where you want to create an association.
a. Select the Teamcenter application you want to connect to from the Application list.
If this is a new session, you must log on to Teamcenter with appropriate credentials.
b. Select the method by which you want the service provider to associate with Teamcenter
from the Association list.
The Artifact Containers list is automatically populated with the Teamcenter service based
on the association you select.
6. Click OK.
2. Define the relation that can be used when you create a link between the Teamcenter object type
and the object type in the external application.
3. Authenticate Teamcenter with the external application. To do this, create a remote link between
Teamcenter and the object in the remote application.
4. Generate a report that shows the relation type that needs to be updated. This relation type
links a Teamcenter object type and the object type in the external application. Use the
generate_remote_links_report_for_update utility to generate the report.
5. Make a copy of the report generated in the previous step. Update the copy with the new relation
type for the specified Teamcenter and external application object type combination. Add this new
information to the database using the update_remote_link_relations utility.
2. After you upgrade your Teamcenter and Linked Data Framework installation, run the
create_botype_reader utility with the following arguments:
• -f=create
• -filename=name-of-the-property-file-you-backed-up
For example, -file= oslc_cm_properties.xml
Example
create_botype_reader -u=ed_admin -p=ed_admin -g=dba
-mode=map_schema -domain=core –f=create –file=d:\oslc_cm_properties
To enable the Relations tab to show relations between Teamcenter objects and objects in a remote
application, do the following:
1. In the Teamcenter rich client, search for the dataset RelationB*.
3. In the Named References dialog box, select RB_UIConfigure.xml and click Download.
4. Open the RB_UIConfigure.xml file and update the following four configurations:
• parameterSet specifies the name of the parameterSet element that is used by the relation.
The parameterSet element defines how the relations and objects are mapped.
• parameterSet specifies the name of the parameterSet element that is used by the object.
The parameterSet element defines how the relations and objects are mapped.
Define parameterSet for the relations you added in the General view
• Go to the section parameterSets and under it, create a new parameterSet=relation-name
section.
Example:
<parameterSet name="AffectedByDefect">
<parameterSet name="AffectedByDefect">
<clipsfacts>
<fact>source=LDF,key=AffectedByDefectCM,relationType=AffectedByDefect,
targetDirection=forward,inputTypes=ItemRevision</fact>
<fact>source=LDF,key=AffectedByDefectCM,relationType=AffectedByDefect,
targetDirection=forward,inputTypes= Ldf0TempLinkRuntimeObject </fact>
</clipsfacts>
</parameterSet>
Define the parameterSet values in the facts elements of the clipfacts section.
• source specifies the query service. For relations to external systems, only the query LDF is
supported.
• key specifies the remote relation type. This should match value of the filter name that you
defined in the group name="relations" section.
• relationType specifies the name of the relation type used for Linked Data Framework linking.
The Linked Data Framework relations that you can use are defined in the
RelationTypeMapping element of the semantic mapping file. Use the relations defined
in the consumerRelation and providerRelation elements. When using the relations,
remove the prefix. For example, if the relation defined in the consumerRelation
element is oslc_cm:affectsRequirement, remove the prefix oslc_cm: and use only
affectsRequirement.
You can also add relations that are not defined in the semantic mapping file. Refer to your
external application for the names of the external relations.
• targetDirection specifies the direction of the relation. For remote systems, the direction
value is forward.
Define parameterSet for the objects you added in the General view
• Go to the section parameterSets and under it, create a new parameterSet=object-name
section.
For example
<parameterSet name="Ldf0TempLinkRuntimeObject">
<parameterSet name="AffectedByDefect">
<clipsfacts>
<fact>Ldf0TempLinkRuntimeObject </fact>
</clipsfacts>
</parameterSet>
Add the object names in the facts elements of the clipfacts section.
The fact value should be the values defined in the RBTypeAttrMapping element of the
semantic mapping file.
6. Delete the original RB_UIConfigure.xml file from the Named References dialog box and import
the new RB_UIConfigure.xml file.
7. Click Close.
For more information about configuring the Relations application, see the Active Workspace Help
Collection.
Set preferences
• Create a preference named ActiveWorkspaceHosting.LIS.URL and update it with the value of
the Active WorkspaceClient URL.
Note
Ensure that the URL has the suffix ?ah=true . For example
http://lm6s003:7001/awc/tc.html?ah=true. This suffix is required for
Active Workspace delegated UIs to work properly.
• To ensure that backlinks are created in the integrating application, create a preference named
TC_LDF_host_url and for its value, specify the URL that points to the local Linked Data
Framework web application.
Example: http://lm6s003.net.plm.eds.com:7001/lis/
• To ensure that Linked Data Framework URLs contain fully qualified domain names, create a
preference named LDF_FQDN and specify the fully qualified domain name of the machine where
Linked Data Framework is deployed as the preference value.
Example: .net.plm.eds.com
Note
Ensure that the URL uses hostname and not IP-based URLs. Linked Data Framework
does not support IP-based URLs.
Example
• Adding an OAuth consumer key:
maintain_consumer_key -u=username -p=password -g=dba -mode=add
-consumer_name=RTC -consumer_secret=111 -isTrusted=Y
After you create a consumer key, run the system refresh operation from your browser by accessing
the following url:
http://machine_name:port_number/lis/sys/refresh.
Here, machine_name is the machine where the lis.war file is installed and port_number is the web
server port, for example, http://localhost:7001/lis/sys/refresh.
You must always run the system refresh operation after creating a consumer key and then use
the consumer key to create a site.
Representational State Transfer Provides API specifications that allow you to use HTTP
(REST) methods to create, retrieve, update, and delete resources.
Linked Data Allows you to represent each resource as a URI and provides
HTTP links to these resources.
Resource Description Framework Allows you to specify information about the resource.
(RDF)
Once Linked Data Framework is setup, you can create links between resources, view data, and
update resources.
To support the integration, Linked Data Framework uses the following framework:
By default Change Management, Core Services, and Requirement Management domains are
available. You can add other domains as per your requirements.
The Core Services catalog provides services to create, query, update, and delete generic Teamcenter
objects such as item, document, parts using UI-based or API-based interfaces. Integrators can also
add custom services for processing the core or custom business objects.
o Factory services provide programmatic interfaces for performing operations such as creating
and querying objects.
o Delegated user interface (UI) services provide a UI-based service. The UI is rendered using
Active Workspace. This service is defined with a URI pointing to an Active Workspace UI
designed for that service.
• If you create a factory service, you must also specify service operations. A service operation is
an ITK that is part of a library. For each factory service, all REST operations can be defined.
For every service, you can associate four different REST-operation implementations: GET,
POST, PUT, and DELETE.
• To support the new service catalog, create a new class based on the Osl0ResourceAttrHelper
class, and register the class using the create_botype_reader utility.
• After you create service catalogs, services, service operations, and the new class in Business
Modeler IDE, deploy the template to Teamcenter.
• Create a dataset in Teamcenter and attach an XML file that contains mapping information.
Register the dataset using the create_botype_reader utility.
By default, Change Management and Core Services catalog are available. You can add other
domains as per your requirements.
The Core Services catalog provides services to create, query, update, and delete generic Teamcenter
objects such as items, documents, and parts by using UI-based or API-based interfaces. Integrators
can also add custom services for processing the core or custom business objects.
b. In the Title box, type the display name to the new catalog.
d. In the Version box, type the protocol version supported by the catalog.
f. In the Namespace Prefix box, type the prefix you want to assign.
g. In the URL ID box, type the uniform resource identifier to form the URL for this resource.
h. In the Include Types table, select the list of business objects that the catalog supports.
i. In the Exclude Types table, select the list of business objects that the catalog does not
support.
j. Click Finish.
The new catalog appears under the selected protocol instance.
3. To save the changes to the data model, choose BMIDE→Save Data Model on the menu bar or
click the Save Data Model button on the main toolbar.
2. Enter the following information in the New LDF Service dialog box:
a. In the Name box, type the name you want to assign to the new service.
b. In the Title box, type the display name to the new service. This appears in the service catalog.
d. In the URL ID box, type the uniform resource identifier. This forms the URL for the resource.
e. Click the arrow in the Service Type box to select the kind of service type, either a business
object type, generic, or an instance type.
• BOType
Specifies that the service being defined is based on a business object type.
• Generic
Specifies that the service being defined does not apply to a specific business object type.
• Instance
Specifies services for update, delete, and preview for a specified business object
instance.
f. Click the Browse button in the Resource Type box, and select the business object type,
such as ChangeItem.
o Resource Shape
Holds the URI required to get the resource shape (a data dictionary in RDF/JSON
output format) for a given business object type.
o Factory URI
Holds the URI for invoking this factory service.
• Delegate UI Service
Creates the service dialog box. Perform the following steps:
A. In the Delegated URI box, specify the delegated user interface URI for this service
implementation.
B. In the Hint Height box, specify the value for the height of the Delegated UI dialog
box in pixels.
C. In the Hint Width box, specify the value for the width of the Delegated UI dialog
box in pixels.
3. To save the changes to the data model, choose BMIDE→Save Data Model on the menu bar, or
click the Save Data Model button on the toolbar.
Tip
You must create a service factory before you create a service operation.
3. Right-click the service factory in which you want to create the new operation, choose Open, and
click the Operations tab.
5. Perform the following steps in the Link Data Framework (LDF) Service Operation dialog box:
b. In the Function name box, type the API you want to assign for executing the service
operation.
c. Click the arrow in the REST Action box to select the REST operation type: GET, PUT,
POST, or DELETE. Only one operation with the selected REST action can be active.
d. Click the Operation Description button to type a complete description of the functionality
exposed through the service operation.
• Describe what this operation does. Explain more than simply stating the method name.
• Make the description complete in its usefulness. Keep in mind the client application
developer while writing the content.
• Whenever appropriate, describe how each argument interrelates when this operation
completes.
• Use correct formatting with fixed and bold text where appropriate.
e. Click the Return Description button to type a complete description of what the service
operation returns. Follow these best practices:
• Describe what the output represents and provide high-level details of the output data. Do
not specify only the type of service data returned.
• Specify returned objects that are created, updated, or deleted as part of service data.
• Use correct formatting with fixed and bold text where appropriate.
f. Click the Use Case button to describe how the user interacts with this operation to
accomplish the operation’s goal. Follow these best practices:
• Document when and why this operation can be consumed.
• Describe how operations interrelate to satisfy the use case (if there is interrelation
between operations).
• Use correct formatting with fixed and bold text where appropriate.
g. Click the Library button to select the library where the API is defined, for example,
Lis0lisfmwrk.
i. Click Finish.
The new service operation displays on the Operations tab. To see the characteristics of the
operation, select it and click Operation Definition on the right side of the editor.
6. To save the changes to the data model, choose BMIDE→Save Data Model on the menu bar, or
click the Save Data Model button on the main toolbar.
7. You must also implement the operation in C++. A sample implementation of a GET operation is
as follows:
#include <fclasses/tc_string.h>
#include <tc/tc.h>
#include <fclasses/tc_string.h>
#include <base_utils/ScopedPtr.hxx>
#include <base_utils/ScopedSmPtr.hxx>
#include <base_utils/SharedPtr.hxx>
#include <base_utils/Mem.h>
#include <tc/tc_util.h>
#include <fclasses/tc_types.h>
#include <tccore/aom_prop.h>
#include <Lis0lisfmwrk/LisfmwrkUtils.hxx>
#include <Lis0lisfmwrk/lis_defines.h>
#include <Lis0lisfmwrk/Lis0lisfmwrk_errors.h>
#include <Lis0lisfmwrk/toolkit/AbstractResource.hxx>
#include <Lis0lisfmwrk/lis_factory.h>
#include <Lis0lisfmwrk/Lis0JsonWriter.hxx>
#include <metaframework/BusinessObject.hxx>
#include <metaframework/BusinessObjectRef.hxx>
3. To register this class in Teamcenter, run the create_botype_reader utility with information about
the new class.
For example:
create_botype_reader -u=infodba -p=infodba -g=dba -mode=resource
-type=Cus0RMResourceAttrHelper -protocol=oslc -versions=2.0 -domain=rm
where
-domain specifies the URL identifier of the service catalog, and
-type specifies the name of the newly created class.
After you create service catalogs, services, service operations, and the new class in Business
Modeler IDE, deploy the template to Teamcenter.
• lis_cm_properties.xml
When you create new domains you need to create a new semantic mapping file for that domain.
<DomainProperties>
<NamespaceURI>
<!—Specifies the namespaces for Teamcenter and OSLC services -->
</NamespaceURI>
<TypeURIMapping>
<!—Specifies the URI for a particular semantic type. For example URI for
Change Request -->
</TypeURIMapping>
<ExternalSemanticType>
<!—Specifies details for a particular semantic type. -->
</ExternalSemanticType>
<TypeMapping>
<!—Specifies the Teamcenter object types that are mapped to a particular
semantic type -->
</TypeMapping>
<TypeAttrMapping>
<!—Specifies the mapping between attributes of Teamcenter object types and the
attributes of the semantic type -->
</TypeAttrMapping>
<RelationTypeMapping>
<!—Specifies the mapping between relations of Teamcenter object types and the
relations of the semantic type. -->
</RelationTypeMapping>
</DomainProperties>
NamespaceURI element
Specifies namespace information. Namespaces allow organization of data into separate categories
such for change management or requirements management.
<NamespaceURI>
<Namespace namespacePrefix="tc"
namespaceValue="http://www.plm.automation.siemens.com/ldf#"/>
<Namespace namespacePrefix="oslc"
namespaceValue="http://open-services.net/ns/core#"/>
<Namespace namespacePrefix="oslc_cm"
namespaceValue="http://open-services.net/ns/cm#"/>
<Namespace namespacePrefix="oslc_rm"
namespaceValue="http://open-services.net/ns/rm#"/>
<Namespace namespacePrefix="dcterms"
namespaceValue="http://purl.org/dc/terms/"/>
</NamespaceURI>
TypeURIMapping element
Specifies the URI of the semantic type. Semantic type refers to an OSLC resource such as Change
Request or Requirement.
<TypeURIMapping>
<SemanticType name="ChangeRequest"
uri = "http://open-services.net/ns/cm#ChangeRequest" />
<SemanticType name="Requirement"
uri = "http://open-services.net/ns/rm#Requirement" />
</TypeURIMapping>
ExternalSemanticType element
Specifies details for a specific semantic type such as Change Request.
TypeMapping element
Specifies the Teamcenter object types that are mapped to a semantic type.
<TypeMapping targetType="ChangeRequest">
<TcTypeMapping srcTcType="ChangeRequest"/>
<TcTypeMapping srcTcType="ProblemReport"/>
</TypeMapping>
TypeAttrMapping element
Maps the attributes of the Teamcenter object types to the semantic types. The Teamcenter
object types were define in the TypeMapping element and the semantic types were defined in
the ExternalSemanticType element.
The attributes of a semantic type can be mapped to multiple Teamcenter object types.
<TypeAttrMapping targetType="ChangeRequest">
<AttrMapping srcTcType="ChangeRequest" srcTcAttr="releaseDate"
targetSemanticAttr="oslc_cm:closeDate"/>
<AttrMapping srcTcType="ProblemReport" srcTcAttr="status"
targetSemanticAttr="oslc_cm:status"/>
</TypeAttrMapping>
Note
The releaseDate attribute from srcTcType is mapped to oslc_cm:closeDate attribute.
This mapping is applicable only for the Teamcenter type Change Request and its
subclasses.
The status attribute from srcTcType is mapped to oslc_cm:status attribute. This mapping
is applicable only for the Teamcenter type ProblemReport and its subclasses.
RBTypeAttrMapping element
Maps semantic types to the runtime Teamcenter object types. These runtime Teamcenter object
types are used to represent the semantic types in the Relations application.
By default, the Ldf0TempLinkRuntime object type is mapped to the CoreBO semantic type and the
Lcm1ChangeRequest object type is mapped to the ChangeRequest semantic type.
You must map other custom object types to the semantic types.
RelationTypeMapping element
Maps Teamcenter relation type with the relation type of the semantic element.
<RelationTypeMapping targetType="CoreBO">
<TcRelationMapping srcTcRelationType="Lcm0AffectsRequirement"
consumerRelation="oslc_cm:affectsRequirement"
providerRelation="oslc_cm:relatedChangeRequest"/>
<TcRelationMapping srcTcRelationType="Lcm0ImplementsRequirement"
consumerRelation="oslc_cm:implementsRequirement"
providerRelation="oslc_cm:relatedChangeRequest"/>
</RelationTypeMapping>
If the external application uses a custom relation that is not part of the OSLC specification, ensure
that you update this section, else backlinks may not be created.
If you have created a custom object, ensure that the relations are defined as properties of the custom
object in Business Modeler IDE. If you do not do this, the links will not appear in the Remote Links
table after they are created.
This element contains the following tags:
After updating the semantic mapping file perform the following steps:
1. Validate the semantic mapping file using the create-botype_reader utility. When you use the
–f=validate argument, this utility validates the Teamcenter types as well as the types specified in
the extends clause.
The output of this utility run is a file named semantic_data.csv. This file lists the TypeMapping
and RelationTypeMapping entries in your semantic mapping file. Check if the mapping is correct.
2. Store the semantic mapping file to the database using the create-botype_reader utility. When
you use the –f=create argument, this utility stores the semantic mapping file to the database.
3. (Optional) List the semantic types: Using the create-botype_reader utility you can list the
semantic mapping entries that were saved to the database. Use the –f=list argument.
For example, while adding links to the remote system, if you want to add Part and System Block
types in addition to the already existing Item type as part of the CoreBO semantic type, update
the TypeMapping element as follows:
<TypeMapping targetType="ExtendedChangeRequest">
<TcTypeMapping srcTcType="CustomChangeRequest"/>
<TcTypeMapping srcTcType="CustomProblemReport"/>
</TypeMapping>
Note
Abstract Teamcenter types must not be mapped to the semantic types.
• If you are updating existing semantic mapping files, delete the named references of these
semantic mapping files that are associated with the following datasets:
o Core: Dataset = oslc_core_attr_ds, Named reference = lis_core_properties.xml
• Run the create-botype_reader utility using the –f=create argument to update the semantic
mapping file.
<SemanticKey>
<TcSemanticType>ChangeRequest</TcSemanticType>
<RemoteSemanticType>CoreBO</RemoteSemanticType>
<SemanticRelationType>Lis0Reference</SemanticRelationType>
<SemanticRelationType>Lis0Specification</SemanticRelationType>
</SemanticKey>
• If you do not create a definition for a Teamcenter object type, the parent object definition is
used when you create a remote link. For example, if no definition is created for change
notice, the change item definition is used when creating remote links. Similarly, if no definition
is created for the change item, the item definition is used when creating remote links.
2. Add these definitions to the database using the maintain_ldf_semantics utility, using the
–create argument.
c. In the Semantics dialog box, select the semantic relations you want from the Available
Semantics list and add them to the Selected Semantics list.
d. Click OK.
e. Click Modify.
4. Verify if the relation types appear when you create a remote link.
Note
When you upgrade to Teamcenter version 11.5, some relation types will not be available.
For a list of the available relations, see Changes in semantic relations in Teamcenter
11.5 onwards.
<SemanticKey>
<TcSemanticType>ChangeRequest</TcSemanticType>
<RemoteSemanticType>CoreBO</RemoteSemanticType>
<SemanticRelationType>Lis0Reference</SemanticRelationType>
<SemanticRelationType>Lis0Specification</SemanticRelationType>
</SemanticKey>
<SemanticKey>
<TcSemanticType>Requirement</TcSemanticType>
<RemoteSemanticType>CoreBO</RemoteSemanticType>
<SemanticRelationType>Lis0Reference</SemanticRelationType>
<SemanticRelationType>Lis0Specification</SemanticRelationType>
</SemanticKey>
For more information about configuring the Relations application, see the Active Workspace Help
Collection.
You can add objects and relations supported by Linked Data Framework to views in the Relations
application as follows:
1. Create runtime object types in Business Modeler IDE that correspond to the object types in the
external application by extending the existing Teamcenter runtime objects. For example, for a
change request in the external application, extend the runtime Lcm1ChangeRequest object in
Business Modeler IDE, which maps to the defect object. For Polarion objects, corresponding
Teamcenter objects are created by default.
If you have added a custom domain, extend the Ldf0TempLinkRuntimeObject runtime business
object to represent the custom semantic types.
2. Update the RBTypeAttrMapping element in the semantic mapping file to map the semantic type
to the Teamcenter runtime business object type.
3. Update the Relations configuration file with information about the extended semantic types
and semantic relations. The RV1_DARB_UI_configuration_file_name preference specifies
the name of this configuration file.
For more information about updating the Relations configuration file, see the Active Workspace
Help collection.
<subRendering>
<section title="Remote Links" titleKey="tc_xrt_RemoteLinks" >
<objectSet source="Lrm0MasterRelation.Lis0Link,IMAN_reference.Lis0Link,
IMAN_specification.Lis0Link,Lcm0AffectsRequirement.Lis0Link,
Lcm0ImplementsRequirement.Lis0Link,Lcm0TracksRequirement.Lis0Link,
Lcm0AffectedByDefect.Lis0Link,Lcm0AffectsPlanItem.Lis0Link,
Lcm0TracksChangeSet.Lis0Link,Lcm0RelatedChangeRequest.Lis0Link,
Lcm0ImplementedBy.Lis0Link" defaultdisplay="tableDisplay"
sortby="object_string" sortdirection="ascending">
<tableDisplay>
<property name="object_name"/>
<property name="relation"/>
<property name="lis0SecondaryRemoteObjType" modifiable="false"/>
</tableDisplay>
<thumbnailDisplay/>
<listDisplay/>
<command actionKey="newBusinessObjectContextualAction"
commandId="com.teamcenter.rac.ldf.createNew" renderingHint="commandbutton"/>
<command actionKey="cutAction" commandId="org.eclipse.ui.edit.cut"
renderingHint="commandbutton">
<parameter name="localSelection" value="true"/>
</command>
</objectSet>
</section>
<command actionKey="deleteLinkObject"
commandId="com.teamcenter.rac.ldf.deleteLink" renderingHint="commandbutton" />
</subRendering>
2. Create a dataset with the same name as the XML file you created in the previous step and
associate the XML file to this dataset as a named reference.
For example, create a dataset named coreRemoteLinksSummarySection and associate the
coreRemoteLinksSummarySection.xml file to this dataset as a named reference.
3. Add the XML file you created in the previous step to the stylesheet of the business object using
the inject argument.
For example, to add the Create Link user interface in the Attachments tab of an Item Revision,
do the following:
a. In My Teamcenter, open the summary stylesheet for the object . For the item revision, the
name of the summary stylesheet is Awp0ItemRevSummary.
b. Add the inject statement where you want the Remote Links user interface to appear.
For example, to make the Remote Links user interface to appear in the Attachments tab,
update the Attachments page element with the following inject statement:
You can see the complete XML code of the Attachments page element at the end of this
topic:
</page>
<page titleKey="attachments">
<section titleKey="tc_xrt_Files">
<objectSet source="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>
<property name="object_string"/>
<property name="object_type"/>
<property name="relation" modifiable="true"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
<thumbnailDisplay/>
<listDisplay/>
<command actionKey="newBusinessObjectContextualAction"
commandId="com.teamcenter.rac.common.AddNew"
renderingHint="commandbutton"/>
<command actionKey="pasteAction"
commandId="com.teamcenter.rac.viewer.pastewithContext"
renderingHint="commandbutton"/>
<command actionKey="cutAction" commandId="org.eclipse.ui.edit.cut"
renderingHint="commandbutton">
<parameter name="localSelection" value="true"/>
</command>
</objectSet>
</section>
<section titleKey="tc_xrt_Documents">
<objectSet source="IMAN_specification.DocumentRevision"
sortdirection="ascending" sortby="object_string"
defaultdisplay="listDisplay">
<tableDisplay>
<property name="object_string"/>
<property name="object_type"/>
<property name="release_status_list"/>
<property name="date_released"/>
<property name="owning_user"/>
</tableDisplay>
<thumbnailDisplay/>
<listDisplay/>
<command actionKey="newBusinessObjectContextualAction"
commandId="com.teamcenter.rac.common.AddNew"
renderingHint="commandbutton"/>
<command actionKey="pasteAction"
commandId="com.teamcenter.rac.viewer.pastewithContext"
renderingHint="commandbutton"/>
<command actionKey="cutAction" commandId="org.eclipse.ui.edit.cut"
renderingHint="commandbutton">
<parameter name="localSelection" value="true"/>
</command>
</objectSet>
</section>
<inject type="dataset" src="coreRemoteLinksSummarySection"/>
</page>
Suppose you have started a change workflow and the object in the external application is related to
that workflows Targets, References, or is itself a target. The workflow can only proceed forward if
the object in the external application is in a particular state, for example status is closed. To check
the state of the object in the external application, you can use the LDF-sync-ldf-status rule handler
in your workflow.
Remote systems can use the Linked Data Framework Notify service to notify Teamcenter about
changes. If you want the remote system to advance a workflow, the remote system should call the
notify service which then calls the EPM_trigger_advancer workflow API. This workflow API can
then advance the workflow.
• The LDF-set-task-result-to-property handler reads the specified property from the remote
object and updates its task result.
• The LDF-sync-ldf-status handler queries attributes of remote objects to determine the state
of the remote object.
Example
<TypeMapping targetType="SoftwareRelease">
<TcTypeMapping srcTcType="Software"/>
<TcTypeMapping srcTcType="AppSoftware"/>
<TcTypeMapping srcTcType="Calibration"/>
<TcTypeMapping srcTcType="ConfigFile"/>
<TcTypeMapping srcTcType="Ess0License"/>
<TcTypeMapping srcTcType="PriBootloader"/>
<TcTypeMapping srcTcType="SecBootloader"/>
</TypeMapping>
• By default, the Architecture tab in Active Workspace is enabled only for the Software
Architecture component. To enable it for other components, update the Awb0AvailableFor
constant with the appropriate value of the component.
• To restrict what type of relations you can create between two occurrences, create a preference in
the format primary_type_name_secondary_type_name_allowed_relations.
Example
To restrict the relation between Software Revision and Processor Revision to
Compatible Link, create a preference named Software Revision_Processor
Revision_allowed_relations and in the value section add Esw0CompatibleLink.
To find the names of the Embedded Software Management components, load the
esw0esmgmt_schema.xml template in Business Modeler IDE.
For more information about how you can create links to external applications using Linked Data
Framework, see the Change Management documentation in Active Workspace help collection.
You can also upload software binary or software package files from a software artifact to Teamcenter.
Linked Data Framework allows external applications to programmatically create, update, and query
Teamcenter resources using REST action. These REST actions are HTTP based interfaces that
usehttp methods such as GET, POST, PUT, DELETE, HTTP response codes, content type handling,
and resource formats.
You can use a REST client to access the URLs for creating, querying, and updating the supported
Teamcenter resources as follows:
• Use the GET method and the root services URL to obtain an XML file. In the XML file, search for
the Service Provider Catalog URL.
• In the XML file that appears, find the Creation Factory and Query Factory URLs.
• Use the Creation Factory URL to create a Teamcenter resource and the Query Factory URL to
query Teamcenter resources.
The following header information is required for the REST method invocation:
Where:
application/rdf+xml Providers must respond with RDF/XML representation.
application/json Providers must respond with JSON representation.
If-Match Contains the eTag that determines the state of the
resource.
Content-Type Specifies the input content type to all OSLC providers.
OSLC-Core-Version Specifies the supported version of the OSLC specification.
You must pass the RDF/XML or JSON as input when you use the REST APIs.
GET action
Description
Retrieves all information about a specific Teamcenter resource by making an HTTP GET request
to the Query Factory URL.
Headers Accept: application/rdf+xml OR application/json
OSLC-Core-Version: 2.0
Resource URI URL of the Teamcenter resource that contains its UID.
Method GET
Response information
Response headers
Status code 200: Successful. Response body contains all the information of the resource.
Status code 500: Resource does not exist. Response body will show error message from
Teamcenter. For example, The specified tag has been deleted, cannot find requested object
Response body
JSON or RDF+XML.
Example
Method: GET
Resource URI: http://pni6w2071.net.plm.eds.com:7001/lis/oslc/cm/BO?uid=AaYhvJClYj1eHD
Headers:
OSLC-Core-Version: 2.0
Accept: application/json
Response header
Etag: AmXhvJClYj1eHD-AaYhvJClYj1eHD
OSLC-Core-Version: 2.0
Transfer-Encoding: chunked
X-Powered-By: Servlet/2.5 JSP/2.1
Response body
{
"dcterms:contributor": "18-Apr-2017 14:31",
"dcterms:created": "18-Apr-2017 14:31",
"dcterms:creator": "infodba",
"dcterms:description": "ECR-000035",
"dcterms:identifier": "ECR-000035",
"dcterms:modified": "18-Apr-2017 14:31",
"dcterms:subject": "ECR-000035",
"dcterms:title": "ECR-000035",
"etag": "AmXhvJClYj1eHD-AaYhvJClYj1eHD",
"oslc:instanceShape": "https:\/\/fanyv88.com:443\/http\/pni6w2071.net.plm.eds.com:7001\/lis\/oslc\/
resourceShape\/ChangeRequest",
"oslc:shortTitle": "ECR-000035",
"oslc_cm:affectedByDefect":
[
{
"dcterms:title": "https:\/\/fanyv88.com:443\/http\/pnv6s282.net.plm.eds.com:82\/polarion\/oslc\/
services\/projects\/elibrary\/workitems\/EL-204",
"rdf:resource": "https:\/\/fanyv88.com:443\/http\/pnv6s282.net.plm.eds.com:82\/polarion\/oslc\/
services\/projects\/elibrary\/workitems\/EL-204",
"rdf:type":
[
]
}
],
"oslc_cm:closeDate": "18-Apr-2017 14:31",
"prefixes":
{
"dcterms": "https:\/\/fanyv88.com:443\/http\/purl.org\/dc\/terms\/",
"oslc": "https:\/\/fanyv88.com:443\/http\/open-services.net\/ns\/core#",
"oslc_cm": "https:\/\/fanyv88.com:443\/http\/open-services.net\/ns\/cm#",
"rdf": "https:\/\/fanyv88.com:443\/http\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#",
"rdfs": "https:\/\/fanyv88.com:443\/http\/www.w3.org\/2000\/01\/rdf-schema#",
"tc": "https:\/\/fanyv88.com:443\/http\/www.plm.automation.siemens.com\/ldf#"
},
"rdf:about": "https:\/\/fanyv88.com:443\/http\/pni6w2071.net.plm.eds.com:7001\/lis\/oslc\/cm\/
BO?uid=AaYhvJClYj1eHD",
"rdf:type":
[
{"rdf:resource": "https:\/\/fanyv88.com:443\/http\/open-services.net\/ns\/cm#ChangeRequest"}
]
}
POST action
Description
Creates a resource in Teamcenter resource by making an HTTP POST request to the Creation
Factory URL.
Headers
OSLC-Core-Version:2.0
Content-Type: application/json
Content Body: It contain the resource which need to be created.
Response information
Response headers
Successful: Status code 200 with etag and location that contains the Reource URL.
Content body invalid: Status code 500. Response body will show error message from Teamcenter.
For example, The Media Reader has failed to parse the input JSON envelop/document. Check
the Teamcenter server syslog for more details.
Response body
JSON or RDF+XML.
Example
Method: POST
Resource URI: http://pni6w2071.net.plm.eds.com:7001/lis/oslc/cm/createfactory
Headers:
OSLC-Core-Version:2.0
Content-Type: application/json
Content body
{
"dcterms:description": "Test_factory_create1",
"dcterms:title": "Test_factory_create1",
"dcterms:type": "ChangeRequest",
"prefixes":
{
"dcterms": "https:\/\/fanyv88.com:443\/http\/purl.org\/dc\/terms\/",
"oslc": "https:\/\/fanyv88.com:443\/http\/open-services.net\/ns\/core#",
"oslc_cm": "https:\/\/fanyv88.com:443\/http\/open-services.net\/ns\/cm#",
"rdf": "https:\/\/fanyv88.com:443\/http\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#",
"rdfs": "https:\/\/fanyv88.com:443\/http\/www.w3.org\/2000\/01\/rdf-schema#",
"tc": "https:\/\/fanyv88.com:443\/http\/www.plm.automation.siemens.com\/ldf#"
},
"rdf:about": "https:\/\/fanyv88.com:443\/http\/pni6w2071.net.plm.eds.com:7001\/lis\/oslc\/cm\/
createfactory",
"rdf:type":
[
{"rdf:resource": "https:\/\/fanyv88.com:443\/http\/open-services.net\/ns\/cm#ChangeRequest"}
]
}
Response header
PUT action
Description
Updates content of a specific resource in Teamcenter by making an HTTP PUT request to the
resource URL.
Headers
Content-Type: application/rdf+xml, application/json
OSLC-Core-Version: 2.0
If-Match = Eta, make sure that changes are applied to the state of the
resource that has been fetched from the server.
Resource URI Reource URL that contains the Teamcenter resource UID.
Method PUT
Content body Contains the resource that needs to be updated.
Before using PUT, use the GET method on the Teamcenter resource,
which will return the response body and Etag in response header. Use the
Etag in the IF-match of the PUT request.
Response information
Response headers
Successful: Status code 200 with Etag containing the state of the resource.
Note
Avoid overwriting changes done by someone else. A resource may have changed in
the time between fetching it, doing modifications and sending it back. Clients must not
blindly overwrite work item contents but ensure that the changes are applied to the
state that they fetched from the server. This is done by including the Etag received on
load in the If-Match header when updating the work item back to the server using PUT.
If the state of the server is still the same, the update will succeed with a 200OK status.
If the work item was modified, it will fail with a 412 Precondition Failed status.
Response body
JSON or RDF+XML.
Example
Method: PUT
Resource URI: http://pni6w2071.net.plm.eds.com:7001/lis/oslc/cm/BO?uid=AaYhvJClYj1eHD
Headers:
Content-Type: application/rdf+xml
OSLC-Core-Version: 2.0
If-Match = QxWhfFXKYjj4JA-QlXhfFXKYjj4JA
Content body
<rdf:RDF
xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns#
xmlns:oslc="http://open-services.net/ns/core#"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:j.0=http://open-services.net/ns/cm#
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<j.0:ChangeRequest rdf:about="http://pni6w2071.net.plm.eds.com:7001/lis/oslc/
cm/BO?uid=AaYhvJClYj1eHD">
<dcterms:title>Test_factory_create1_update</dcterms:title>
<dcterms:description>Test_factory_create1_update</dcterms:description>
</j.0:ChangeRequest>
</rdf:RDF>
Response header
DELETE action
Description
Deletes a resource in Teamcenter by making an HTTP DELETE request to the resource URL.
Headers
Accept : application/rdf+xml
OSLC-Core-Version :2.0
Content-Type : application/rdf+xml OR application/json
Resource URI Reource URL that contains the Teamcenter resource UID.
Method DELETE
Response information
Response headers
Successful deletion: Status code 200
Response body
JSON or RDF+XML.
Example
Method: DELETE
Resource URI: http://pni6w2071.net.plm.eds.com:7001/lis/oslc/cm/BO?uid=AaYhvJClYj1eHD
Headers:
Accept : application/rdf+xml
OSLC-Core-Version :2.0
Response header
QUERY action
Description
Queries resources in Teamcenter by making HTTP GET requests to the query URL. Optionally,
this can be filtered with a where clauses.
Headers
Accept: application/rdf+xml OR application/json
OSLC-Core-Version: 2.0
Method GET
Query Parameters
Parameter Type Description
oslc.where string Name of the oslc properties that
must be queried. Supported
properties include:
• dcterms:type
• dcterms:description
• dcterms:title
• dcterms:subject
• dcterms:identifier
• oslc:shortTitle
Response information
Response headers
Successful: Status code 200: List of resources.
Status code 404: Not Found: The Registry Helper has failed to process the request, because
no valid Provider Catalogue exists.
Status code 500: Internal Server Error: The specified type does not exist.
Response body
JSON or RDF+XML.
Example 1
Method: GET
Query URL: http://pni6w11193:7001/lis/oslc/core/queryfactory
Headers:
OSLC-Core-Version: 2.0
Accept: application/json
Response header
Response body
{
"oslc:responseInfo":
[
{
"oslc:totalCount": 3,
"rdf:type":
[
{"rdf:resource": "https:\/\/fanyv88.com:443\/http\/open-services.net\/ns\/core#ResourceInfo"}
],
"rdfs:member":
[
{"rdf:resource": "https:\/\/fanyv88.com:443\/http\/pni6w11193.net.plm.eds.com:7001\/lis\/oslc\/
core\/BO?uid=A3Yp8rIQ6jRptC"},
{"rdf:resource": "https:\/\/fanyv88.com:443\/http\/pni6w11193.net.plm.eds.com:7001\/lis\/oslc\/
core\/BO?uid=A5QpbDN06jRptC"},
{"rdf:resource": "https:\/\/fanyv88.com:443\/http\/pni6w11193.net.plm.eds.com:7001\/lis\/oslc\/
core\/BO?uid=A5bpsI2E6jRptC"},
]
}
],
"prefixes":
{
"dcterms": "https:\/\/fanyv88.com:443\/http\/purl.org\/dc\/terms\/",
"oslc": "https:\/\/fanyv88.com:443\/http\/open-services.net\/ns\/core#",
"rdf": "https:\/\/fanyv88.com:443\/http\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#",
"rdfs": "https:\/\/fanyv88.com:443\/http\/www.w3.org\/2000\/01\/rdf-schema#",
"tc": "https:\/\/fanyv88.com:443\/http\/www.plm.automation.siemens.com\/ldf#"
},
"rdf:about": "https:\/\/fanyv88.com:443\/http\/pni6w11193.net.plm.eds.com:7001\/lis\/oslc\/
core\/queryfactory",
"rdf:type":
[
]
}
Example 2:
Method: GET
Query URL with where clause:
http://pni6w11193:7001/lis/oslc/core/queryfactory?oslc.where=dcterms:type=Item
Headers:
OSLC-Core-Version: 2.0
Accept: application/json
Response header
Response body
{
"oslc:responseInfo":
[
{
"oslc:totalCount": 3,
"rdf:type":
[
{"rdf:resource": "https:\/\/fanyv88.com:443\/http\/open-services.net\/ns\/core#ResourceInfo"}
],
"rdfs:member":
[
{"rdf:resource": "https:\/\/fanyv88.com:443\/http\/pni6w11193.net.plm.eds.com:7001\/lis\/oslc\/
core\/BO?uid=A3Yp8rIQ6jRptC"},
{"rdf:resource": "https:\/\/fanyv88.com:443\/http\/pni6w11193.net.plm.eds.com:7001\/lis\/oslc\/
core\/BO?uid=A5QpbDN06jRptC"},
{"rdf:resource": "https:\/\/fanyv88.com:443\/http\/pni6w11193.net.plm.eds.com:7001\/lis\/oslc\/
core\/BO?uid=A5bpsI2E6jRptC"},
]
}
],
"prefixes":
{
"dcterms": "https:\/\/fanyv88.com:443\/http\/purl.org\/dc\/terms\/",
"oslc": "https:\/\/fanyv88.com:443\/http\/open-services.net\/ns\/core#",
"rdf": "https:\/\/fanyv88.com:443\/http\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#",
"rdfs": "https:\/\/fanyv88.com:443\/http\/www.w3.org\/2000\/01\/rdf-schema#",
"tc": "https:\/\/fanyv88.com:443\/http\/www.plm.automation.siemens.com\/ldf#"
},
"rdf:about": "https:\/\/fanyv88.com:443\/http\/pni6w11193.net.plm.eds.com:7001\/lis\/oslc\/
core\/queryfactory\/?&oslc.where=dcterms:type=Item",
"rdf:type":
[
]
}
NOTIFY action
Description
Notifies Teamcenter about a change associated with the linked object, for example, a remote
system such as Polarion sends URLs of Teamcenter objects associated with the Polarion work
items whose status is changed.
Headers
Accept: application/xml
Authorization: OAuth realm="Teamcenter",
oauth_token="bdce003d-5199-48d5-85fe-4c71f3e64cbd",
oauth_consumer_key="f013abe9-7258-42da-98da-5c1373c46546",
oauth_signature_method="HMAC-SHA1", oauth_timestamp="1526898982",
oauth_nonce="4589207281453928", oauth_version="1.0",
oauth_signature="vCUmLISgIgvxXEoR2Msi%2FQxmXGg%3D"
Content-Type: application/json
OSLC-Core-Version: 2.0
User-Agent: Wink Client v1.1.2
Content-Length: 1708
Host: pni6w11193.net.plm.eds.com:7001
Connection: Keep-Alive
Cookie: JSESSIONID=lQT8bCpGfgBjS2GW8LG8hpTB57kvr1YSW
cRqvPfsPgjZ2PLcSP2t!201170707
Cookie2: $Version=1
URI http://hostname/lis/oslc/custom/notify
Method POST
Content Body
{
."dcterms:created": "2018-05-21T16:04:33.073+05:30",
."dcterms:description": "<span style=\"font-size: 10pt;
line-height: 1.5;\">Nitin_CR_21May_003<\/span>",
."dcterms:identifier": "EL-333",
."dcterms:modified": "2018-05-21T16:05:45.240+05:30",
."dcterms:subject": [
.],
."dcterms:title": "Nitin_CR_21May_003",
."dcterms:type": "Change Request",
."oslc:serviceProvider": {
.."rdf:resource": "https:\/\/fanyv88.com:443\/http\/pnv6s435:82\/polarion\/oslc\/
services\/projects\/elibrary"
.},
."oslc:shortTitle": "EL-333",
."oslc_cm:closeDate": "2018-05-21T16:06:21.550+05:30",
."oslc_cm:closed": false,
."oslc_cm:fixed": true,
."oslc_cm:inprogress": false,
."oslc_cm:relatedChangeRequest": [
..{
..."dcterms:title": "Nitin_CR_21May_002_TC4",
..."rdf:resource": "https:\/\/fanyv88.com:443\/http\/pni6w11193.net.plm.eds.com:7001\/
lis\/oslc\/cm\/BO?uid=wldtg4FJ6jRptC"
..}
.],
."oslc_cm:status": "Approved",
."oslc_cm:verified": false,
."pol1:categories": [
.],
."pol1:previousStatus": "Reviewed",
."pol1:priority": "Medium",
."pol1:resolution": "Valid",
Response Header
HTTP/1.1 201 Created
Date: Mon, 21 May 2018 10:36:22 GMT
Transfer-Encoding: chunked
Content-Type: application/xml; charset=UTF-8
OSLC-Core-Version: 2.0
X-Powered-By: Servlet/3.0 JSP/2.2
• If you receive a CSRF attack warning in your browser when connecting to Teamcenter, clear the
browser cache and log on again.
• When viewing Teamcenter information from the external application, the Show More and Show
Less links show the same content because they point to the same URL.
• If one user from the external application maps to more than one Teamcenter user, Teamcenter
will not be able to identify the correct user. This is because Teamcenter uses the same Oauth
user authentication that the external application uses to map its users.
• Linked Data Framework and Active Workspace must be deployed to the same domain of the web
app server. An inconsistency results in issues while rendering the delegated UI dialogs. This is
due to the Same Origin Policy that the browser implements.
• Although change management and core service catalogs are available by default, external
applications cannot identify the core service catalogs because the external applications do not
consume any Teamcenter namespaces.
• When using the PUT and DELETE REST operations, you must specify the Accept Header as
or application/json, even though these operations do not return any output.
application/rdf+xml
• Refer to the Active Workspace Customization Guide for information about customizing the
delegated UIs.
• Using the root services URL, you can discover other URLs that Linked Data Framework uses.
The following table lists URLs for the Change Management service, which is available by default:
You can define what relations to apply when you create a remote link between Teamcenter and the
external application. For example, you can define that when you create a remote link between a
change request in Teamcenter and an issue in the external application, the relation can be either
Lis0Reference or Lis0Specification. You can apply these relation definitions for each service
provider.
When you upgrade to Teamcenter version 11.5 or a later version, some relation types will not be
available.
Relations available in previous Teamcenter versions for CoreBO semantic types:
<SemanticKey>
<TcSemanticType>CoreBO</TcSemanticType>
<RemoteSemanticType>ChangeRequest</RemoteSemanticType>
<SemanticRelationType>Lcm0AffectedByDefect</SemanticRelationType>
<SemanticRelationType>Lcm0RelatedChangeRequest</SemanticRelationType>
<SemanticRelationType>Lcm0AffectsPlanItem</SemanticRelationType>
<SemanticRelationType>Lcm0ImplementedBy</SemanticRelationType>
</SemanticKey>
<SemanticKey>
<TcSemanticType>CoreBO</TcSemanticType>
<RemoteSemanticType>Requirement</RemoteSemanticType>
<SemanticRelationType>Lcm0TracksRequirement</SemanticRelationType>
<SemanticRelationType>Lcm0AffectsRequirement</SemanticRelationType>
<SemanticRelationType>Lcm0ImplementsRequirement</SemanticRelationType>
</SemanticKey>
<SemanticKey>
<TcSemanticType>ChangeRequest</TcSemanticType>
<RemoteSemanticType>CoreBO</RemoteSemanticType>
<SemanticRelationType>Lcm0TracksRequirement</SemanticRelationType>
<SemanticRelationType>Lcm0AffectsRequirement</SemanticRelationType>
<SemanticRelationType>Lcm0ImplementsRequirement</SemanticRelationType>
</SemanticKey>
<SemanticKey>
<TcSemanticType>CoreBO</TcSemanticType>
<RemoteSemanticType>CoreBO</RemoteSemanticType>
<SemanticRelationType>Lis0Reference</SemanticRelationType>
<SemanticRelationType>Lis0Specification</SemanticRelationType>
</SemanticKey>
Relations that are available in Teamcenter version 11.5 and later versions:
<SemanticKey>
<TcSemanticType>CoreBO</TcSemanticType>
<RemoteSemanticType>ChangeRequest</RemoteSemanticType>
<SemanticRelationType>Lis0Reference</SemanticRelationType>
<SemanticRelationType>Lis0Specification</SemanticRelationType>
</SemanticKey>
<SemanticKey>
<TcSemanticType>CoreBO</TcSemanticType>
<RemoteSemanticType>Requirement</RemoteSemanticType>
<SemanticRelationType>Lis0Reference</SemanticRelationType>
<SemanticRelationType>Lis0Specification</SemanticRelationType>
</SemanticKey>
<SemanticKey>
<TcSemanticType>CoreBO</TcSemanticType>
<RemoteSemanticType>RequirementCollection</RemoteSemanticType>
<SemanticRelationType>Lis0Reference</SemanticRelationType>
<SemanticRelationType>Lis0Specification</SemanticRelationType>
</SemanticKey>
<SemanticKey>
<TcSemanticType>CoreBO</TcSemanticType>
<RemoteSemanticType>Hardware</RemoteSemanticType>
<SemanticRelationType>Lis0Reference</SemanticRelationType>
<SemanticRelationType>Lis0Specification</SemanticRelationType>
</SemanticKey>
<SemanticKey>
<TcSemanticType>CoreBO</TcSemanticType>
<RemoteSemanticType>SoftwareRelease</RemoteSemanticType>
<SemanticRelationType>Lis0Reference</SemanticRelationType>
<SemanticRelationType>Lis0Specification</SemanticRelationType>
</SemanticKey>
<SemanticKey>
<TcSemanticType>CoreBO</TcSemanticType>
<RemoteSemanticType>SoftwareArchitecture</RemoteSemanticType>
<SemanticRelationType>Lis0Reference</SemanticRelationType>
<SemanticRelationType>Lis0Specification</SemanticRelationType>
</SemanticKey>
<SemanticKey>
<TcSemanticType>ChangeRequest</TcSemanticType>
<RemoteSemanticType>CoreBO</RemoteSemanticType>
<SemanticRelationType>Lis0Reference</SemanticRelationType>
<SemanticRelationType>Lis0Specification</SemanticRelationType>
</SemanticKey>
<SemanticKey>
<TcSemanticType>CoreBO</TcSemanticType>
<RemoteSemanticType>CoreBO</RemoteSemanticType>
<SemanticRelationType>Lis0Reference</SemanticRelationType>
<SemanticRelationType>Lis0Specification</SemanticRelationType>
</SemanticKey>
Headquarters
Europe
Granite Park One
Stephenson House
5800 Granite Parkway
Sir William Siemens Square
Suite 600
Frimley, Camberley
Plano, TX 75024
Surrey, GU16 8QD
USA
+44 (0) 1276 413200
+1 972 987 3000
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