SOA Serive client: Assign Project to object

How about assigning project to object ?

What you need is
1) Object to which project to be assigned //Get the object by UIDs using  API loadObjects belong to class DataManagementService
2) Project -> TC_Project object

 How do you find the project using Project ID ?
 To find the project you need savedQuery which should be available  in Teamcenter Query Builder,If not available create it which will  query using Project ID
 Lets find TC project object by executing savedqueries (in our case __rr_get_projects)

 

Note: Must read code comment

public ModelObject findProject(Connection connection, String projectIds)
{
 ImanQuery query = null;
//SavedQueryService class is in package com.teamcenter.services.strong.query
 SavedQueryService queryService = SavedQueryService.getService(connection);
 try
 {

  GetSavedQueriesResponse savedQueries = queryService.getSavedQueries(); //Get all the savedQueries from Teamcenter
  if (savedQueries.queries.length == 0)
  {
   return null;
  }
  for (int i = 0; i < savedQueries.queries.length; i++)
  {
   if (savedQueries.queries[i].name.equals("__rr_get_projects")) //Find the query which we need
   {
    query = savedQueries.queries[i].query;//Query found
    break;
   }
  }
}
catch (ServiceException e)
{
  System.out.println(e.getMessage());
  return null;
}
if (query == null)
{
 System.out.println("__rr_get_projects 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[]{"Project ID" };//Query Condition attribute
  savedQueryInput[0].values = new String[1];
  savedQueryInput[0].values[0] = projectIds;//Value for Project ID Attribute
  savedQueryInput[0].maxNumToInflate = 25;

  //Execute query
  ExecuteSavedQueriesResponse savedQueryResult = queryService.executeSavedQueries(savedQueryInput);
  SavedQueryResults found = savedQueryResult.arrayOfResults[0];
  //  System.out.println("Found Users:");

  //Found output objects on query execution
  ModelObject[] modelObjs = found.objects;
  return modelObjs[0];//Project object we need
}
catch (Exception e)
{
  System.out.println(e.getMessage());
  return null;
}                     
}

Assign project  to object modl

public void assignProjectToItem(Connection localConnection,String projectId,ModelObject modl) throws Exception
 {
  ModelObject[] modelObjectsItems = new ModelObject[1];
  modelObjectsItems[0] = modl;
  TC_Project[] projects = new TC_Project[1];   //Create array of TC_Project 
  ModelObject project  = findProject(localConnection, projectId ) ;
  if( project != null )
  {
   //System.out.println("................................owning project found..................................");
    projects[0] = (TC_Project) project; //Add project found to the Project array

  }
 else
  {
   System.out.println("................ Project not found ................");
   throw new eQMIException("The configured EPI-Project is not found in Teamcenter.","Assigning the project - The configured EPI-Project is not found in Teamcenter.");
  } 
  //ProjectLevelSecurityService is from package com.teamcenter.services.strong.core
  ProjectLevelSecurityService projectLevelSecurityService = ProjectLevelSecurityService.getService(localConnection);
  AssignedOrRemovedObjects[] assignedOrRemovedObjects = new AssignedOrRemovedObjects[1];
  AssignedOrRemovedObjects assignedOrRemovedObject = new AssignedOrRemovedObjects();
  assignedOrRemovedObject.objectToAssign = modelObjectsItems;
  assignedOrRemovedObject.projects = projects;
  assignedOrRemovedObjects[0] = assignedOrRemovedObject;
  ServiceData serviceData =  projectLevelSecurityService.assignOrRemoveObjects(assignedOrRemovedObjects);
  
  for(int i=0 ; i < serviceData.sizeOfPartialErrors() ; i++)
 {
   ErrorStack errorStack = serviceData.getPartialError(i);
   String errorMsg = errorStack.getMessages()[0];
   int errorCode = errorStack.getCodes()[0];
   throw new eQMIException("Assigning the project: " +errorCode+" - ", "Assigning the project - "+errorMsg);
  }
  System.out.println( "****************************** Project modified successfuly ******************************");
 }

Explanation : Important API
ServiceData serviceData =  projectLevelSecurityService.assignOrRemoveObjects(assignedOrRemoved Objects);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值