在FTPC的Process Designer中可以創建Filter對象,Filter對象用於檢索滿足篩選條件的對象子集(特定類型的對象)。Filter條件的作用類似於SQL查詢中的WHERE子句。
Filter對象和使用API創建的Filter不同,在Process Designer創建的Filter對象會持久化到數據庫的DS_OBJECT,DS_OBJECT_BLOB表中,這樣使Filter可以重複使用。
Filter包括以下操作類型,具體可以使用操作類型選項會根據選擇列值類型而不同。
-
CONTAINING: 查詢包含指定值的內容。
-
ENDSWITH: 查詢以指定值結尾的內容。
-
EQUAL_TO: 查詢內容對象列中的值與指定值完全匹配的對象。
-
GREATER_THAN: 查詢大於指定值的數值內容。
-
GREATER_THAN_EQUAL_TO: 查詢大於或等於指定值的數值內容。
-
IN: 查詢包含用戶定義集中指定內容的條目。如果您選擇IN,那麼在value字段中,必須指定要搜索的內容。如果要搜索多個項,則必須在每個項之後按Enter鍵。
-
LESS_THAN: 查詢小於指定值的數值內容。
-
LESS_THAN_EQUAL_TO: 查詢小於或等於指定值的數值內容。
-
LIKE: 查詢與value字段中輸入的字符串類似的字符串。使用通配符展開搜索。
-
NOT_EQUAL_TO: 查詢不匹配指定值的內容。
-
STARTSWITH: 查詢以指定值開頭的內容。
SubFilter
創建了Filter之後,可能需要通過增加SubFilter來修改它,SubFilter是附加在Filter上的約束,允許用戶對Fiter進行調整,使其只返回非常特定的結果。可以將多個SubFilter添加到單個Filter中。
在SQL中SubFilter實際是通過IN操作類型實現。
例如:
在Process Designer中創建以下Filter
其中CarrieFilter 的SubFilter配置如下:
執行該UnitFilter,實際生成的SQL語句如下,Filter,SubFilter構建的即爲WHERE語句後面的部分。
SELECT UNIT.unit_key,
UNIT.serial_number,
UNIT.site_num,
UNIT.container_key,
UNIT.container_name,
UNIT.container_type,
UNIT.container_sub_type,
······此處省略部分Unit相關字段
TRACKED_OBJECT_STATUS.wc_key,
TRACKED_OBJECT_STATUS.wc_name,
TRACKED_OBJECT_STATUS.equip_key,
TRACKED_OBJECT_STATUS.equip_name,
LOT.lot_name,
WORK_ORDER.order_number,
WORK_ORDER_ITEMS.order_item
FROM UNIT,
TRACKED_OBJECT_STATUS,
LOT,
WORK_ORDER,
WORK_ORDER_ITEMS
WHERE ( ( ( ( UNIT.serial_number LIKE N'PL%' )
AND ( UNIT.container_name IN
(SELECT CARRIER.carrier_key
FROM CARRIER
WHERE ( ( ( CARRIER.carrier=N'TestPack20' ) ) )
) ) ) ) )
AND UNIT.tobj_status_key=TRACKED_OBJECT_STATUS.tobj_status_key
AND UNIT.lot_key =LOT.lot_key(+)
AND UNIT.order_key =WORK_ORDER.order_key(+)
AND UNIT.order_item_key =WORK_ORDER_ITEMS.order_item_key(+)
ORDER BY UNIT.serial_number ASC