当前位置: 首页 > news >正文

建设网站需要做哪些工作内容php做网站需要数据库吗

建设网站需要做哪些工作内容,php做网站需要数据库吗,ueditor wordpress4.5,成都微信小程序开发花痴流口水颜文字可执行模型是对引擎处理的Drools最低级别模型的重新设计。 在当前的系列#xff08;最多6.x#xff09;中#xff0c;可执行模型在过去的8年中有机地增长了#xff0c;从未真正成为最终用户的目标。 建议那些希望以编程方式编写规则的人通过代码生成和目标… 花痴流口水颜文字 可执行模型是对引擎处理的Drools最低级别模型的重新设计。 在当前的系列最多6.x中可执行模型在过去的8年中有机地增长了从未真正成为最终用户的目标。 建议那些希望以编程方式编写规则的人通过代码生成和目标drl来完成 这是不理想的。 从来没有任何驱动程序可以使最终用户更容易地使用它因为在Java中广泛使用匿名类非常麻烦。 借助Java 8和Lambda的这种变化就有可能制造出最终用户可以访问的更具吸引力的模型。 这个新模型是在高级语言的编译过程中生成的但也可以单独使用。 我们的目标是使该可执行模型自成一体并避免进行进一步的字节码修改分析转换或生成 从该模型的角度来看所有内容均由代码或高级语言层提供。 例如索引等必须由参数提供高级语言在针对可执行模型时会通过分析生成这些参数。 它旨在利用Java 8的lambda很好地映射到Fluent级别的构建者。 这将使其对Java开发人员和语言开发人员更具吸引力。 而且这将允许独立于任何语言的低级引擎功能设计和测试。 这意味着我们可以在引擎级别进行创新而不必担心语言层。 可执行模型应该足够通用以映射到多个域。 这将是一个低级数据流模型您可以在其中处理功能性React式编程模型但仍可用于从中构建基于规则的系统。 以下示例提供了用于构建可执行模型的流利DSL的第一个视图 DataSource persons sourceOf(new Person(Mark, 37),new Person(Edson, 35),new Person(Mario, 40));VariablePerson markV bind(typeOf(Person.class));Rule rule rule(Print age of persons named Mark).view(input(markV, () - persons),expr(markV, person - person.getName().equals(Mark))).then(on(markV).execute(mark - System.out.println(mark.getAge())) ); 前面的代码定义了一个包含一些人员实例的数据源并声明了人员类型的变量markV。 规则本身包含通常的两部分LHS由传递给view方法的一组输入和表达式定义而RHS是由传递给then方法的lambda表达式定义的动作。 更详细地分析LHS语句如下 input(markV, () - persons) 将人员数据源中的对象绑定到markV变量并通过对象类进行模式匹配。 从这个意义上讲DataSource可以被视为等同于Drools入口点。 相反的表达 expr(markV, person - person.getName().equals(Mark)) 使用谓词定义绑定到markV变量的对象必须满足的条件才能被引擎成功匹配。 请注意正如预期的那样模式匹配的评估不是通过作为任何种类的分析或编译过程的结果而生成的约束来执行的而是仅通过应用实现谓词的lambda表达式在这种情况下人员- person.getName。equals“ Mark”匹配的对象。 换句话说前一个DSL会产生一个规则的可执行模型该模型等效于后续drl的解析结果。 rule Print age of persons named Mark whenmarkV : Person( name Mark ) from entry-point persons thenSystem.out.println(markV.getAge()); end 它还正在开发一个rete构建器可以使用此DSL定义的规则。 特别是可以将这些规则添加到CanonicalKieBase中然后像其他任何普通KieBase一样从中创建KieSession。 CanonicalKieBase kieBase new CanonicalKieBase(); kieBase.addRules(rule);KieSession ksession kieBase.newKieSession(); ksession.fireAllRules(); 当然DSL还允许定义更复杂的条件例如连接 VariablePerson markV bind(typeOf(Person.class)); VariablePerson olderV bind(typeOf(Person.class));Rule rule rule(Find persons older than Mark).view(input(markV, () - persons),input(olderV, () - persons),expr(markV, mark - mark.getName().equals(Mark)),expr(olderV, markV, (older, mark) - older.getAge() mark.getAge())).then( on(olderV, markV).execute((p1, p2) - System.out.println(p1.getName() is older than p2.getName())) ); 或存在模式 VariablePerson oldestV bind(typeOf(Person.class)); VariablePerson otherV bind(typeOf(Person.class));Rule rule rule(Find oldest person).view(input(oldestV, () - persons),input(otherV, () - persons),not(otherV, oldestV, (p1, p2) - p1.getAge() p2.getAge())).then( on(oldestV).execute(p - System.out.println(Oldest person is p.getName())) ); 这里的not代表所有表达式的取反因此上面使用的形式实际上只是以下内容的快捷方式 not( expr( otherV, oldestV, (p1, p2) - p1.getAge() p2.getAge() ) ) 还已经以以下形式支持累计 VariablePerson person bind(typeOf(Person.class)); VariableInteger resultSum bind(typeOf(Integer.class)); VariableDouble resultAvg bind(typeOf(Double.class));Rule rule rule(Calculate sum and avg of all persons having a name starting with M).view(input(person, () - persons),accumulate(expr(person, p - p.getName().startsWith(M)),sum(Person::getAge).as(resultSum),avg(Person::getAge).as(resultAvg))).then(on(resultSum, resultAvg).execute((sum, avg) - result.value total sum ; average avg) ); 为了提供最后一个更完整的用例可以使用此DSL定义经典火灾和警报示例的可执行模型如下所示。 VariableRoom room any(Room.class); VariableFire fire any(Fire.class); VariableSprinkler sprinkler any(Sprinkler.class); VariableAlarm alarm any(Alarm.class);Rule r1 rule(When there is a fire turn on the sprinkler).view(input(fire),input(sprinkler),expr(sprinkler, s - !s.isOn()),expr(sprinkler, fire, (s, f) - s.getRoom().equals(f.getRoom()))).then(on(sprinkler).execute(s - {System.out.println(Turn on the sprinkler for room s.getRoom().getName());s.setOn(true);}).update(sprinkler, on) );Rule r2 rule(When the fire is gone turn off the sprinkler).view(input(sprinkler),expr(sprinkler, Sprinkler::isOn),input(fire),not(fire, sprinkler, (f, s) - f.getRoom().equals(s.getRoom()))).then(on(sprinkler).execute(s - {System.out.println(Turn off the sprinkler for room s.getRoom().getName());s.setOn(false);}).update(sprinkler, on) );Rule r3 rule(Raise the alarm when we have one or more fires).view(input(fire),exists(fire)).then(execute(() - System.out.println(Raise the alarm)).insert(() - new Alarm()) );Rule r4 rule(Lower the alarm when all the fires have gone).view(input(fire),not(fire),input(alarm)).then(execute(() - System.out.println(Lower the alarm)).delete(alarm) );Rule r5 rule(Status output when things are ok).view(input(alarm),not(alarm),input(sprinkler),not(sprinkler, Sprinkler::isOn)).then(execute(() - System.out.println(Everything is ok)) );CanonicalKieBase kieBase new CanonicalKieBase(); kieBase.addRules(r1, r2, r3, r4, r5);KieSession ksession kieBase.newKieSession();// phase 1 Room room1 new Room(Room 1); ksession.insert(room1); FactHandle fireFact1 ksession.insert(new Fire(room1)); ksession.fireAllRules();// phase 2 Sprinkler sprinkler1 new Sprinkler(room1); ksession.insert(sprinkler1); ksession.fireAllRules();assertTrue(sprinkler1.isOn());// phase 3 ksession.delete(fireFact1); ksession.fireAllRules(); 在此示例中可能还要注意几件事 必须执行一些重复操作才能将表达式的参数绑定到评估它的lambda表达式的形式参数。 希望可以在解决此JDK错误时使用-parameters编译参数来克服此问题。 anyRoom.class是bindtypeOfRoom.class的快捷方式 输入未声明数据源。 这是指出这些对象来自默认空DataSource的快捷方式对应于Drools默认入口点。 实际上在此示例中事实以编程方式插入到KieSession中。 使用输入而不为其提供任何表达式的输入实际上是inputalarmexpralarma- true的快捷方式 以同样的方式没有条件的存在模式例如notfire是notexprfiref- true的另一个快捷方式 Java 8语法还允许将谓词定义为访问诸如exprsprinklerSprinkler :: isOn之类的事实的布尔属性的方法引用。 RHS与要执行的代码块一起还提供了一个流畅的接口来定义在触发规则时必须执行的工作内存操作插入/更新/删除。 特别是更新还获得了一个字符串变量用于报告已更新事实中更改的属性的名称例如updatesprinkler“ on”。 由于必须创建可执行模型而无需任何代码分析因此必须再次明确提供此信息。 翻译自: https://www.javacodegeeks.com/2014/07/drools-executable-model.html花痴流口水颜文字
http://www.pierceye.com/news/858325/

相关文章:

  • 泉州网站深圳航空公司官网首页
  • 百度推广整体优化网站整体软装设计公司
  • 太原搜索引擎优化招聘信息服务好的镇江网站优化
  • 自己做网站下载怎么网站基础知识域名5个点
  • 网站搭建合作协议wordpress注册页面插件
  • 网络公司最好的是哪个兰州网络推广优化怎样
  • 网站文章采集工具新网站怎么做流畅
  • discuz 手机网站模板山东省住房建设厅网站首页
  • 网站建设违约责任条款枣庄专业做网站
  • python做爬虫和做网站做两个一摸一样的网站
  • 网站做微信登录asp.net做网站头部和尾部_都用什么来实现
  • 南充哪里做网站太原关键词优化公司
  • 哪个网站做的ppt模板好投放广告网站
  • 公司网站中新闻中心怎样做优化百度浏览器电脑版
  • 厦门网站建设 九来外国做视频在线观看网站
  • 用.net做购物网站山东建筑公司实力排名
  • 做百度推广网站找谁好宁夏省建筑信息平台
  • phpcmsv9手机网站源码网站开发ide php
  • 学校网站建设成功案例微信公众号网站导航怎么做
  • 重庆汽车网站建设建立大安全大应急框架
  • 重庆模板建站定制网站做企业网站到哪里找
  • asp技术做网站网站建设推广是什么工作室
  • 运营公众号还是做网站室内装修设计软件哪个好用
  • 卖营销软件的网站如何利用站群做网站
  • 网站空间价格怎么算网站制作与发布
  • 做网站的动态图片廊坊做网站哪家好
  • 建设企业网站报价怎么做网站logo
  • 企业类网站谷歌seo招聘
  • asp.net网站安装顺序idc 公司网站模板
  • 新手学做网站优化2022app分类排行