2014-04-25 6 views
0

특정 규칙이있는 폴더를 만드는 Java에서 Alfresco Webservice를 만들고 싶습니다. 지금까지 webservice는 폴더와 규칙을 만듭니다. 문제는 Alfresco 공유에서 규칙을 만들려고 할 때 "모든 조건이 충족되지 않은 한"동일한 작업을 수행하는 규칙에 actionCondition을 추가하려는 것입니다."모든 기준이 충족되지 않은 경우"수행 방법 Java에서 알 프레스코 규칙

이 문서가 HMTL이 아닌 이상 모든 문서를 다른 폴더로 옮기고 싶습니다.

CompareMimeTypeEvaluator.class 

있다 그러나 "모든 기준을 충족하는 경우"와 내가 반대를 원하는 수행한다. 내가 무슨 짓을

내가이 비교기 작성됩니다

public class CompareMismatchEvaluator extends ActionConditionEvaluatorAbstractBase 
{ 

private static Log logger = LogFactory.getLog(CompareMismatchEvaluator.class); 

/** 
* Evaluator constants 
*/ 
public static final String NAME = "compare-mime-type"; 
public static final String PARAM_PROPERTY = "property"; 
public static final String PARAM_VALUE = "value"; 

/** 
* 
*/ 
private static final String ERRID_NOT_A_CONTENT_TYPE = "compare_mime_type_evaluator.not_a_content_type"; 
private static final String ERRID_NO_PROPERTY_DEFINTION_FOUND = "compare_mime_type_evaluator.no_property_definition_found"; 

private NodeService nodeService; 

/** 
* @see org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase#evaluateImpl(org.alfresco.service.cmr.action.ActionCondition, org.alfresco.service.cmr.repository.NodeRef) 
*/ 
@Override 
public boolean evaluateImpl(ActionCondition actionCondition, NodeRef actionedUponNodeRef) 
{ 
    QName propertyQName = (QName) actionCondition.getParameterValue(PARAM_PROPERTY); 
    // Get the original value and the value to match 
    Serializable propertyValue = nodeService.getProperty(actionedUponNodeRef, propertyQName); 
    Serializable compareValue = actionCondition.getParameterValue(PARAM_VALUE); 

    logger.debug("Comparing : " + propertyValue + " - - - " + compareValue); 
    return !propertyValue.equals(compareValue); 

} 

/** 
* @see org.alfresco.repo.action.ParameterizedItemAbstractBase#addParameterDefinitions(java.util.List) 
*/ 
@Override 
protected void addParameterDefinitions(List<ParameterDefinition> paramList) 
{ 
    paramList.add(new ParameterDefinitionImpl(PARAM_PROPERTY, DataTypeDefinition.QNAME, false, getParamDisplayLabel(PARAM_PROPERTY))); 
    paramList.add(new ParameterDefinitionImpl(PARAM_VALUE, DataTypeDefinition.ANY, true, getParamDisplayLabel(PARAM_VALUE), false, "ac-mimetypes"));     
} 

}

을하지만이 비교기는 같은 결과 CompareMimeTypeEvaluator.class을 제공합니다. 그럼 어떻게 생각하세요?

답변

0

해결책을 찾았습니다. 당신은 방금 CompareMimeTypeEvaluator.class 사용, 자신의 비교기를 생성해야하고 actionCondition에서 부울 매개 변수를 true로 설정하지 마십시오 : 변경 무엇

ActionCondition actionCondition = actionService 
      .createActionCondition(CompareMimeTypeEvaluator.NAME); 

    Map<String, Serializable> conditionParameters = new HashMap<String, Serializable>(); 
    conditionParameters.put(CompareMimeTypeEvaluator.PARAM_PROPERTY, 
      ContentModel.PROP_CONTENT); 
    conditionParameters.put(CompareMimeTypeEvaluator.PARAM_VALUE, 
      MimetypeMap.MIMETYPE_HTML); 
    actionCondition.setInvertCondition(true); 
    actionCondition.setParameterValues(conditionParameters); 
    compositeAction.addActionCondition(actionCondition); 

내가이 줄을 추가 한 것입니다

actionCondition.setInvertCondition(true); 

이 항목이 HTML 문서가 아니라면 모든 항목에 대한 작업을 실행합니다.