2017-03-31 12 views
0

사용자가 고급 필터를 쓸 수있는 스크립트를 발견했습니다. 이 스크립트는 각보기에서 현재 필터를로드 할 수 있지만 Filtering 대화 상자에있는 모든 필터는로드 할 수 없습니다. 나는 현재의 고급 필터를 모두 추출 할 수 있기를 원합니다. 문자 문자열로만 사용한다고해도 (Filter 클래스 객체로 다시 그 문자열을 구문 분석 할 수있는 도구가 있기 때문에). 누군가가 정보를 검색하는 DXL 함수를 알고 있거나 필터 문자열이 저장되어있는 곳이라면 정보를 이해할 수있을 것입니다. 참고 : Rational 포럼에서이 문제를 쫓아가는 행운은 없습니다.모든 고급 필터를 저장하는 DXL 스크립트

답변

0

내 해킹 방법은 다음과 같습니다. 기본적으로 몇 가지 설정 및 운영 라인이 있으며 중간에 필터 정의와 조합이 많이 있습니다. 이렇게하면 정의 된 필터가 현재 뷰의 일부로 저장됩니다. DXL 구문에 새로운 사람들을 위해

// copypaste next block into DXL edit window 
string viewName = "My_View" 
filtering off 
// individual items first 
Filter head = attribute "_ObjectType" == "Heading" 
Filter req = attribute "_ObjectType" == "requirement" 
Filter inrev = attribute "_ReqStatus" == "In Review" 
Filter ApprListBob = includes(attribute "_ApprovalList","BobJones") 
Filter ApprListMary = includes(attribute "_ApprovalList","MaryContrary") 
// now combine as desired. examples shown 
// Filter ftwo = ((head && !freq) || inrev) 

Filter foofilt = (head) || (req && inrev) //) && ApprListBob 
set foofilt 
filtering on 
// now write 
addFilter( foofilt) 
set(foofilt) 
refresh current  // module... 
save view viewName //last arg is viewname 
// end of copypaste block 

,

& & 및 || OR ! NOT

속성이 하나의 값만 취할 수있는 경우 attribute "atname" == "value" 양식을 사용하십시오. 여러 값 (예 : 체크리스트)을 사용할 수있는 경우 includes(attribute "atname", "value") 양식을 사용하십시오.

+0

나는 이것이 당신 자신의 질문에 대한 답변이라는 것에 동의하지 않는다. IMHO 뷰를 사용하여 모듈을 오염시키는 UI가 없으면 매우 불편한 해결 방법입니다. –

+0

@KaiK. 우선, 그것은 ** ** 오염되지 않은 ... 여러 가지 견해를 가지고 있지 않습니다 ** ** 기존 **보기 이름을 사용합니다. 다음은 해결 방법이지만 기본 제공 GUI를 통해 복잡한 필터를 다시 작성하는 것보다 훨씬 빠릅니다. 전체 필터를 텍스트로 쓸 수있는 DXL 기반의 GUI를 원한다면, 나는 당신을 비난하지 않는다. 그러나 나는 그것이 가능한지 확실하지 않다. –

+0

나는 사과한다. 내 의견은 조금이었다. 무언가를 체크하지 않았습니까? 어쨌든 나는이 질문에 "내장 된 필터 대화 상자에서 필터 정의를 얻는 방법"에 대한 답변을 보지 못했습니다. 물론 필터를 저장하는 것이 가능합니다. 뷰에 대한 하나의 사용 사례입니다. 해당 DXL 작업이 필요하지 않습니다. 나는 당신의 접근 방식이 필터 대화 상자를 (재) 코딩하는 것보다 훨씬 쉽고 빠르다는 것에 동의하지만 가능하다는 것을 확신합니다. –

0

문제를 해결하는 기존 API가 없을 것이라고 생각합니다. 한 가지 방법은 필터 대화 상자를 다시 코딩하고 추가 기능을 추가하는 것입니다. 예 : 고급 필터 목록을 디스크에 저장하고 원하는 곳에서 다시 사용할 수 있습니다.

+0

그건 그렇습니다. 나는 두려워합니다. 나는 유사한 접근법을 취했다 : 각각의 원자 필터의 DXL 기반 정의를 작성한 다음, 조합론을 작성하고 "DXL 편집"창에 전체 내용을 붙여 실행하십시오. 응석에 대한 내 대답을 보라. –