1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/unibeta-vRules4j

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

vRules4j

vRules4j — мощный объектно-ориентированный механизм проверки/принятия решений для Java, созданный для того, чтобы взять на себя всю ответственность за проверку в сфере бизнес-предприятий Java и стремящийся предоставить идеальное/лёгкое решение.

Лицензия

vRules4j лицензируется под Apache License 2.0. Пожалуйста, ознакомьтесь с условиями лицензии по ссылке: http://www.apache.org/licenses/.

Особенности

vRules4j поддерживает Java Bean (POJO) и другие технологии, такие как Spring, Hibernate и т. д. Он может работать с более чем 100K объектами в секунду.

Основные функции

  • vRules4j полностью написан на Java.
  • Поддерживает все типы данных Java: int, float, double, boolean, а также Map и List.
  • Предоставляет простой и понятный API для проверки объектов.
  • Может использоваться для проверки POJO.
  • Для проверки объекта необходимо вызвать метод:
    • com.unibeta.vrules.engines.ValidationEngineFactory.getInstance().validate(java.lang.Object object, java.lang.String vRulesFileName).
    • В качестве параметра передаётся проверяемый объект и имя файла с правилами проверки.
  • Правила проверки могут быть заданы в XML-файле.

Преимущества

  • 100% совместимость с Java, без дополнительных зависимостей.
  • Поддержка всех типов данных Java.
  • Простота использования.
  • Возможность настройки правил проверки.
  • Интеграция с другими технологиями.
  • Высокая производительность.

Дополнительные возможности

  • XPath-поддержка для проверки значений свойств объектов.
  • Встроенная поддержка i18N.

Примеры использования

Примеры использования 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)
VRules4jServlet

com.unibeta.vrules.servlets.VRules4jServlet

  • Ӧ����web����ʱ, ��Ҫ���ø�Servlet�����Զ���ʼ��classpthʵ�ֺ�����������ClassLoader�����޷켯��,
  • Ҳ����ʹ��'-DvRules4j.classpath='��JVM���������������ⲿclasspath

XML

<?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 )

Вы можете оставить комментарий после Вход в систему

Введение

vRules4j--The best completely Object Oriented Java Object Validation/Decision Rule engine,which is born for taking over all validation responsibility in java business-enterprise industry and looking forward to providing Perfect/Lightweight solution. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/unibeta-vRules4j.git
git@api.gitlife.ru:oschina-mirror/unibeta-vRules4j.git
oschina-mirror
unibeta-vRules4j
unibeta-vRules4j
master