Не совсем уверен, что вы ищете. Возможно, вам придется указать, не является ли ни одно из этих решений, которые я собираюсь предложить, именно тем, что вы ищете.
Если вы пытаетесь создать фильтр, который отображает только объекты с этими ключевыми словами в текущем представления, вы можете создать расширенный фильтр, сначала перейдя к фильтру (Инструменты> Фильтр> Определить), а затем нажав кнопку Дополнительно в левом нижнем углу появившегося меню фильтра.
На этом этапе вы можете создать собственный правила для фильтра. Я бы просто создал отдельное правило для каждого слова со следующим определением:
Attribute: Object Text
Condition: contains
Value: <insert word here>
Match Case: uncheck
Regular Expression: uncheck
Затем нажмите кнопку «Добавить», чтобы добавить правило в список доступных правил в дополнительных параметрах.
На этом этапе вы можете выбрать несколько правил в списке доступных правил, и вы можете И / ИЛИ эти правила вместе, чтобы создать настраиваемый фильтр для нужного вам представления.
Так что, если вы пытаетесь создать собственное представление только с объектами, содержащими определенные c слова.
Если вы говорите о написании кода DXL, чтобы автоматически выдавать требования, содержащие определенное слово. Вы можете использовать что-то вроде этого:
Object o
String s
int offset, len
for o in entire (current Module) do
{
if (isDeleted(o)) continue
s = o."Object Text"""
if findPlainText(s, "<insert word here>", offset, len, false)
{
print identifier(o) // or replace this line with however you want to display object
}
}
Надеюсь, это будет полезно. Ура!
Редактировать:
Чтобы выполнять действия в списке, разделенном запятыми, по одному, вы можете использовать while l oop с какой-то функцией поиска, которая отсекает слова one за один раз.
void processWord (string someWord, Module mTarget, Object oSource)
{
Object oTarget
string objID = identifier(oSource)
for oTarget in mTarget do
{
if (<someWord in oTarget Object Text>) // edit function as necessary to do this
{
if (oTarget."Exists""" == "")
oTarget."Exists" = objID
else
oTarget."Exists" = oTarget."Exists" "," objID
}
}
}
int offset, len
string searchCriteria
Module mSource = read("<path of source module>", true)
Module mTarget = edit("<path of target module>", true)
Object oSource
for oSource in mSource do // can use "for object in entire(m)" for all objects
{
if (oSource != rqmt) continue // create conditions specific to your module here
searchCriteria = oSource."Search Criteria"""
while (findPlainText(searchCriteria, ",", offset, len, false))
{
processWord(searchCriteria[0:offset-1], mTarget, oSource)
searchCriteria = searchCriteria[offset+1:]
}
}
processWord(searchCriteria, mTarget, oSource) // for last value in comma separated list