Community email notifications are disrupted. While we are working to resolve, please check on your favorite boards regularly to keep up with your conversations and new topics.
Hello,
I'm trying to run an IE task trough a java method. But Windchill ran the task as WCadmin .
The task run fine but it retrieves info that user shouldn't have access.
If I run the IE task in the browser with the user it run fine too.
here is the code:
public static String ieTaskRun(String Task1, String Name1, String Group1, String userNa) throws WTException, IOException, IEException {
String obid1 = "";
String obType = "";
try{
IeService ieService = new IeService();
Task objtask = new Task(Task1);
objtask.setService(ieService);
//>>>> Here is where I'm trying to set username who will run the task <<<
objtask.setUsername(userNa);
String groupOutName = Group1;
objtask.setParam("name", Name1);
objtask.setParam("GROUP_OUT", Group1);
System.out.println("**** ieTaskRun Check entering task **** " + userNa);
objtask.invoke();
Group prlnks = ieService.getGroup(groupOutName);
System.out.println("ieTaskRun element: " + prlnks.getElementCount());
if (prlnks.getElementCount() > 0){
for (int p = 0; p < prlnks.getElementCount(); p++)
{
obid1 = (String) prlnks.getAttributeValue(p, "number");
obType = (String) prlnks.getAttributeValue(p, "type");
if (obType.equalsIgnoreCase("CAD Document")){
obid1 = obid1 + ":" + (String) prlnks.getAttributeValue(p, "version");
}else{
obid1 = obid1 + ":" + (String) prlnks.getAttributeValue(p, "revision");
}
System.out.println("ieTaskRun obid Task: " + obid1 + " Object Type: " + obType);
if(obType.equalsIgnoreCase("CAD Document"))
{
return obid1;
}
}
}
} catch(Exception e) {
//e.printStackTrace(System.err);
return obid1;
}
return obid1;
}//end of method ieTaskRun
Solved! Go to Solution.
Thanks this has lead me to the solution.
I modified my info engine task by adding this:
Group s = getGroup ("@SERVER");
s.toXML(new java.io.PrintWriter(System.out),true);
s.setAttributeValue (0, "auth-user", userNa.getName());
s.toXML(new java.io.PrintWriter(System.out),true);
userNa is a variable that is set during the info engine call.
Since that it retrieve exactly what the user is supposed to see.
wt.org.WTPrincipal user = wt.session.SessionHelper.manager.getPrincipal();
You can use sessionhelper to get the current user
Thank you
Binesh Kumar
Thanks this has lead me to the solution.
I modified my info engine task by adding this:
Group s = getGroup ("@SERVER");
s.toXML(new java.io.PrintWriter(System.out),true);
s.setAttributeValue (0, "auth-user", userNa.getName());
s.toXML(new java.io.PrintWriter(System.out),true);
userNa is a variable that is set during the info engine call.
Since that it retrieve exactly what the user is supposed to see.