vRules4j
vRules4j — мощный объектно-ориентированный механизм проверки/принятия решений для Java, созданный для того, чтобы взять на себя всю ответственность за проверку в сфере бизнес-предприятий Java и стремящийся предоставить идеальное/лёгкое решение.
Лицензия
vRules4j лицензируется под Apache License 2.0. Пожалуйста, ознакомьтесь с условиями лицензии по ссылке: http://www.apache.org/licenses/.
Особенности
vRules4j поддерживает Java Bean (POJO) и другие технологии, такие как Spring, Hibernate и т. д. Он может работать с более чем 100K объектами в секунду.
Основные функции
com.unibeta.vrules.engines.ValidationEngineFactory.getInstance().validate(java.lang.Object object, java.lang.String vRulesFileName)
.Преимущества
Дополнительные возможности
Примеры использования
Примеры использования vRules4j можно найти в папке examples.
Документация
Документация по vRules4j доступна в формате Javadoc.
Поддержка XML
vRules4j предоставляет поддержку XML для определения правил проверки и результатов проверки. Правила проверки задаются в файле XML, который содержит информацию о свойствах объекта и правилах их проверки. Результаты проверки также записываются в файл XML.
Пример файла XML:
<imports></imports>
<java></java>
<global>
<includes>../common.xml</includes>
</global>
Здесь <imports>
и <java>
— необязательные разделы, которые могут содержать информацию о зависимостях и коде Java соответственно. Раздел <global>
содержит список файлов, которые будут включены в процесс проверки. В данном примере файл ../common.xml
будет включён в проверку. ```
engine.validate(new Object[] { son, family, father }, fileName, info);
/*
Object — массив объектов для проверки.
fileName — имя файла с правилами проверки.
*/
errs = engine.validate(new Object[] { family, son, family, father }, fileName);
long end = System.currentTimeMillis();
System.out.println("the cost is " + (end - start) / 1000.00);
errs = engine.validate( map ,fileName); } catch (Exception e) { e.printStackTrace(); }
if (null != list) { System.out.println("error is " + list.size()); for (ErrorInfo e : list) { System.out.println("" + e.getXPath() +":" + e.getErrorCode()); System.out.println("filed value is " + e.getError().getErrorId()); } }
if (null != errs) { System.out.println("Error messages are:" + errs.length); for (int i = 0; i < errs.length; i++) { // System.out.println(errs[i].substring(errs[i].indexOf("${xPath}:=")+10)); System.out.println(errs[i]); } }
System.out.println("End");
#### API
###### ValidationEngine
```java
Interface com.unibeta.vrules.engines.ValidationEngine
public interface ValidationEngine
ValidationEngine interface. The validation engine service interface.
java.lang.String[] validate(java.util.Map<java.lang.String,java.lang.Object> objMap, java.lang.String vRulesFileName)
Validates the objects in Map and return error messages if validates failed, the key of the map element can be the validation entityId configured in validation files.
java.util.List validate(java.util.Map<java.lang.String,java.lang.Object> objMap, java.lang.String vRulesFileName, java.lang.Object decisionObj)
Validates the objects in Map, the key of the map element can be the validation entityId configured in validation files.
java.lang.String[] validate(java.lang.Object[] objects, java.lang.String vRulesFileName)
Validates a array of objects via the specified rules' file.The input parameter object can be whatever datatype.
java.util.List validate(java.lang.Object[] objects, java.lang.String vRulesFileName, java.lang.Object decisionObj)
Validates an array object via the specified rule's file, meanwhile registering the returned error object instance type.
java.lang.String[] validate(java.lang.Object object, java.lang.String vRulesFileName)
Validates the specified object via the validation rules.
java.util.List validate(java.lang.Object object, java.lang.String vRulesFileName, java.lang.Object decisionObj)
Validates an object via the specified rule's file, meanwhile registering the returned error object instance type.
java.lang.String[] validate(java.lang.Object object, java.lang.String vRulesFileName, java.lang.String entityId)
Validates the specified object by entityId.The paramater object can be whatever datatype.
java.util.List validate(java.lang.Object object, java.lang.String vRulesFileName, java.lang.String entityId, java.lang.Object decisionObj)
com.unibeta.vrules.servlets.VRules4jServlet
<?xml version="1.0" encoding="UTF-8"?>
<!--
@gt >
@lt <
@lteq <=
@gteq >=
@or ||
@and &&
@bitwise_and &
@bitwise_or |
@left_shift <<
@right_shift >>
@right_unsigned_shift >>>
@and_assign &=
@or_assign |=
@left_shift_assign <<=
@right_shift_assign >>=
@right_unsigned_shift_assign >>>=
$Powered By vRules4j-Digester Automatically On Fri Sep 17 18:24:32 CST 2021$
Visit http://sourceforge.net/projects/vrules/ to download the latest version
Author: jordan.xue
-->
<vRules4j>
<global>
<decisionMode>false</decisionMode>
<assertion>false</assertion>
<returnErrorId>false</returnErrorId>
``` ```
<displayErrorValue>true</displayErrorValue>
<toggleBreakpoint>off</toggleBreakpoint>
<enableBinding>false</enableBinding>
<mergeExtensions>false</mergeExtensions>
<includes/>
</global>
<imports>static com.unibeta.cloudtest.util.ObjectDigester.*;</imports>
<java>
com.unibeta.cloudtest.config.CacheManager $cache$ = com.unibета.cloudtest.config.CacheManagerFactory.getInstance();
</java>
<contexts>
<context
className="com.unibeta.cloudtest.openapi.OpenAPIHub.Response" name="ResponseResult"/>
<context
className="com.unibeta.cloudtest.openapi.OpenAPIHub.Response" name="$Response"/>
<context className="com.unibeta.cloudtest.util.ObjectDigester" name="$CloudObject$"/>
</contexts>
<decisionConstants>
<definition name="" value=""/>
</decisionConstants>
<ruleset desc="" id="">
<rule desc="" id=""/>
</ruleset>
<object desc="" extensions=""
id="loadLatestReserveApproveHistoryUsingGET" name="loadLatestReserveApproveHistoryUsingGET">
<className>com.unibeta.cloudtest.assertion.CloudTestAssert</className>
<nillable>false</nillable>
<rules>
<rule breakpoint="off" depends="" desc=""
id="loadLatestReserveApproveHistoryUsingGETRule"
ifFalse="" ifTrue="" isComplexType="false"
isMapOrList="false"
name="loadLatestReserveApproveHistoryUsingGETRule"
recursive="" refId="" sequence="">
<binding foreach="" var="" wirings=""/>
<dataType/>
<attributes/>
<boolParam>$</boolParam>
<assert>
if($Response.getStatus() == 200) {
//if($Response.getBody() instanceof Map) {Map body = (Map)$Response.getBody();}
$ = true;
}else{
$ = false;
}
</assert>
<message id="loadLatestReserveApproveHistoryUsingGET" returnId="false">Assert failed, response value is:#{$CloudObject$.toJSON($Response)}</message>
<decision/>
</rule>
</rules>
</object>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )