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

Community Tip - Your Friends List is a way to easily have access to the community members that you interact with the most! X

Windchill APIs for adding user selection files in publisher from java code doesn't work!

DejanS
5-Regular Member

Windchill APIs for adding user selection files in publisher from java code doesn't work!

Hello all, I'm having a problem to select file for publishing in java code. I want to publish EpmDocument with selected one file from publish rule from java code as do it using Windchill New Representation Wizard! A new job and a new representation is created, but without any file, and it seems that adding user selections doesn't work! Does anyone have any idea how to do it?

Here is my source code:

 

String objRef = ObjectReference.newObjectReference(element).toString();

Publisher pub = new Publisher();
List<PublishParams> params = pub.getPublishParams(objRef);
for (PublishParams aParam : params) {
     ArrayList<AdditionalFile> selectedFiles = new ArrayList<>();

     if (aParam.getAdditionalFiles() != null) {
          for (AdditionalFile aFile : aParam.getAdditionalFiles()) {
               if ("xv3".equals(aFile.getOutputPrefix())) selectedFiles.add(aFile);
          }
     }

     if (!selectedFiles.isEmpty()) aParam.addUserSelections(selectedFiles);
}

pub.doPublish(false, true, objRef, (NavigationCriteria)null, (NavigationCriteria)null, false, "Custom Rep", "Custom Rep Description", Publisher.EPM, null, 1);

 

Here is a part of my publish rule xml file:

 

<additional-files name="publish_3dmodel_default">
     <file display-label="STEP" type="step" default="false" visible="true" locked="false" output-prefix="step"/>
     <file display-label="XVL" type="xvl" default="false" visible="true" locked="false" output-prefix="xv3"/>
     <file display-label="PARASOLID" type="PARASOLID" default="false" output-prefix="nondef_PARASOLID_SolidWorks">
          <option name="TargetSystem" value="SolidWorks"/>
          <option name="ExportContainers" value="Yes"/>
          <option name="ExportEmptyParts" value="Yes"/>
     </file>
</additional-files>
<if condition="is_cadpart">
     <publish on="create-representation" additional-files="publish_3dmodel_default"/>
     <publish on="schedule" additional-files="publish_3dmodel_default"/>
     <publish on="unknown-source" additional-files="publish_3dmodel_default"/>
     <publish on="manual-post" param-set="Additional Files Post Publish for Released Document 3D"/>
</if>

Dejan Stjepanovic
1 ACCEPTED SOLUTION

Accepted Solutions
DejanS
5-Regular Member
(To:DejanS)

In the meantime, I found the solution using method doRulesPublish:

pub.doRulesPublish(false, true, objRef, (NavigationCriteria) null, (NavigationCriteria) null, false,  "Custom Rep", "Custom Rep Description", Publisher.EPM, null, 1, publishParam.toString());
 
Here is my source code that creates a new representation with a single selected file by file format from publish rules:
 
public boolean doPublish(String id, String fileFormat) throws Exception {
       
        String objRef;
       
        if (id.startsWith("VR")) {
            ReferenceFactory rf = new ReferenceFactory();
            objRef = ObjectReference.newObjectReference((WTObject)rf.getReference(id).getObject()).toString();
        } else {
            objRef = ObjectReference.newObjectReference(ObjectIdentifier.newObjectIdentifier(id)).toString();
        }
       
        Publisher pub = new Publisher();
        PublishParams publishParam = null;
       
        List<PublishParams> params = pub.getPublishParams(objRef);
        for (PublishParams aParam : params) {
           
            ArrayList<AdditionalFile> selectedFiles = new ArrayList<>();
           
            if (aParam.getAdditionalFiles() != null) {
                for (AdditionalFile aFile : aParam.getAdditionalFiles()) {
                    if (fileFormat.equals(aFile.getOutputPrefix())) selectedFiles.add(aFile);
                }
            }
           
            if (!selectedFiles.isEmpty()) {
                aParam.addUserSelections(selectedFiles);
                publishParam = aParam;
            }
        }
       
        if (publishParam != null) {
            pub.doRulesPublish(false, true, objRef, (NavigationCriteria) null, (NavigationCriteria) null, false, 
                "Custom representation", "Published by custom action", Publisher.EPM, null, 1, publishParam.toString());
        }
        else {
            pub.doPublish(false, true, objRef, (NavigationCriteria) null, (NavigationCriteria) null, false,
                "Custom representation", "Published by custom action", Publisher.EPM, null, 1);
        }
       
       
        return true;
}
Dejan Stjepanovic

View solution in original post

1 REPLY 1
DejanS
5-Regular Member
(To:DejanS)

In the meantime, I found the solution using method doRulesPublish:

pub.doRulesPublish(false, true, objRef, (NavigationCriteria) null, (NavigationCriteria) null, false,  "Custom Rep", "Custom Rep Description", Publisher.EPM, null, 1, publishParam.toString());
 
Here is my source code that creates a new representation with a single selected file by file format from publish rules:
 
public boolean doPublish(String id, String fileFormat) throws Exception {
       
        String objRef;
       
        if (id.startsWith("VR")) {
            ReferenceFactory rf = new ReferenceFactory();
            objRef = ObjectReference.newObjectReference((WTObject)rf.getReference(id).getObject()).toString();
        } else {
            objRef = ObjectReference.newObjectReference(ObjectIdentifier.newObjectIdentifier(id)).toString();
        }
       
        Publisher pub = new Publisher();
        PublishParams publishParam = null;
       
        List<PublishParams> params = pub.getPublishParams(objRef);
        for (PublishParams aParam : params) {
           
            ArrayList<AdditionalFile> selectedFiles = new ArrayList<>();
           
            if (aParam.getAdditionalFiles() != null) {
                for (AdditionalFile aFile : aParam.getAdditionalFiles()) {
                    if (fileFormat.equals(aFile.getOutputPrefix())) selectedFiles.add(aFile);
                }
            }
           
            if (!selectedFiles.isEmpty()) {
                aParam.addUserSelections(selectedFiles);
                publishParam = aParam;
            }
        }
       
        if (publishParam != null) {
            pub.doRulesPublish(false, true, objRef, (NavigationCriteria) null, (NavigationCriteria) null, false, 
                "Custom representation", "Published by custom action", Publisher.EPM, null, 1, publishParam.toString());
        }
        else {
            pub.doPublish(false, true, objRef, (NavigationCriteria) null, (NavigationCriteria) null, false,
                "Custom representation", "Published by custom action", Publisher.EPM, null, 1);
        }
       
       
        return true;
}
Dejan Stjepanovic
Top Tags