2016-12-14 3 views
0

상태 위젯에서 StatusFlowTransition 항목의 'conditionExpression'필드를 사용하려고합니다.조건에서 표현식을 확장 하시겠습니까?

하지만 저는 Moqui에서 조건 내에서 $ {statusTransition.conditionExpression}을 확장 할 수 없다고 생각합니까?

그러면 조건 표현 필드는 어떻게 사용 되나요?

<widgets> 
    <link url="${statusChangeTransition ?: 'updateStatus'}" text="StatusTransitionNameTemplate" text-map="statusTransition" parameter-map="[statusId:statusTransition.toStatusId]" condition="${statusTransition.conditionExpression}" /> 
</widgets> 

답변

1

중요한 부분은 변수에있는 Groovy 표현식을 평가하는 것입니다. 당신은 직접 멋져요 API하지만이 작업을 수행하는 가장 쉽고 가장 효율적인 (컴파일 된 표현을 캐시하기 때문에) 방법이 할 수있는 것은 ResourceFacade.condition() 메소드를 사용하는 것입니다, 즉 :

<link ... condition="ec.resource.condition(statusTransition.conditionExpression, '')"/> 

두 번째 매개 변수는 디버그 위치는 비어있을 수 있습니다. conditionExpression을 사용할 때는 조건을 단순하게 유지하고 항상 사용할 수있는 컨텍스트 필드 만 사용하는 것이 중요합니다. 또한 세 번째 매개 변수를 condition() 메서드에 전달할 수 있습니다.이 메서드는 현재 컨텍스트의 내용 외에 conditionExpression에서 사용할 필드가있는 Map입니다.

+0

정말 대단합니다. 고마워요. Wrt 컨텍스트 필드를 항상 사용할 수 있기 때문에 userGroupId를 사용하고 싶었습니다. afGroup은 ec.user.userId를 사용할 수 있다고 항상 말할 수있는 것은 아닙니다. 이 문제를 해결하기 위해 몇 개의 EECA를 추가하여 UserGroupMember 레코드의 생성/삭제시 해당 UserPreference 키와 값을 만들고 삭제했습니다. 분명히 서투른,하지만 그것을 할 수있는 더 좋은 방법이 있습니까? –

+0

죄송합니다. 명확하게 설명해주십시오. - 현재로서는 자신의 유스 케이스에서는 사용자 그룹 멤버쉽을 사용자 당 하나의 그룹으로 제한하고 있지만 일반적으로 올바른 것은 해당 사용자에 대한 그룹 멤버쉽 목록입니다. 조건 식에서 대조하여 확인하십시오. –

+0

UserFacade 인터페이스 (ec.user 용)를 보면 사용자 그룹, 환경 설정 등에 관한 데이터를위한 메소드가 있습니다. –