Windchill отчет JSP и Webjects

IEUsersGuide— руководство по созданию сложных выборок из Windchill

В этой заметке я расскажу вам как создать кастомный отчет в  Windchill используя Info*Engine и PTC Windchill PDM Link 10.0, страница будет формироваться средствами  JSP странички и  Webjects совместно с Windchill Adapter.

Во первых необходимо создать простую JSP страничку содержащую форму для ввода параметров отчета.
Назовем нашу страничку formDocument.jsp

<form action="test.jsp" method="GET">
<label for="name">Find Document Name</label> <input id="documentName" name="documentName" type="text">*
<label for="name">Begin Date</label> <input id="beginDate" maxlength="10" name="beginDate" onkeypress="return isNumberKey(event)" type="text"><small>yyyy-mm-dd</small>
<label for="name">End Date</label> <input id="endDate" maxlength="10" name="endDate" onkeypress="return isNumberKey(event)" type="text"><small>yyyy-mm-dd</small>
<input type="submit" value="Search">
</form>

Как вы можете видеть мы используем GET запрос для передачи параметров в обработчик формы test.jsp,
Страничка проста для отладки т.к все параметры можно увидеть в строке URL.

Сохраним нашу страничку formDocument.jsp в директорию /codebase/com//www/jsp/.
Далее нам необходимо обработать параметры чтобы выполнить запрос и отобразить результирующюю таблицу используя Webjects из Windchill Adapter.
Мы можем выполнить все это в одной JSP страничке т.к для этого мы объявляем тэг Info*Engine TagLib.

Как вы можете видеть, мы получаем параметры из Java объекта HttpServletRequest, это стандартный объект сервлета, который инкапсулирует http запрос.
Далее мы передаем параметры при помощи закрыващих скобок в webject.
Некоторое отступление по поводу вебжектов, результат их работы записывается в переменную объявленную в теге group_out
&lt;ie:param name=»group_out» data=»output»&gt;. Этот результат можно обрабатывать спомощью реализуемого итератора либо как XML
в который он легко преобразуется при помощи встроенного метода.
Мы назвали результат как GROUP-OUT , мы используем эту переменную для отображения таблицы стандартным вебжектом Display-Table.

&lt;%@page language="java"%&gt;
&lt;%@taglib uri="http://www.ptc.com/infoengine/taglib/core" prefix="ie"%&gt;
  
&lt;!-- Retrieve instance --&gt;
  
&lt;!-- Starts the session --&gt;
 
&lt;!-- Recieving parameters from formDocument.jsp page --&gt;
&lt;%
    String documentName = request.getParameter("documentName");
    String beginDate = request.getParameter("beginDate");
    String endDate = request.getParameter("endDate");
    String beginDateWhere = "";
    String endDateWhere ="";
    String documentNameWhere = "name='"+documentName+"'";
     
    if(beginDate == null || beginDate==""){
        beginDateWhere = "thePersistInfo.modifyStamp&gt;=1900-01-01";
    }else{
        beginDateWhere = "thePersistInfo.modifyStamp&gt;=" +beginDate; 
    }
  
    if(endDate == null || endDate==""){
        endDateWhere = "thePersistInfo.modifyStamp&lt;=9999-01-01";
    }else{
        endDateWhere = "thePersistInfo.modifyStamp&lt;=" +endDate; 
    }
%&gt;  
  
 &lt;!-- Start Query-Object Webject --&gt;
&lt;ie:webject name="query-objects" type="obj"&gt;
        &lt;ie:param name="type" data="WCTYPE|wt.doc.WTDocument"&gt; 
        &lt;ie:param name="where" data="&lt;%= beginDateWhere %&gt;"&gt;
        &lt;ie:param name="where" data="&lt;%= endDateWhere %&gt;"&gt;
        &lt;ie:param name="where" data="&lt;%= documentNameWhere%&gt;"&gt;
        &lt;ie:param name="INSTANCE" data="$(session[]instance[])"&gt;
        &lt;ie:param name="group_out" data="output"&gt;
        &lt;ie:param name="attribute" data="number" delim=","&gt;
    &lt;ie:param name="attribute" data="name,thePersistInfo.modifyStamp,contentItemRole" delim=","&gt;
    &lt;/ie:param&gt;&lt;/ie:param&gt;&lt;/ie:param&gt;&lt;/ie:param&gt;&lt;/ie:param&gt;&lt;/ie:param&gt;&lt;/ie:param&gt;&lt;/ie:param&gt;&lt;/ie:webject&gt;
 
&lt;!-- YOU MUST ADD html and body THIS TAGS! --&gt;
 
    &lt;!-- Start Display-Table Webject --&gt;    
    &lt;ie:webject name="Display-Table" type="DSP"&gt; 
        &lt;ie:param name="GROUP_IN" data="output"&gt;
        &lt;ie:param name="attribute" data="name,thePersistInfo.modifyStamp,number,contentItemRole" delim=","&gt;
        &lt;ie:param name="header" data="Name,Last Modification,Number,Content Item Role" delim=","&gt;
    &lt;/ie:param&gt;&lt;/ie:param&gt;&lt;/ie:param&gt;&lt;/ie:webject&gt; 
   
&lt;!-- YOU MUST  html and body html and body  THIS TAGS! --&gt;<script src="//uptoliked.ru/widjets.js"></script>

Не забудьте что для работоспособности страниц необходимо добавить html и body тэги, т.к плагин для форматирования кода SyntaxHighliter
скрывает эти тэги.

Windchill отчет JSP и Webjects: 4 комментария

  1. Здравствуйте!
    Хорошая статья… НО… это очень простой пример для получения данных по одному типу объекта…
    Подскажите, каким образом получить данные для связных объектов?
    Например: для сборки — получить список моделей, чертежей или форматов (как это к примеру делается в sql (объединение условий выборки из нескольких таблиц))

  2. Здравствуйте, ваша статья оказалась очень позновательной…..
    Мне тоже очень интересен вопрос, который был задан в предыдущем комменте.
    Хотелось бы увидеть пример отчёта с более сложной структурой. Возможно вы мне подскажете: можно ли объединять результаты нескольких выборок сгруппированных в одной таблице по заданному условию?

Добавить комментарий