首页 > 代码库 > Windchill 图文档DWG使用队列生成表示法
Windchill 图文档DWG使用队列生成表示法
问题描述
解决方案
使用队列将生成表示法的任务发送到master机器执行。相关代码如下:
package ext.zwcad.servers.from2;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import wt.content.ApplicationData;import wt.content.ContentHelper;import wt.content.ContentItem;import wt.content.ContentRoleType;import wt.content.Streamed;import wt.epm.EPMDocument;import wt.fc.PersistenceHelper;import wt.fc.QueryResult;import wt.filter.NavigationCriteria;import wt.method.RemoteAccess;import wt.org.UserNotFoundException;import wt.org.WTPrincipal;import wt.pom.ObjectIsStaleException;import wt.pom.PersistenceException;import wt.pom.UniquenessException;import wt.queue.ProcessingQueue;import wt.queue.QueueHelper;import wt.services.ManagerException;import wt.services.StandardManager;import wt.session.SessionContext;import wt.session.SessionHelper;import wt.util.WTException;import com.ptc.wvs.common.util.WVSProperties;import com.ptc.wvs.server.publish.PublishJob;import com.ptc.wvs.server.publish.PublishQueueHelper;import com.ptc.wvs.server.util.PublishUtils;import ext.zwcad.servers.ZwServerUtil;public class zwViewStandardManager extends StandardManager implements RemoteAccess { private static final long serialVersionUID = 5249640497492866903L; private static WVSProperties wvsProp = new WVSProperties(); private static String RepresentationName = "Representation Name"; private static String RepresentationDescription = "Representation Description"; /** * 新建表示法 RepresentationHelper.service.emitReadyToPublishEvent(对象) * * @param WTObject * @param dwgFile * @throws WTException * @throws IOException */ public static void transformEPMDocView(String oid) throws WTException, IOException { // System.out.println("==============transformEPMDocView=============="); // System.out.println(epmDoc); // System.out.println(dwgPath); try { EPMDocument epmDoc = ZwServerUtil.findEPM(oid); File viewFile = getViewFile(epmDoc); if (null == viewFile) return; NavigationCriteria cri = null; PublishJob job = new PublishJob(true, PublishUtils .getRefFromObject(epmDoc), cri, null, true, RepresentationName, RepresentationDescription, 0); job.setNumberNameVersion(epmDoc); job.setProcessType(0); job.setRequestType(6); job.setRequestSource(1); job.setSyncInfo(null); String publishOptions = "<wvsoptions>tempfile=" + viewFile.getName() + ",thumbnail=true" + ",origfile=" + epmDoc.getCADName(); job.setActionFileString(publishOptions); job.setSubmitTime(System.currentTimeMillis()); job.setLogFile(new File(wvsProp.getPublishTempUploadDir() + File.separator + "_epm_publish.log")); PublishQueueHelper.addPublishEntry(job); } catch (Exception e) { e.printStackTrace(); } } /** * 生成可视化临时文件 * * @param dwgFile * @return * @throws IOException */ private static File getViewFile(EPMDocument doc) throws IOException { String fileName = doc.getCADName(); String extension = fileName.substring(fileName.lastIndexOf(".")); File viewFile = null; try { QueryResult qr = ContentHelper.service.getContentsByRole(doc, ContentRoleType.PRIMARY); InputStream is = null; byte[] bs = null; while (qr.hasMoreElements()) { ContentItem contentitem = (ContentItem) qr.nextElement(); ApplicationData applicationdata = (ApplicationData) contentitem; Streamed streamed = (Streamed) applicationdata.getStreamData() .getObject(); is = streamed.retrieveStream(); bs = new byte[(int) applicationdata.getFileSize()]; is.read(bs); } File file = new File(wvsProp.getPublishTempUploadDir()); if (!file.exists()) { file.mkdirs(); } viewFile = File.createTempFile("_" + System.currentTimeMillis(), extension, new File(wvsProp.getPublishTempUploadDir())); FileOutputStream fos = new FileOutputStream(viewFile); fos.write(bs); fos.flush(); fos.close(); } catch (WTException e) { e.printStackTrace(); } finally { } return viewFile; } private static final String CLASSNAME = zwViewStandardManager.class.getName(); private static final String DATA_DELIVERY_QUEUE_NAME = "zwsoftView"; private static int DATA_DELIVERY_QUEUE_INTERVAL=300; private ProcessingQueue dataDeliveryQueue; public static zwViewStandardManager newStandardDataDeliveryService() throws WTException { zwViewStandardManager service = new zwViewStandardManager(); service.initialize(); return service; } @Override protected void performStartupProcess() throws ManagerException {// System.out.println("============Delivery Service Starting..."); SessionContext context = SessionContext.newContext(); try { SessionHelper.manager.setAdministrator(); dataDeliveryQueue = QueueHelper.manager.getQueue(DATA_DELIVERY_QUEUE_NAME); if (dataDeliveryQueue == null){ createQueue(DATA_DELIVERY_QUEUE_NAME, DATA_DELIVERY_QUEUE_INTERVAL); } }catch (UserNotFoundException e) { System.err.println("Sync Service: failed to set Administrator (ok if installation)"); SessionContext.setContext(context); return; }catch (WTException e) { e.printStackTrace(); throw new ManagerException(this, "Could not initialize sync service."); }finally { SessionContext.setContext(context); } } public boolean sendToDeliveryQueue(EPMDocument epmDoc) throws WTException { WTPrincipal administrator=SessionHelper.manager.getAdministrator(); if (administrator == null) { System.out.println("sendToDeliveryQueue: failed to set Administrator (ok if installation)"); return false; } WTPrincipal currentUser = SessionContext.setEffectivePrincipal(administrator); if(dataDeliveryQueue==null){ performStartupProcess(); } if(!QueueHelper.manager.isActive(dataDeliveryQueue)){ QueueHelper.manager.startQueue(dataDeliveryQueue); } try { Class<?> aclass[] = { String.class }; Object aobj[] = { epmDoc.toString() }; dataDeliveryQueue.addEntry(administrator, "transformEPMDocView", CLASSNAME, aclass, aobj); } catch (Exception exception) { if (exception instanceof WTException) throw (WTException)exception; else throw new WTException(exception); } finally { SessionContext.setEffectivePrincipal(currentUser); } return true; } /** * 创建队列 * @param s * @param i * @return * @throws WTException */ private ProcessingQueue createQueue(String s, int i) throws WTException {// System.out.println("==========createQueue============="); ProcessingQueue processingqueue = null; try { processingqueue = QueueHelper.manager.createQueue(s); QueueHelper.manager.setInterval(processingqueue, i); processingqueue = (ProcessingQueue)PersistenceHelper.manager.save(processingqueue); } catch (ObjectIsStaleException objectisstaleexception) { processingqueue = QueueHelper.manager.getQueue(s); } catch (UniquenessException uniquenessexception) { processingqueue = QueueHelper.manager.getQueue(s); } catch (PersistenceException persistenceexception) { processingqueue = QueueHelper.manager.getQueue(s); } return processingqueue; }}
调用方法
zwViewStandardManager server = zwViewStandardManager.newStandardDataDeliveryService(); server.sendToDeliveryQueue(epm);
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。