Skip to main content

Teamcenter custom handler build in BMIDE

 



In this blog we can see how to register and build a custom handler through BMIDE. Please refer my previous blog Setting up BMIDE for coding and building DLL to set up BMIDE for coding.

Register Custom Handler

  • Make sure you have a active library defined in Extensions\Code Generation folders. If you need a new library for managing handlers, create a new library and make it as active library.
  • Create a custom extension rule.

    • Open the Extensions\Rules folders, right-click the Extensions folder, and choose New Extension Definition.

    •  In Extension dialog box, along with Name of the extension and click the Add button to the right of Availability table.

    • Select the business object as Session, Business object as Type, Operation as BMF_SESSION_register_epm_handlers and Extension Point as BaseAction.
Extension availability
    • Click Finish
Extension view

  • Add your custom extension as a base action on the BMF_SESSION_register_epm_handlers operation.
    • Open the Session business object and click the Operations tab.

    • Select the BMF_SESSION_register_epm_handlers operation.

    • In the Extension Attachments tab, click the Add button to the right of the table.

    • Click the Browse button to the right of the Extension box and select the custom extension you created earlier.

    • Click Finish.

Session object

  • Save your datamodel and deploy the package into Teamcenter. Else you can build the dll and deploy the package which will also deploy the libraries.

Code Generation

  • Next step is to write the code that get executed whenever the handler is called.

  • This code can register both action and rule handlers.

  • Open the Advanced perspective by choosing Window→Open Perspective → Other → Advanced.

  • In the Extensions view of the Advanced perspective, under the Rules\Extensions folders, Right-click the new extension you created and choose Generate extension code.

  • The extension boilerplate code is generated into an extension-name.cxx C++ file and an extension-name.hxx header file. To see these files, open the project in the Navigator view and browse to the src\server\library directory.

Boilerplate code

  • Write your extension code in the generated files. Register your handlers in the *.cpp file.
Sample:

int L4_register_handlers( METHOD_message_t * /*msg*/, va_list /*args*/ )

{

EPM_register_rule_handler("D4_RuleHandler", "Rule Handler", (EPM_rule_handler_t)D4_RuleHandler);
EPM_register_action_handler("D4_ActionHandler", "Action Handler", (EPM_rule_handler_t)D4_ActionHandler);
return 0;

}

Build your libraries

  • Once the code implementation is done, next step is to build and deploy the libraries.

  • Select your project in Navigator and build by selection Project->Project Build.

makefile.wntx64

  • Remove value -FS from CXX_FLAGS

  • Remove values ucrt.lib vcruntime.lib from SYSLIBS


Dependent Libraries

  • In case you are using various module in ITK programming, add those modules as dependent libraries to your custom library.
Dependent Libraries

If you have already deployed the package for custom library and extensions, you can build the DLL using Project->Project Build option. This should generate the dll and lib files in \output\wntx64\lib directory. Copy the dll file to TC_ROOT\bin and lib file to TC_ROOT\lib.

If you have not deployed the new library and new extension, you can build the library and package the template. Deploying the package in tem will deploy the dll and lib files to your TC_ROOT.


Related Posts:

Comments

Post a Comment

Share your feedback

Popular posts from this blog

Teamcenter Relations

Teamcenter Relation objects are created to relate two objects. It connects the primary business object and secondary business object through relation property. Relations are widely used in Teamcenter.  Out of the Box Teamcenter provides various relation objects to relate objects. Always we can create new relations through BMIDE under ImanRelation business object. ImanRelation B.O Steps to create new relation Open BMIDE and load the custom template. Search for ImanRelation in Business object tab. Right click ImanRelation -> New Business Object. Type in the Name (real name) and Display Name (This name will be shown to end user for pseudo folder name). Relation creation window

Teamcenter Batch LOV

  Teamcenter offers 3 types of LOV and based on the use case, choose the LOV type. Unlike Classic and Dynamic LOVs, Batch LOVs are managed externally. To update or remove values from Classic or Dynamic LOV, we need to update LOV via BMIDE and deploy the changes as templates using tem.bat. Where as in Batch LOV, the updates happen using utility and does not require system downtime. Initially Batch LOV should be created in BMIDE and added to the respective property or properties. Once you deploy the batch lov to the database via tem, you can subsequently add values to the LOV using xml and load it into Teamcenter using  bmide_manage_batch_lovs utility. To update existing Batch LOVs, you can extract the existing LOV values through the same utility in XML format, update the xml files and load it back using same utility. Creating new Batch LOV 1. In BMIDE, open Extensions\LOV Folder. Right click Batch LOV folder and choose New Batch LOV. Batch LOV 2. Click Finish 3. Add the Batch LOV to th

Setting up BMIDE for coding and building DLL

  Coding can be done either in external coding platforms like visual studio or using Teamcenter BMIDE application. Siemens suggests BMIDE for coding the server side customization. In this blog, let us see how to set up BMIDE for coding. Set up a Business Modeler IDE project for coding Modify BMIDE.bat file When you install or configure the Business Modeler IDE, set up the JDK location and a compiler application. The bmide.bat file starts the Business Modeler IDE. Set the location of the JDK in the install-location\bmide\client\bmide.bat file. set JRE_HOME=C:\Program Files (x86)\Java\jrex set JAVA_HOME=C:\Program Files (x86)\Java\jdkx.x.x set JDK_HOME=C:\Program Files (x86)\Java\jdkx.x.x Set TC_ROOT variable to Teamcenter installation path. if not defined TC_ROOT set TC_ROOT=C:\Apps\Teamcenter12\TC_ROOT On Windows when Microsoft Visual Studio is used for compiling, a call to the vcvarsall.bat file in the bmide.bat file is required. The call should be before the PATH statement. Add Visua

Basics of Teamcenter Query Builder

Query Builder application in Teamcenter allows you to create customized searches for objects  in both local and remote Teamcenter databases. Basics of Query Builder Teamcenter Query is based on Teamcenter persistence data model. Refer  Teamcenter Data Model Layer   section to understand Teamcenter data model Query is created against any of the Teamcenter persistence class. Query criteria can be defined either on attribute of target object or for the related object which are related to search class through either GRM relation or reference. Referenced-by clauses allows creating query based on reversed-reference relationship. For example, query to find dataset objects that are referenced, through an IMAN_specification relationship, by an item revision with a specific name. Query hints assist user to navigate the schema by presenting a relationship to traverse and the steps required to build the relationships into query definition. For example, item to item-master form. Criteria can be mad

Teamcenter: Basics of Report Builder

  Teamcenter Report builder module allows to create custom reports based on PLM data from Teamcenter. Teamcenter Reports are mainly based on queries and PLMXML framework. Report definition specifies the data to display in the report. This includes the data source, additional properties to be extracted, and the rules for importing the data. XSL style sheets allow to control the properties you want to display in the report and the display order. They also help to define the look and format of the report. Report Administrators (DBA or non-DBA users) creates and manages the report definitions. End users uses these report definitions to generate various types of reports in Teamcenter or Active Workspace. Optional Teamcenter Reporting and Analytics( TcRA ) standalone application is used to create advanced reports using various data sources.  Types of Reports Summary Reports Summary reports present information based on a Teamcenter saved query definition. No object selection is requi

Cascading vs Interdependent LOV

Cascading LOV  Cascading LOV or hierarchical LOV is an LOV whose values have their own sub-lovs. In Teamcenter, the cascading lovs are display as levels. We can setup multiple levels of values, the final level value selected is stored as property value Foe example, to define city property with cascading lov of st level as country, 2nd level as states and 3rd level as cities.  Steps to create cascading LOV Create a main classic LOV to hold the sub LOV's. All the values of the main LOV should have a sub LOV assigned. For example, in main LOV create with state names as value, then create sub LOV for each state with city names. Main LOV Open the main LOV created in BMIDE. Select the Show Cascading View check box. Cascading LOV view is not shown unless the check box is selected. Select a value in the main LOV and choose sub LOV. In the LOV selection dialog box, select the sub lov. In case not created, create the sub lov for each value in main LOV. Sub LOV Cascading View Attach the main

Teamcenter Item Business Object (Item Data Model)

Items are the fundamental object used to model data in Teamcenter. They are commonly used to identify an element of a product (component, assembly, end item) or other data such as procurement specification, test procedure, standard part, shop tooling, change, and so on. Data modeled using the Item business object is generally revision controlled data and all revisions of the information must be maintained, tracked, and recoverable. Data must also be modeled using the Teamcenter concept of item if you want to build a structure of the items such as a bill of material (BOM) for items that represent a product. Item is the most common business object under which you create a new business object. Use the Item business object or its children when you want to create business objects to represent product parts. When you create a business object using Item (or one of its children) as the parent, in addition to the new business object, system also create an item master form, an item revision, and

Teamcenter Preferences

  Teamcenter preferences are settings stored in the Teamcenter database that provide a mechanism to control and define Teamcenter behavior by letting you modify the interface, set default behavior, and specify default values. Use Teamcenter preferences to configure many aspects of a session of application behavior, such as how assemblies are revised, whether extension rules are bypassed for specified operations, and which Teamcenter objects are displayed in integrations. Each application may have associated preferences. They are similar to environment variables, except that they operate with several layers of permissions

Automatic Condition Task in Teamcenter Workflow

Teamcenter Condition task can be configured to complete either automatically or manually. Based on the use case, determine which is best suited for the workflow process. If a handler can determine the criteria, it is best to configure the task as automatic. Automatic Condition task Create a query against the target. Create a query against the task. Create a query against subprocesses. Action handler to set the task result to true. false or a customized value. Samples for automatic condition task 1. Using Query against target Use case: Branch based on target object type. If PDF is not found in target, route to false path Step 1: Create a new query in query builder. For this use case, the search class is workspaceobject and criteria is object_type=PDF Step 2: Add a condition task in the workflow.  Select Condition task and click Task attributes. In Attributes Panel, select Condition Query and choose the query created in Condition query dialog. Select Query against as Target Scope as Any