`
何必如此
  • 浏览: 55301 次
社区版块
存档分类
最新评论

规则引擎Visual Rules Solution开发基础教程【连载14】--VisualRules接口调用(三)

阅读更多
VisualRules接口调用(三)


一、Java类通过Servlet调用-json格式

         在Eclipse中制作一个Test6类,main中接收参数,通过servlet服务调用student.add规则包。显示返回结果。

1.配置web.xml

         设置DBRuleServerServlet的参数xmltype的值为json,如下:
<servlet>
<servlet-name>DBRuleServerServlet</servlet-name>
<servlet-class>com.flagleader.webserver.DBRuleServerServlet</servlet-class>
<init-param>
<param-name>xmltype</param-name>
<param-value>json</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DBRuleServerServlet</servlet-name>
<url-pattern>/servlet/dbruleservices.servlet</url-pattern>
</servlet-mapping>
         设置好上述才能调用:
http://localhost:8880/webrule/servlet/dbruleservlet.servlet
         查看 Java类通过Servlet调用-xml格式 的2到7小点操作,
即(2、配置说明  3、解析web.xml 4、编译文件存放目录 5、登录webrule管理平台 6、webrule管理平台 添加任务和添加服务 7、查看任务和服务)


2.传输数据格式类型

         参数streamtype默认为1,可以不进行配置,可以根据需求配置传输数据格式类型,0表示原始字符串格式。1表示加密压缩字符串。2表示压缩字符串。3表示压缩字节。4表示GZIP压缩流。客户端传输时通过Property.getInstance().setServerSendtype(...)设置传输数据格式类型,默认为1,即Property.getInstance().setServerSendtype(Property.ENCRYZIPSTRINGSEND),其中Property.RAWSEND的值为0,Property.ZIPSTRINGSEND的值为2, Property.ZIPBYTESEND的值为3,Property.GZIPSEND的值为4,其中客户端传输数据格式类型为1时,参数streamtype的参数值可以是0或1,如下:
         参数streamtype默认为1,如下:
<servlet>
<servlet-name>DbServletServlet</servlet-name>
<init-param>
<param-name>streamtype</param-name>
<param-value>1</param-value>
</init-param> <servlet-class>com.flagleader.webserver.DbServletServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DbServletServlet</servlet-name>
<url-pattern>/servlet/dbruleservlet.servlet</url-pattern>
</servlet-mapping>


3.添加java测试类

         在java工程中添加一个java类,名为Test6.java,其内容编辑如下:
package com.flagleader;
import java.util.List;
import com.flagleader.engine.Property;
import com.flagleader.engine.RuleService;
import com.flagleader.json.JsonServerServletFactory;
public class Test6 {
public static void main(String[] args) {
try {
//设置加密方式 默认等于 Property.ENCRYZIPSTRINGSEND
Property.getInstance().setServerSendtype(Property.ENCRYZIPSTRINGSEND);
// 工厂模式,该接口可以用在本地调用,以及服务调用
RuleService engine = new JsonServerServletFactory("http://localhost:8880/webrule/servlet/dbruleservlet.servlet").getRuleService();
// 以dto形式为规则传参
Student student = new Student(1, "李丽", 12, '男', "六年级", "无");
// 执行规则,其中"student.add"为规则全名,student为传入参数
engine.executeBeans("student.add", student);
// 判断engine.get("studentList")是不是集合类型
if (engine.get("studentList").getClass().isAssignableFrom(
java.util.ArrayList.class)) {
// 执行完规则后,获取数据,"studentList"必须和规则中取内存表数据的变量名一致
List list = (List) engine.get("studentList");
// 由于规则中采用的是list<list>类型,需要做两次转换
List list1 = (List) list.get(0);
// 循环次数为对象中字段个数
for (int i = 0; i < 6; i++) {
System.out.print(list1.get(i) + "\t");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}


4.执行java测试类

         点击执行后,可以看到如下结果:




         说明已经调用了student.add规则包,并且根据传入的参数,返回处理结果以list<list>形式展示。
         同理,任何的其他java类,只需加入上述的代码,即可完成调用规则包的工作。


二、Java类通过Servlet调用-json格式(调用指定版本)

1.配置web.xml

         设置DBRuleServerServlet的参数xmltype的值为json,如下:
<servlet>
<servlet-name>DBRuleServerServlet</servlet-name>
<servlet-class>com.flagleader.webserver.DBRuleServerServlet</servlet-class>
<init-param>
<param-name>xmltype</param-name>
<param-value>json</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DBRuleServerServlet</servlet-name>
<url-pattern>/servlet/dbruleservices.servlet</url-pattern>
</servlet-mapping>
         设置好上述才能调用:
http://localhost:8880/webrule/servlet/dbruleservlet.servlet
查看 Java类通过Servlet调用-xml格式 的2到7小点操作,即(2、配置说明  3、解析web.xml 4、编译文件存放目录 5、登录webrule管理平台 6、webrule管理平台 添加任务和添加服务 7、查看任务和服务)


2.传输数据格式类型

         参数streamtype默认为1,可以不进行配置,可以根据需求配置传输数据格式类型,0表示原始字符串格式。1表示加密压缩字符串。2表示压缩字符串。3表示压缩字节。4表示GZIP压缩流。客户端传输时通过Property.getInstance().setServerSendtype(...)设置传输数据格式类型,默认为1,即Property.getInstance().setServerSendtype(Property.ENCRYZIPSTRINGSEND),其中Property.RAWSEND的值为0,Property.ZIPSTRINGSEND的值为2, Property.ZIPBYTESEND的值为3,Property.GZIPSEND的值为4,其中客户端传输数据格式类型为1时,参数streamtype的参数值可以是0或1,在没有设置参数streamtype的情况下,内部约定为1,如下:
<servlet>
<servlet-name>DbServletServlet</servlet-name>
<init-param>
<param-name>streamtype</param-name>
<param-value>1</param-value>
</init-param> <servlet-class>com.flagleader.webserver.DbServletServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DbServletServlet</servlet-name>
<url-pattern>/servlet/dbruleservlet.servlet</url-pattern>
</servlet-mapping>


3.新建版本库

         访问webrule下的servser的index.jsp,即
http://localhost:8880/webrule/server点击选项卡“规则执行版本”,右键点击左边窗体“规则库版本”,选择“新建版本库”,如下图:





         弹出窗体“工程信息”,工程名称文本框中输入1.1,如下图:



         查看新建的1.1版本库,如下图:




         复制E:\rscfile\1.1目录下的student文件夹到
D:\VisualRules\Tomcat\webapps\webrule\WEB-INF\rsc\1.1目录下,如下图:






4.添加java测试类

         在java工程中添加一个java类,名为Tes7.java,其内容编辑如下:
package com.flagleader;
import java.util.List;
import com.flagleader.engine.Property;
import com.flagleader.engine.RuleService;
import com.flagleader.json.JsonServerServletFactory;
public class Test7 {
public static void main(String[] args) {
try {
//设置加密方式 默认等于 Property.ENCRYZIPSTRINGSEND
Property.getInstance().setServerSendtype(Property.ENCRYZIPSTRINGSEND);
// 工厂模式,该接口可以用在本地调用,以及服务调用
RuleService engine = new JsonServerServletFactory("http://localhost:8880/webrule/servlet/dbruleservlet.servlet").getRuleService();
//执行哪个版本下的编译文件
engine.setLibraryName("1.1");
// 以dto形式为规则传参
Student student = new Student(1, "李丽", 12, '男', "六年级", "无");
// 执行规则,其中"student.add"为规则全名,student为传入参数
engine.executeBeans("student.add", student);
// 判断engine.get("studentList")是不是集合类型
if (engine.get("studentList").getClass().isAssignableFrom(
java.util.ArrayList.class)) {
// 执行完规则后,获取数据,"studentList"必须和规则中取内存表数据的变量名一致
List list = (List) engine.get("studentList");
// 由于规则中采用的是list<list>类型,需要做两次转换
List list1 = (List) list.get(0);
// 循环次数为对象中字段个数
for (int i = 0; i < 6; i++) {
System.out.print(list1.get(i) + "\t");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}


5.执行java测试类

         点击执行后,可以看到如下结果:




         说明已经调用了student.add规则包,并且根据传入的参数,返回处理结果以list<list>形式展示。
         同理,任何的其他java类,只需加入上述的代码,即可完成调用规则包的工作。

  • 大小: 138.5 KB
  • 大小: 135.2 KB
  • 大小: 107.4 KB
  • 大小: 96 KB
  • 大小: 113.6 KB
  • 大小: 159.7 KB
2
1
分享到:
评论

相关推荐

    Visual Basic 6.0程序设计基础教程---李锦--大连理工大学出版社--2007.8.pdf

    Visual Basic 6.0程序设计基础教程---李锦--大连理工大学出版社--2007.8.pdf

    Visual-Rules规则引擎产品介绍-PPT课件.ppt

    《Visual Rules规则引擎产品详解》 Visual Rules是一款由旗正信息公司自主研发的规则引擎产品,拥有完全独立的知识产权,专为中国市场打造。该产品旨在帮助企业高效管理业务规则,实现业务规则的快速更新和优化,...

    规则引擎-决策池

    在描述中提到的Visual Rules Solution旗正规则引擎中,决策池扮演了这样的角色。 1. **决策池功能介绍** 决策池的设计目标是提高规则的复用性和效率。在规则开发中,如果某些规则被频繁使用,将这些规则放入决策池...

    VisualRules的电信业务支撑系统的开发

    2. **J2EE集成**:利用VisualRules提供的EJB Server业务规则服务器,实现规则的实时部署与调用。 #### 六、应用系统的使用与维护 业务支撑系统的日常使用与维护主要由业务人员或系统维护人员负责。他们的主要任务...

    规则引擎-Java调用规则

    本篇主要介绍如何在Java环境中调用规则引擎,具体包括三种方法:Java类直接调用规则包、通过规则服务调用和通过SOAP方式调用。 1. **Java类调用规则包** 在Java项目中,首先需要配置类路径,将规则引擎的相关库...

    规则引擎-数据库对象

    在本文中,我们将深入探讨如何利用规则引擎,特别是Visual Rules Solution的旗正规则引擎,来访问和管理数据库中的部门信息,包括添加、修改、删除和查询部门等操作。 首先,我们要理解什么是数据库对象。在规则...

    规则引擎教程-决策树.docx

    创建规则包的步骤简单明了,例如创建“基础规则”可以通过在Visual Rules Solution界面中选择新建规则包,并为其指定名称来完成。 2.1.2 变量定义 在规则包中,我们需要定义业务逻辑所需的变量。在“基础规则”中...

    microsoft visual c++ 2017 redistributable(x64)-14.10.25008

    microsoft visual c++ 2017 redistributable(x64)-14.10.25008

    Visual C++6.0实例教程

    《Visual C++6.0实例教程》是一份专为初学者设计的教程,旨在通过具体的实例来教授如何在Microsoft Visual C++ 6.0(简称VC++6.0)环境中进行C++编程。Visual C++6.0是微软公司发布的一款强大的集成开发环境,它不仅...

    Microsoft Visual C++ 2013 Redistributable(X64) - 12.0.40660

    *************************************************************...Microsoft Visual C++ 2013 Redistributable(X64) - 12.0.40660 需先安装这个才行 *************************************************************

    规则引擎-版本控制

    下面将详细讨论规则引擎的版本控制以及如何在Visual Rules Solution的旗正规则引擎中实现这一功能。 首先,版本控制是规则引擎的一个重要特性。当业务规则不断迭代和更新时,传统的做法是直接修改代码,这可能导致...

    规则引擎-变量跟踪

    在Visual Rules Solution这款规则引擎中,变量跟踪功能能够帮助用户深入了解规则执行的细节,尤其是在处理复杂的业务逻辑时。当我们在规则包测试中启用变量跟踪,可以观察到变量在每个规则执行前后以及规则集内的值...

    ST Visual Programmer STM32(en.stvp-stm32)最新4.0

    ST Visual Programmer STM32(en.stvp-stm32)最新4.0

    Visual C++数据库开发基础与应用

    "Visual C++数据库开发基础与应用"这个主题涵盖了C++编程语言与数据库管理系统(DBMS)交互的基础知识和实践应用。这通常是通过ODBC(Open Database Connectivity)或ADO(ActiveX Data Objects)等接口实现的。 ...

    Visual C++ 调用 Matlab引擎.7z

    然后,在Visual C++中,需要引入相应的头文件,如`#include "mat.h"`,这包含了调用Matlab引擎所需的基本接口。接着,通过`MexFunction`接口,我们可以创建一个C函数来调用Matlab引擎。在这个函数中,可以使用`...

    mysql-for-visualstudio-1.2.6.msi 官方下载原版

    MySQL for Visual Studio 1.2.6 是一个官方提供的集成开发环境插件,它使得Visual Studio 2015用户能够方便地与MySQL数据库进行交互和开发。这个插件是MySQL与微软Visual Studio深度整合的一个体现,为C#开发者提供...

    mysql-for-visualstudio-1.2.7.msi mysql-connector-net-6.9.8

    MySQL for Visual Studio 是一个插件,它允许开发人员在Visual Studio环境中直接管理MySQL数据库,进行数据操作、设计表结构、编写SQL查询以及执行其他数据库相关的任务。版本1.2.7提供了与Visual Studio的紧密集成...

    Visual C# 2010 Recipes: A Problem-Solution Approach

    本书《Visual C# 2010 Recipes: A Problem-Solution Approach》是一部全面介绍Visual C# 2010开发技术的实用指南。全书共分为17章,覆盖了从基础的应用程序开发到高级的主题如并行编程和LINQ等各个方面。以下是各...

    《Visual C++程序设计教程》-梁建武-电子教案.rar

    《Visual C++程序设计教程》是梁建武先生编著的一本专为初学者准备的编程教材,旨在帮助读者深入理解和掌握C++编程语言,特别是通过Microsoft的Visual C++集成开发环境进行应用开发。该教程涵盖了C++的基础语法、...

Global site tag (gtag.js) - Google Analytics