标签: rules

如何平衡DRY原则与最小化依赖关系?

我遇到了DRY原则(不要重复自己)的问题,并最大限度地减少了围绕Rete规则引擎的依赖性.

大型IT组织中的规则引擎往往是企业(注意资本"E" - 这是严肃的业务).所有规则必须表达一次,很好和DRY,并集中在昂贵的规则引擎中.一个组维护规则引擎,并且是规则集的守护者.

当该IT组织是美国保险公司的一部分时,往往会有很多规则.有些规则适用于所有州和产品,但每个州都倾向于为不同的产品制定自己的法律,因此规则需要反映这些怪癖.这些类别很多:精算,承保,甚至是来自第三方机构的订购信用和机动车报告.

从设计的角度来看,我所面临的问题是集中规则和处理当然是好的和干的,但是有成本:

  1. 额外的网络跃点访问位于中心的规则服务并返回结果;
  2. 如果将规则引擎公开为SOAP Web服务,则会产生额外的复杂性 - 消费者必须将SOAP请求和OXM打包回自己的域;
  3. 维护规则引擎的企业组,设置和维护规则的业务以及使用它们的开发人员之间的其他接口;
  4. 额外的复杂性 - 有时数据驱动的解决方案可能就足够了.
  5. 其他依赖项 - 无法控制自己的规则的组件必须担心规则引擎的外部依赖性,以便进行测试,部署,发布等.

许多其他企业技术(例如,B2B网关,ESB等)都会出现这些问题.

相同的企业集团也将SOA视为基本原则.但我对正确的服务设计的理解是,它们应该平铺业务空间并且是幂等的,独立的和孤立的.如果服务规则在其他地方维护,服务如何独立和隔离?

我想在简单性方面犯错,认为如果规则只能在孤立的情况下应用,那么消除依赖关系应该优先于集中化.我不确定这个论点会赢得胜利.

所以我的问题是:

  1. 你在哪里落在集中化与独立论证上?
  2. 您对规则引擎等企业工具的体验如何?
  3. 我怎样才能让隔离的论点变得更强大?
  4. 如果我的观点不正确,你会支持集中化的论点?

soa enterprise rules dry

10
推荐指数
1
解决办法
724
查看次数

如何在.NET中找到Windows拨号规则

这应该很简单,但显然不是.由于..Windows 3左右,有一个名为Phone或Phone&Modem的控制面板.在那个控制面板中有一堆关于调制解调器如何拨号的信息,假设你有一个调制解调器连接起来.例如,您是否需要拨打9才能离开,区号是什么,等等.如何以编程方式访问此信息?我正在使用C#.NET 2010.

.net c# rules tapi dialing

10
推荐指数
2
解决办法
1597
查看次数

在Drools 6中以编程方式创建新drools规则的新方法是什么?

简而言之,我想在运行时从规则库创建,编辑和删除规则.我很难弄清楚如何在流氓6+中做到这一点.

我知道在先前版本的drools(<= 5.6)中,有一个.drl文件的XML表示和一个用于它的API:https://docs.jboss.org/drools/release/5.6.0 .Final/drools-expert-docs/html/ch04.html#d0e8052.

从5.6开始的drools文档表明这个已弃用,它似乎在6处被完全删除.我不想使用已知没有直接升级路径的API.

由于工作流程要求以及Web用户界面的复杂性,将Guvnor或Workbench UI公开给用户进行规则编辑也不太合适.我想从Java代码创建和管理规则.

我想要一个比.drl文件的字符串模板更好的方法来创建新规则和修改规则.从Java以编程方式创建新规则的用途是什么?我做了很多搜索,但似乎无法为此找到一组Java API调用.

java rules drools drools-guvnor

10
推荐指数
2
解决办法
5543
查看次数

Firebase Firestore:自定义管理员访问权限

在火力地堡公司的FireStore,我想只允许(自定义设定),管理员写/更新/删除资源,为此,我已经得到了这些安全规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /resources {
      allow read;
      allow write, update, delete: if get(/users/$(request.auth.uid).isAdmin);
    }
    match /resources/{resource} {
      allow read;
      allow write, update, delete: if get(/users/$(request.auth.uid).isAdmin);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用在users集合中标记为admin的用户登录:

用户集合只有一个管理员

NfwIQAjfNdS85yDvd5yPVDyMTUj2是从身份验证窗格获取的UID:

用户存在

但是,出于某种原因(更新:确定原因;请参阅答案),在确定我已经使用admin用户登录后,在写入资源集合时,我收到了PERMISSION_DENIED错误.

也许可以从Firestore查看请求日志?然后,我可以看看request.auth.uid与我的收藏和规则相匹配的内容.

rules admin firebase access google-cloud-firestore

10
推荐指数
1
解决办法
3725
查看次数

构建图形用户界面的规则

我喜欢服务和数据库层的后端编程.主要是因为我从来没有弄清楚如何构建体面的用户界面.我在谈论GWT和Swing.

有没有像网站那样的例子和良好的规则可以遵循如何构建漂亮的直观UI?

对我来说最大的痛苦是selecting the layout strategy,如果你能主要解决这个问题,那将会非常有帮助.

java user-interface rules building

9
推荐指数
1
解决办法
1345
查看次数

如何比较两个规则列表?

我需要比较两个var -> integer不匹配事实的形式规则列表.
确定,如果有任何规则相同的lhs和不同的rhs.

例如:

{a-> 3,b-> 1,c-> 4}〜??? 〜{a-> 3,b-> 1,c-> 4} =真
{a-> 3,b-> 1,c-> 4}〜??? 〜{a-> 3,b-> 2,c-> 4} = false
{ a-> 3,b-> 1,c-> 4}〜??? 〜{ a-> 1,b-> 3,c-> 4} = false
{a-> 3,b-> 1,c-> 4}〜??? 〜{c-> 4,d-> 8,e-> 9} =真
{a-> 3,b-> 1,c-> 4}〜??? 〜{d-> 8,e-> 9,f-> 7} =真

在我的情况下,它们已经按照lhs排序,并且所有lhs都是唯一的,如果它可以帮助尽可能简单的功能.

UPD:忘了一件事!列表可以有不同的长度.但似乎所有三个当前答案仍然有效.

comparison wolfram-mathematica rules

9
推荐指数
3
解决办法
287
查看次数

Drools是映射业务规则/逻辑的最有效方式吗?

在我们的项目中,我们必须实现有关将某些对象映射到某些操作的业务逻辑.在某个操作最终得到解决之前,我们将为要验证的特定类型的对象提供一系列条件.换句话说,对于7种类型的对象,我们可以进行一系列操作(来自近45种动作).

我们正在考虑使用Drools写下上述规则.就效率而言,有没有人对使用Drools有一些积极/消极的经验?还有可以使用的jBPM框架(如果我没有弄错Drools在那里使用) - 任何人都熟悉该框架?也许您还有其他一些如何解决问题的想法?

state rules drools jbpm

9
推荐指数
1
解决办法
4821
查看次数

从Sonarqube导出编码规则列表

我试图找到一种方法来获取所有Sonarqube Java(或其他)规则(带有键,描述等)的列表,并将其导出为Excel,csv或xml.我可以像这样 "动态地"列出它们,但我希望将它们全部放在一个文件中.有谁知道如何做到这一点?

java rules list sonarqube

9
推荐指数
2
解决办法
2万
查看次数

IIS 7重写规则抛出HTTP错误403.14 - 如果文件夹存在则禁止

我有一个由php路由的网站.

我把它放在web.config文件中:

<rewrite>
  <rules>

    <!-- Quitar los slash '/' del final de la ruta -->
    <rule name="RewriteRequestsToPublic">
      <match url="^(.*)$" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
      </conditions>
      <action type="Rewrite" url="/{R:0}" />
    </rule>

    <!-- la ruta /cursos/ directamente la redirigimos para que no dé error 403.14 al intentar 'explorar' el directorio -->
    <rule name="cursos redirect" stopProcessing="true">
      <match url="^cursos$" />
      <action type="Rewrite" url="/index.php/{R:1}" appendQueryString="true" />
    </rule>

    <!-- Si el archivo o carpeta solicitado no existe, se realiza la petición a través de index.php -->
    <rule …
Run Code Online (Sandbox Code Playgroud)

php iis iis-7 rules

9
推荐指数
1
解决办法
626
查看次数

Eslint 和更漂亮的操作符-换行规则冲突

我有一些 eslint 和漂亮的配置。当我按 ctrl + s 来保存我的代码时,我的 eslint 正在尝试将代码格式化如下:

        (errors.password
            && (errors.password.type === 'minLength'
            || errors.password.type === 'maxLength') && (
              <Styled.Error className="invalidForm">
                Password must be more than 6 and less then 32 digits
              </Styled.Error>
          ))
            || (errors.password && (
              <Styled.Error className="invalidForm">
                Password is required
              </Styled.Error>
            ))
Run Code Online (Sandbox Code Playgroud)

在那之后,漂亮的也立即将代码格式化为:

        (errors.password &&
            (errors.password.type === 'minLength' ||
              errors.password.type === 'maxLength') && (
              <Styled.Error className="invalidForm">
                Password must be more than 6 and less then 32 digits
              </Styled.Error>
            )) ||
            (errors.password && (
              <Styled.Error className="invalidForm">
                Password …
Run Code Online (Sandbox Code Playgroud)

conflict rules reactjs eslint prettier

9
推荐指数
1
解决办法
5647
查看次数