cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

We are happy to announce the new Windchill Customization board! Learn more.

how to get documents template from library using api in windchill

Ramakaliappan
6-Contributor

how to get documents template from library using api in windchill

how to get documents template from library using api code through a workflow , i have a code which convert template to document automatically but only one input , i need to give the ibrary container as input to convert all templates into document

1 ACCEPTED SOLUTION

Accepted Solutions

package ext.test;
import java.util.ArrayList;
import wt.content.ContentHelper;
import wt.content.ContentHolder;
import wt.doc.WTDocument;
import wt.enterprise.TemplatesUtility;
import wt.fc.PersistenceHelper;
import wt.fc.ReferenceFactory;
import wt.folder.FolderHelper;
import wt.folder.FolderingInfo;
import wt.inf.container.WTContainer;
import wt.inf.container.WTContainerRef;
import wt.util.WTException;
import wt.vc.VersionControlHelper;
public class WTDocumentHelper {
public static WTDocument getDocumentTemplate(String
paramDocTemplateContainerRef)

paramDocTemplateName,

WTContainerRef

{
WTDocument docTemplate = null;
ReferenceFactory refFact = new wt.fc.ReferenceFactory();
try {
ArrayList asd = wt.doc.WTDocumentHelper.service.getTemplates(paramDocTemplateContainerRef);
for(int i = 0; i < asd.size(); i++){
String[] tpl = (String[]) asd.get(i);

if (tpl[1].equals(paramDocTemplateName)){
docTemplate = (WTDocument) refFact.getReference(tpl[4]).getObject();
break;
}
}
docTemplate=(WTDocument) VersionControlHelper.service.getLatestIteration(docTemplate, true);
if (docTemplate==null)
throw new WTException("Not found WTDocument Template :" + paramDocTemplateName);
} catch (WTException e) {
e.printStackTrace();
}
return docTemplate;
}
public static WTDocument createDocumentFromTemplate(String paramDocName,String
paramDocTemplateName, WTContainer paramDocContainer) throws WTException {
WTDocument doc = null;
WTContainerRef contRef = WTContainerRef.newWTContainerRef(paramDocContainer);
try {
WTDocument docTemplate = getDocumentTemplate(paramDocTemplateName,contRef);
doc = WTDocument.newWTDocument();
doc.setName(paramDocName);
doc.setTypeDefinitionReference(docTemplate.getTypeDefinitionReference());
doc.setContainerReference(contRef);
doc.setDomainRef(paramDocContainer.getDefaultDomainReference());
doc.setFormat(docTemplate.getFormat());
PersistenceHelper.manager.save(doc);

//Copy primary content file from Template
ContentHelper.service.copyContent((ContentHolder)docTemplate,
(ContentHolder) doc);
//Rename primary content file
doc = (WTDocument)TemplatesUtility.setFilename((WTDocument)doc);
} catch (Exception e) {
e.printStackTrace();
}
return doc;
}
}

*while coping and pasting ,check for the alignment.

create a new work flow after that

 

Refer Sample expression code for reference.
System.out.println("*******START************");
wt.part.WTPart part = (wt.part.WTPart)primaryBusinessObject;
com.ptc.core.lwc.server.PersistableAdapter obj = new com.ptc.core.lwc.server.PersistableAdapter(part, null, null, null);
obj.load("Choose_library");
String attrValue = (String) obj.get("Choose_library");
System.out.println("The selected library is "+attrValue);
String a = attrValue;
System.out.println("The selected library is "+a);
if(a.equals("Library4")) { ref =
wt.inf.container.WTContainerHelper.service.getByPath("wt.inf.container.OrgContainer=WeaponX/wt.inf.library.WTLibrary=Lib
rary4"); }
else if(a.equals("Library3")) { ref =
wt.inf.container.WTContainerHelper.service.getByPath("wt.inf.container.OrgContainer=WeaponX/wt.inf.library.WTLibrary=Lib
rary3"); }
else if(a.equals("Library2")) { ref =
wt.inf.container.WTContainerHelper.service.getByPath("wt.inf.container.OrgContainer=WeaponX/wt.inf.library.WTLibrary=Lib
rary2"); }
else if(a.equals("Library1")) { ref =
wt.inf.container.WTContainerHelper.service.getByPath("wt.inf.container.OrgContainer=WeaponX/wt.inf.library.WTLibrary=Lib
rary1"); }
else { System.out.println("PLEASE CONTACT ADMIN"); }
java.util.ArrayList asd = wt.doc.WTDocumentHelper.service.getTemplates(ref);
for(int i = 0; i < asd.size(); i++)
{
String[] template = (String[])asd.get(i);
System.out.println("The Selected template is " +template[1]);
wt.part.WTPartMaster master = (wt.part.WTPartMaster) part.getMaster();
System.out.println("***** Name ->"+ master.getName());
wt.part.WTPart latest = (wt.part.WTPart)wt.vc.VersionControlHelper.service.allVersionsOf(master).nextElement();
String versionLatest = wt.vc.VersionControlHelper.getVersionIdentifier(latest).getValue();
System.out.println("******** Identity -> "+ latest.getIdentity());
System.out.println("******** Latest Version -> "+ versionLatest);
System.out.println("******** Latest Iteration -> "+ latest.getIterationDisplayIdentifier());
System.out.println("******** State of latest version of latest iteration -> "+latest.getState());

if (versionLatest.equals("A") == true){
System.out.println("********Automatic Document Creation Workflow has Started************** ");
wt.inf.container.WTContainer container = ref.getContainer();
String paramDocTemplateName = template[1];
String paramDocName = paramDocTemplateName;
wt.doc.WTDocument docFromTemplate = null;
try{
docFromTemplate= ext.test.WTDocumentHelper.createDocumentFromTemplate(paramDocName, paramDocTemplateName,
container);
}catch (Exception e) {
e.printStackTrace();
}
System.out.println("************Automatic Document Creation Workflow has Ended********** ");
System.out.println("********DESCRIBE LINK ATTACHING**********");
wt.part.WTPartDescribeLink wl=wt.part.WTPartDescribeLink.newWTPartDescribeLink(part, docFromTemplate);
wt.fc.PersistenceServerHelper.manager.insert(wl);
System.out.println("**********DESCRIBE LINK ATTACHED******");
}
else
{
System.out.println("************THIS IS A REVISED VERSION**************");
}
}
System.out.println("***********END******************* ");

*while coping and pasting ,check for the alignment.

 

 

 

 

View solution in original post

3 REPLIES 3

Hi Ramakaliappan,

 

looks like method

wt.enterprise.EnterpriseHelper.service.getTemplates

does the trick.  It is however not part of the JavaDoc,and therefore perhaps a little bit unsupported ;).

 

BR,

Joachim

 

Dedicated to CAD & PLM for over 20 years

Thanks Joachim  , but i written a different code , it helped me.

package ext.test;
import java.util.ArrayList;
import wt.content.ContentHelper;
import wt.content.ContentHolder;
import wt.doc.WTDocument;
import wt.enterprise.TemplatesUtility;
import wt.fc.PersistenceHelper;
import wt.fc.ReferenceFactory;
import wt.folder.FolderHelper;
import wt.folder.FolderingInfo;
import wt.inf.container.WTContainer;
import wt.inf.container.WTContainerRef;
import wt.util.WTException;
import wt.vc.VersionControlHelper;
public class WTDocumentHelper {
public static WTDocument getDocumentTemplate(String
paramDocTemplateContainerRef)

paramDocTemplateName,

WTContainerRef

{
WTDocument docTemplate = null;
ReferenceFactory refFact = new wt.fc.ReferenceFactory();
try {
ArrayList asd = wt.doc.WTDocumentHelper.service.getTemplates(paramDocTemplateContainerRef);
for(int i = 0; i < asd.size(); i++){
String[] tpl = (String[]) asd.get(i);

if (tpl[1].equals(paramDocTemplateName)){
docTemplate = (WTDocument) refFact.getReference(tpl[4]).getObject();
break;
}
}
docTemplate=(WTDocument) VersionControlHelper.service.getLatestIteration(docTemplate, true);
if (docTemplate==null)
throw new WTException("Not found WTDocument Template :" + paramDocTemplateName);
} catch (WTException e) {
e.printStackTrace();
}
return docTemplate;
}
public static WTDocument createDocumentFromTemplate(String paramDocName,String
paramDocTemplateName, WTContainer paramDocContainer) throws WTException {
WTDocument doc = null;
WTContainerRef contRef = WTContainerRef.newWTContainerRef(paramDocContainer);
try {
WTDocument docTemplate = getDocumentTemplate(paramDocTemplateName,contRef);
doc = WTDocument.newWTDocument();
doc.setName(paramDocName);
doc.setTypeDefinitionReference(docTemplate.getTypeDefinitionReference());
doc.setContainerReference(contRef);
doc.setDomainRef(paramDocContainer.getDefaultDomainReference());
doc.setFormat(docTemplate.getFormat());
PersistenceHelper.manager.save(doc);

//Copy primary content file from Template
ContentHelper.service.copyContent((ContentHolder)docTemplate,
(ContentHolder) doc);
//Rename primary content file
doc = (WTDocument)TemplatesUtility.setFilename((WTDocument)doc);
} catch (Exception e) {
e.printStackTrace();
}
return doc;
}
}

*while coping and pasting ,check for the alignment.

create a new work flow after that

 

Refer Sample expression code for reference.
System.out.println("*******START************");
wt.part.WTPart part = (wt.part.WTPart)primaryBusinessObject;
com.ptc.core.lwc.server.PersistableAdapter obj = new com.ptc.core.lwc.server.PersistableAdapter(part, null, null, null);
obj.load("Choose_library");
String attrValue = (String) obj.get("Choose_library");
System.out.println("The selected library is "+attrValue);
String a = attrValue;
System.out.println("The selected library is "+a);
if(a.equals("Library4")) { ref =
wt.inf.container.WTContainerHelper.service.getByPath("wt.inf.container.OrgContainer=WeaponX/wt.inf.library.WTLibrary=Lib
rary4"); }
else if(a.equals("Library3")) { ref =
wt.inf.container.WTContainerHelper.service.getByPath("wt.inf.container.OrgContainer=WeaponX/wt.inf.library.WTLibrary=Lib
rary3"); }
else if(a.equals("Library2")) { ref =
wt.inf.container.WTContainerHelper.service.getByPath("wt.inf.container.OrgContainer=WeaponX/wt.inf.library.WTLibrary=Lib
rary2"); }
else if(a.equals("Library1")) { ref =
wt.inf.container.WTContainerHelper.service.getByPath("wt.inf.container.OrgContainer=WeaponX/wt.inf.library.WTLibrary=Lib
rary1"); }
else { System.out.println("PLEASE CONTACT ADMIN"); }
java.util.ArrayList asd = wt.doc.WTDocumentHelper.service.getTemplates(ref);
for(int i = 0; i < asd.size(); i++)
{
String[] template = (String[])asd.get(i);
System.out.println("The Selected template is " +template[1]);
wt.part.WTPartMaster master = (wt.part.WTPartMaster) part.getMaster();
System.out.println("***** Name ->"+ master.getName());
wt.part.WTPart latest = (wt.part.WTPart)wt.vc.VersionControlHelper.service.allVersionsOf(master).nextElement();
String versionLatest = wt.vc.VersionControlHelper.getVersionIdentifier(latest).getValue();
System.out.println("******** Identity -> "+ latest.getIdentity());
System.out.println("******** Latest Version -> "+ versionLatest);
System.out.println("******** Latest Iteration -> "+ latest.getIterationDisplayIdentifier());
System.out.println("******** State of latest version of latest iteration -> "+latest.getState());

if (versionLatest.equals("A") == true){
System.out.println("********Automatic Document Creation Workflow has Started************** ");
wt.inf.container.WTContainer container = ref.getContainer();
String paramDocTemplateName = template[1];
String paramDocName = paramDocTemplateName;
wt.doc.WTDocument docFromTemplate = null;
try{
docFromTemplate= ext.test.WTDocumentHelper.createDocumentFromTemplate(paramDocName, paramDocTemplateName,
container);
}catch (Exception e) {
e.printStackTrace();
}
System.out.println("************Automatic Document Creation Workflow has Ended********** ");
System.out.println("********DESCRIBE LINK ATTACHING**********");
wt.part.WTPartDescribeLink wl=wt.part.WTPartDescribeLink.newWTPartDescribeLink(part, docFromTemplate);
wt.fc.PersistenceServerHelper.manager.insert(wl);
System.out.println("**********DESCRIBE LINK ATTACHED******");
}
else
{
System.out.println("************THIS IS A REVISED VERSION**************");
}
}
System.out.println("***********END******************* ");

*while coping and pasting ,check for the alignment.

 

 

 

 

Top Tags