Как написать запрос OSLC where в Maximo Anywhere для оценки somevalue <now ()
Я настраиваю выполнение работ. Запрос истории рабочих заданий, который вызывается при извлечении прошлых рабочих заданий для активов или местоположений, является открытым. Следовательно, несколько тысяч строк извлекаются каждый раз, и время ожидания приложения истекает. Я могу приложить пункт where (см. Ниже), чтобы ограничить его записями с actfinish после определенной даты. Тем не менее, я хочу сделать что-то вроде этого...
spi_wm:actfinish>now()-30
<!--WorkOrder History Asset Resource-->
<resource id="workOrderHistoryAssetLoc" class="application.business.WorkOrderObject" defaultOrderBy="wonum asc" describedBy="http://jazz.net/ns/ism/work/smarter_physical_infrastructure#WorkOrder" name="workOrderHistoryAssetLoc" pageSize="50" providedBy="/oslc/sp/WorkManagement">
<attributes id="workOrderHistoryAsset_attributes1">
<attribute describedByProperty="dcterms:identifier" id="workOrderHistoryAsset_identifier_dctermsidentifier1" index="true" name="identifier"/>
<attribute describedByProperty="oslc:shortTitle" id="workOrderHistoryAsset_wonum_oslcshortTitle1" index="true" name="wonum"/>
<attribute describedByProperty="dcterms:title" id="workOrderHistoryAsset_description_dctermstitle1" index="true" method="descriptionChanged" name="description"/>
<attribute describedByProperty="spi:status" id="workOrderHistoryAsset_status_spistatus" index="true" method="statusChanged" name="status"/>
<localAttribute dataType="string" id="workOrderHistoryAsset_statusdesc_string" name="statusdesc"/>
</attributes>
<queryBases id="workOrderHistoryAsset_queryBasesh">
<queryBase defaultForSearch="true" id="workOrderHistoryAsset_queryBase_searchAllWorkOrdersh" name="searchAllWorkOrdersAsset" queryUri="/oslc/os/oslcwodetail?savedQuery=getWithComplexQuery"/>
<!-- TODO AWH 20170130 - add where clause to this query -->
</queryBases>
<whereClause clause="spi:status in ['COMP','CLOSE'] and spi_wm:actfinish>'2016-10-10T09:50:00-04:00'" id="workOrderHistoryAssetLoc_whereClause"/>
</resource>
В другом месте я вижу, что в app.xml есть формулы, но я не знаю, какие типы операторов или язык доступны для выполнения чего-то подобного. Я надеялся, что у атрибута whereClause есть возможность использовать resolverClass и resolverFunction, чтобы я мог заменить именованный параметр значением, полученным из функции javascript... без кубиков. Любая помощь будет оценена!
1 ответ
Похоже, вы пытаетесь установить предложение where в app.xml. Хотя я думаю, что это могло бы сработать, вероятно, было бы в миллион раз легче сделать следующее.
- продублируйте ресурс, затем закомментируйте оригинал
- Создайте сохраненный запрос в Maximo с предложением where. spi: статус в ['COMP','CLOSE'] и spi_wm:actfinish>'2016-10-10T09:50:00-04:00'
- Назовите сохраненный запрос "ANYWHERE_WOHIST" или что-то в этом роде.
Измените дубликат ресурса, чтобы он указывал на ваш новый сохраненный запрос.
<queryBase defaultForSearch="true" id="workOrderHistoryAsset_queryBase_searchAllWorkOrdersh" name="searchAllWorkOrdersAsset" queryUri="/oslc/os/oslcwodetail?savedQuery=ANYWHERE_WOHIST"/>
Кроме того, это позволяет управлять запросом where в бэкэнде, поэтому, когда ваши пользователи решат, что они хотят видеть что-то еще здесь, вы можете управлять запросом в Maximo. Мы приближаемся к концу нашего проекта с Anywhere, поэтому не стесняйтесь обращаться, если вы хотите обменяться военными историями.