2014-04-11 5 views
0

이전의 gridgain 4 코드베이스에서 gridgain 6으로 응용 프로그램을 마이그레이션하고 있습니다. 이전 응용 프로그램에서는 GridJexlPredicate2를 사용하여 if 노드는 특정 작업을 실행해야합니다 (기본적으로 노드에 특정 속성 값이 포함되어 있는지 확인).GridGain 6 (오픈 소스 버전)에서 GridJexlPredicate2의 대안은 무엇입니까

gridgain 6에서 우리는 GridBiPredicate 클래스를 사용해야한다고 생각합니다. 그러나, 표현식 언어 기반 GridJexlPredicate2 클래스를 대체 할 것인가, 아니면 내가보아야 할 다른 프로그래밍 방식/선언적 접근 방식이 있는가?

감사

/** 
* Creates the topology filter used to select nodes for processing. 
* The expression string will have three variables that can be referenced: 
* <dl> 
* <dt><strong>node</strong></dt> 
* <dd>The GridNode being tested</dd> 
* <dt><strong>session</strong></dt> 
* <dd>The GridTaskSession for the task being executed</dd> 
* <dt><strong>monitor</strong></dt> 
* <dd>The GridNodeMonitor monitoring nodes on the grid</dd> 
* </dl> 
* 
* @param monitor The monitor instance to be bound into the expression 
*context for use in the filter expression 
* @return A {@link GridBiPredicate} used to filter nodes 
*/ 
    public static GridJexlPredicate2<GridNode, GridComputeTaskSession> createTopologyFilter(GridNodeMonitor monitor) { 
    GridJexlPredicate2<GridNode, GridComputeTaskSession> filter = new GridJexlPredicate2<GridNode, GridComputeTaskSession>("monitor.canAcceptJobs(node)","node", "session"); 
    return filter.with("monitor", monitor); 
} 
+0

와 GridProjection을 사용하는 것입니다. 그러나 그것은 올바른 접근법입니까? –

+0

할 수는 있지만 어떤 이점이 있는지 확실하지 않습니다. 새로운 방식은 나에게 깨끗해 보인다. – Dmitriy

답변

1

대안은, BTW, 하나 개의 솔루션은 기존의 GridGain 소스에서 GridJexlPredicate2를 복제하는 것입니다 필터

final MyNodeMonitor monitor = ...; 

Grid grid = GridGain.gridI(); 

GridProjection prj = grid.forPredicate(new GridPredicate<GridNode>() { 
    @Override public boolean apply(GridNode node) { 
     return monitor.canAcceptJobs(node); 
    } 
}); 

GridComputeTaskFuture<?> fut = prj.compute().execute(new MyTask()); 

// Synchronous wait. 
fut.get(); 
+0

예, 작동합니다. 그러나, GridGain 4에서는 다음과 같이 설정했습니다. –

+0

구성 빈은 필터링 술어로 설정할 수 있습니다. 이것이 더 이상 선택 사항이 아니라면, 우리는 몇 가지 작업과 작업이있는 가장 좋은 해결책은 무엇일까요? bean id = "abstractGridConfiguration"abstract = "true"class = "org.gridgain.grid.GridConfiguration"> . . <생성자 ARG REF ="gridNodeMonitor "/> . .

+0

@VinayB 토폴로지 SPI가 제품에서 제거되었으므로 더 이상 제안 할 방법이 없습니다. 새로운 방식이 더 깨끗해 보입니다. – Dmitriy