SOA Service client: Change Object Ownership

本文介绍如何在Teamcenter中更改项目的拥有者和拥有组,通过使用API查找特定的用户和组,然后执行所有权变更操作。

How about changing project ownership ?
In data Migration you create the Teamcenter object using DBA user due to all access but it may required that created object should belong to other user and group then we need to change the ownership

To change the object ownership we need
1) Object whose ownership to be changed //Get the object by UIDs using  API loadObjects belong to class DataManagementService
2) User->User object
3) Group-> Group object

How do you find the User and Group ?
To find the User and Group you need savedQuery which should be available in Teamcenter Query Builder,If not available create it which will query User and Group for you.

Note: Must read code comment
//Find user using User ID ->String user represent User ID
 public ModelObject findUser(Connection connection, String user)

 {

  ImanQuery query = null

  //SavedQueryService class is in package com.teamcenter.services.strong.query
  SavedQueryService queryService = SavedQueryService.getService(connection);
  try
  {
   GetSavedQueriesResponse savedQueries = queryService.getSavedQueries();
   if (savedQueries.queries.length == 0)
   {
    return null;
   }
   for (int i = 0; i < savedQueries.queries.length; i++)
   {
    //__WEB_find_user -> Query in Query builder to find the user
    if (savedQueries.queries[i].name.equals("__WEB_find_user"))
    {
     query = savedQueries.queries[i].query;
     break;
    }

   }

  }
  catch (ServiceException e)
  {
   System.out.println(e.getMessage());
   return null;
  }
  if (query == null)
  {
   System.out.println("There is not an 'Item Name' query.");
   return null;
  }
  try
  {
   SavedQueryInput savedQueryInput[] = new SavedQueryInput[1];
   savedQueryInput[0] = new SavedQueryInput();
   savedQueryInput[0].query = query;
   savedQueryInput[0].maxNumToReturn = 25;
   savedQueryInput[0].limitListCount = 0;
   savedQueryInput[0].limitList = new ModelObject[0];
   savedQueryInput[0].entries = new String[]{"User ID" };//Attribute in Query to search by
   savedQueryInput[0].values = new String[1];
   savedQueryInput[0].values[0] = user;//Value for the search attribute
   savedQueryInput[0].maxNumToInflate = 25;

   //Execute Query to find the User
   ExecuteSavedQueriesResponse savedQueryResult = queryService.executeSavedQueries(savedQueryInput);
   SavedQueryResults found = savedQueryResult.arrayOfResults[0];

   // System.out.println("Found Users:");

   ModelObject[] modelObjs = found.objects;

   return modelObjs[0]; //User object

  }
  catch (Exception e)
  {
   System.out.println(e.getMessage());
   return null;
  }                     

 }
public ModelObject findGroup(Connection connection, String groupName)
 {

  ImanQuery query = null;

  SavedQueryService queryService = SavedQueryService.getService(connection);

  try
  {

   GetSavedQueriesResponse savedQueries = queryService.getSavedQueries();

   if (savedQueries.queries.length == 0)
   {
    return null;
   }

   for (int i = 0; i < savedQueries.queries.length; i++)
   {
   //__WEB_group -> Query in Query builder to find the group

    if (savedQueries.queries[i].name.equals("__WEB_group"))
    {
     query = savedQueries.queries[i].query;
     break;
    }

   }

  }
  catch (ServiceException e)
  {

   System.out.println(e.getMessage());
   return null;
  }

  if (query == null)
  {
   System.out.println("__WEB_group query not found");
   return null;
  }
  try
  {

   SavedQueryInput savedQueryInput[] = new SavedQueryInput[1];
   savedQueryInput[0] = new SavedQueryInput();
   savedQueryInput[0].query = query;
   savedQueryInput[0].maxNumToReturn = 25;
   savedQueryInput[0].limitListCount = 0;
   savedQueryInput[0].limitList = new ModelObject[0];
   savedQueryInput[0].entries = new String[]{"Name" };//Attribute in Query to search by
   savedQueryInput[0].values = new String[1];
   savedQueryInput[0].values[0] = groupName;//Value for the search attribute
   savedQueryInput[0].maxNumToInflate = 25;

   //Execute Query to find the Group

   ExecuteSavedQueriesResponse savedQueryResult = queryService.executeSavedQueries(savedQueryInput);

   SavedQueryResults found = savedQueryResult.arrayOfResults[0];

   // System.out.println("Found Users:");


   ModelObject[] modelObjs = found.objects;

   return modelObjs[0];//Group object

  }
  catch (Exception e)
  {

   System.out.println(e.getMessage());

   return null;

  }                     

 }
//Change the ownership of object modl

public void changeOwnershipModelObject(Connection localConnection,String userName,String groupName,ModelObject modl) throws Exception
 {

  ModelObject user  = findUser(localConnection, userName ) ;

  if( user != null )
  {
   System.out.println("................................owning user found..................................");

  } else {


   //The configured EPI-Owning-user is not found in Teamcenter.

   System.out.println("................  EPI-owning user not found ................");

   throw new Exception("Change ownership service: 003.","Change ownership service - The configured EPI-owning user is not found in Teamcenter.");

  }

  ModelObject userGroup  = findGroup(localConnection, groupName ) ;

  if( userGroup != null )
  {

   System.out.println("................................owning group found..................................");

  }else{

   System.out.println("................  EPI-owning group not found ................");

   throw new Exception("Change ownership service: 004.","Change ownership service - The configured EPI-owning group is not found in Teamcenter.");

  }

  DataManagementService ser1 = com.teamcenter.services.strong.core.DataManagementService.getService( localConnection );

  ObjectOwner[] ownerData = new ObjectOwner[1];

  ObjectOwner ownrObj = new com.teamcenter.services.strong.core._2006_03.DataManagement.ObjectOwner();

  ownrObj.object = modl;
  ownrObj.group = (Group) userGroup;
  ownrObj.owner = (User) user;
  ownerData[0] = ownrObj;

  ServiceData returnData = ser1.changeOwnership( ownerData );

  System.out.println( "****************************** Ownership changed successfully ******************************" );

  if(returnData.sizeOfPartialErrors() > 0){

   throw new Exception("Change ownership service: 005", "Change ownership service - "+returnData.getPartialError(0).getMessages()[0]);

  }

 }

Explanation : Important API
ServiceData returnData = ser1.changeOwnership( ownerData );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值