我遇到了DRY原则(不要重复自己)的问题,并最大限度地减少了围绕Rete规则引擎的依赖性.
大型IT组织中的规则引擎往往是企业(注意资本"E" - 这是严肃的业务).所有规则必须表达一次,很好和DRY,并集中在昂贵的规则引擎中.一个组维护规则引擎,并且是规则集的守护者.
当该IT组织是美国保险公司的一部分时,往往会有很多规则.有些规则适用于所有州和产品,但每个州都倾向于为不同的产品制定自己的法律,因此规则需要反映这些怪癖.这些类别很多:精算,承保,甚至是来自第三方机构的订购信用和机动车报告.
从设计的角度来看,我所面临的问题是集中规则和处理当然是好的和干的,但是有成本:
许多其他企业技术(例如,B2B网关,ESB等)都会出现这些问题.
相同的企业集团也将SOA视为基本原则.但我对正确的服务设计的理解是,它们应该平铺业务空间并且是幂等的,独立的和孤立的.如果服务规则在其他地方维护,服务如何独立和隔离?
我想在简单性方面犯错,认为如果规则只能在孤立的情况下应用,那么消除依赖关系应该优先于集中化.我不确定这个论点会赢得胜利.
所以我的问题是:
这应该很简单,但显然不是.由于..Windows 3左右,有一个名为Phone或Phone&Modem的控制面板.在那个控制面板中有一堆关于调制解调器如何拨号的信息,假设你有一个调制解调器连接起来.例如,您是否需要拨打9才能离开,区号是什么,等等.如何以编程方式访问此信息?我正在使用C#.NET 2010.
简而言之,我想在运行时从规则库创建,编辑和删除规则.我很难弄清楚如何在流氓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调用.
在火力地堡公司的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与我的收藏和规则相匹配的内容.
我喜欢服务和数据库层的后端编程.主要是因为我从来没有弄清楚如何构建体面的用户界面.我在谈论GWT和Swing.
对我来说最大的痛苦是selecting the layout strategy,如果你能主要解决这个问题,那将会非常有帮助.
我需要比较两个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:忘了一件事!列表可以有不同的长度.但似乎所有三个当前答案仍然有效.
在我们的项目中,我们必须实现有关将某些对象映射到某些操作的业务逻辑.在某个操作最终得到解决之前,我们将为要验证的特定类型的对象提供一系列条件.换句话说,对于7种类型的对象,我们可以进行一系列操作(来自近45种动作).
我们正在考虑使用Drools写下上述规则.就效率而言,有没有人对使用Drools有一些积极/消极的经验?还有可以使用的jBPM框架(如果我没有弄错Drools在那里使用) - 任何人都熟悉该框架?也许您还有其他一些如何解决问题的想法?
我试图找到一种方法来获取所有Sonarqube Java(或其他)规则(带有键,描述等)的列表,并将其导出为Excel,csv或xml.我可以像这样 "动态地"列出它们,但我希望将它们全部放在一个文件中.有谁知道如何做到这一点?
我有一个由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) 我有一些 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)