問題タブ [business-rules]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - プロパティのアクセシビリティの場合、ビジネス ルールをどのようにテストしますか?
これがキャッチです。という名前のフィールドを持つビジネス オブジェクトがありますRegisterDate
。通常のビジネス ルールでは、一度設定すると変更することはできません。
このフィールドをプロパティとして実装し、セッターを保護されたものとして定義して、オブジェクトの作成後にユーザーがそれを使用 (および設定) できないようにすることを最初に考えました。しかし、しばらく考えた後、プロパティのアクセシビリティ ルールにビジネス ルールを忍び込ませました。
2 番目に考えたのは、プロパティ セッターをパブリックのままにし、設定時に例外を実装することでした。これにより、ビジネス ルールがかなり明確になります。誰かがプロパティを設定しようとするたびにプロパティが例外をスローすることを期待するテスト ケースがあります。
ええと、しかし、それは動作を回避するための定型文です。結局のところ、コードの他の部分での誤用さえも回避して、物事を保護しないのはなぜですか? しかし、別の開発者が誤ってプロパティのアクセシビリティを変更し、再度公開して、ビジネス オブジェクトのユーザーがビジネス ルールに違反してこのフィールドを使用し始めたらどうなるでしょうか。
この状況に最適なアプローチは何ですか? この問題をどのように解決しますか?
documentation - 無料の「ビジネスルール」ツール?
私は、会社で頻繁に使用されているレガシー プログラムのビジネス ルールをキャプチャする任務を負っています。
始まろうとしていたので、Excel を起動して入力を開始しました。この情報を入力するためのカスタマイズされたツールがあればもっと良いだろうと気付くのに、非常に短い時間しかかかりませんでした.
これは私にとって新しいタスクなので、存在しないソフトウェアや高価なソフトウェアを望んでいるかどうかはわかりません。しかし、ビジネス ルールを入力するための優れた無料ツールを知っている人がいるかどうかを尋ねても問題ないと思いました。
drools - Guvnor ルールのエンコーディング
Excel に Drools デシジョン テーブルがあり、ルールで使用される文字列の一部に「Á」文字が含まれています。このデシジョン テーブルから Guvnor でルール パッケージをビルドすると、ルール ソースに間違った文字が表示されます。
例えば、
スプレッドシート -> Área de Lazer|POR、
ビルドされた drl ファイル内 -> �rea de Lazer|POR
この場合、UTF-8 をサポートするように Guvnor を調整する方法はありますか? 誰かが同様の問題に直面していましたか?
ありがとう
@ジェフリー・デスメット
やあ、
次のコードを ExcelParser.java に追加しました。
git-hub から drools プロジェクトを正常にビルドしましたが、これをテストするために guvnor-webapp をビルドしようとすると、maven 2.2.1 または maven 3.0.3 で同じエラーが発生します。
[エラー] 致命的なエラー [情報] ------------------------------------------ ------------------------------ [情報] org/apache/commons/io/IOUtils org.apache.commons.io. IOUtils [情報] ---------------------------------------------- -------------------------- [INFO] java.lang.NoClassDefFoundError: org.codehaus の org/apache/commons/io/IOUtils をトレースします。 mojo.gwt.AbstractGwtMojo.checkGwtUserVersion(AbstractGwtMojo.java:289) org.codehaus.mojo.gwt.AbstractGwtMojo.getGwtUserJar(AbstractGwtMojo.java:251) org.codehaus.mojo.gwt.shell.CompileMojo.compile(CompileMojo. java:268) org.codehaus.mojo.gwt.shell.CompileMojo.doExecute(CompileMojo.java:255) で org.codehaus.mojo.gwt.shell.AbstractGwtShellMojo.execute(AbstractGwtShellMojo.java:119) で org.apache .maven.plugin.DefaultPluginManager.org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) で executeMojo(DefaultPluginManager.java:490) org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) で org.apache .maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java) :348) org.apache.maven.defaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) で org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) で org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) sun.reflect.NativeMethodAccessorImpl.invoke0 (ネイティブ メソッド) で.invoke(Method.java:597) org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) org.codehaus.classworlds.Launcher.launch(Launcher.java:255) org.codehaus.classworlds. org.codehaus.classworlds.Launcher.main(Launcher.java:375) の Launcher.mainWithExitCode(Launcher.java:430) 原因: java.lang.ClassNotFoundException: org.apache.commons.io.IOUtils at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader. java:190) で java.lang.ClassLoader.loadClass(ClassLoader.java:307) で org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195) で org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java) :255) org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274) で org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) で java.lang.ClassLoader.loadClass(ClassLoader.java: 248)URLClassLoader$1.run(URLClassLoader.java:202) で java.security.AccessController.doPrivileged(Native Method) で java.net.URLClassLoader.findClass(URLClassLoader.java:190) で java.lang.ClassLoader.loadClass(ClassLoader.java) :307) org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195) で org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255) で org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm. java:274) org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) で java.lang.ClassLoader.loadClass(ClassLoader.java:248) でURLClassLoader$1.run(URLClassLoader.java:202) で java.security.AccessController.doPrivileged(Native Method) で java.net.URLClassLoader.findClass(URLClassLoader.java:190) で java.lang.ClassLoader.loadClass(ClassLoader.java) :307) org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195) で org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255) で org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm. java:274) org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) で java.lang.ClassLoader.loadClass(ClassLoader.java:248) でfindClass(URLClassLoader.java:190) で java.lang.ClassLoader.loadClass(ClassLoader.java:307) で org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195) で org.codehaus.classworlds.DefaultClassRealm.loadClass (DefaultClassRealm.java:255) で org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274) で org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) で java.lang.ClassLoader.loadClass( ClassLoader.java:248)findClass(URLClassLoader.java:190) で java.lang.ClassLoader.loadClass(ClassLoader.java:307) で org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195) で org.codehaus.classworlds.DefaultClassRealm.loadClass (DefaultClassRealm.java:255) で org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274) で org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) で java.lang.ClassLoader.loadClass( ClassLoader.java:248)DefaultClassRealm.loadClass(DefaultClassRealm.java:274) at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) at java.lang.ClassLoader.loadClass(ClassLoader.java:248)DefaultClassRealm.loadClass(DefaultClassRealm.java:274) at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
これに関するヘルプをいただければ幸いです。
ありがとうございました!
PS README ドキュメントを読み、説明どおりに進めました。
rule-engine - ルールエンジンを理解するために解決すべき課題や問題が必要
ルールエンジンを実際に使って理解を深めたい。RuleEngine なしでは解決が困難な、ある種の割り当てまたは問題ステートメントを誰かが提案してくれませんか。割り当てには WWF (Windows Workflow Foundation) ルール エンジンを使用する予定です。
java - drools-guvnor を理解する
重複の可能性:
drool guvnor にアクセスするための Java コード
ルール (.drl ファイルに記載) が Java コードで呼び出され、(Drools-Guvnor を使用して) 処理される例を提供して、誰か助けてください。
drools を理解するための私の以前の試みは、Drools guvnor の動作を理解することでした。そこでは、その基本的な機能を理解しましたが、Java プログラムに drools-guvnor を組み込む方法の例を使用して、その完全な動作を学びたいと思います。
前もって感謝します
java - デプロイ プロセスに BPEL を使用する
ビジネス ルール エンジンのようなシステムに取り組んでいます。ルールは開発環境で作成され、実行され (SQL コードが生成されます)、DEV でテストされます。その後、ユーザーがオンデマンドで実行し、レポートを作成できるように、運用環境にデプロイされます。展開プロセスには、次のようないくつかの手順とチェックが含まれます。
- ビジネス ルールの XML 定義を取得する
- DEV で使用されているすべての「ルール ディクショナリ」条件を検証し、本番環境に存在します (これは「ディクショナリ」Web サービスに対して行われます)。
- prod で初めて各ルールを実行します (これは「ルール実行」Web サービスを介して行われます)。
- 本番環境の特定のカウントと KPI の数値が特定の範囲内にあることを確認します .....(さらに 4 つの手順)
私は BPEL を初めて使用しますが、BPEL がこのプロセスを自動化するのに適しているかどうか疑問に思っていました。それともやり過ぎですか?そうでない場合、これを自動化するために何をお勧めしますか?
ありがとう!
entity-framework-4.1 - Entity Framework のエンティティにビジネス ルール コントラクトを適用する際のアドバイス
同僚の助けを借りて、ビジネス ルールをエンティティに適用する方法を考え出しました。ルールを定義するコントラクトをエンティティに注入しています。これ自体はうまく機能しますが、Entity Framework は気に入りません。その理由は、基本エンティティのコンストラクターにパラメーターを導入したためです。EF がパラメーター化されたコンストラクターを好まないのには、正当な理由があります。コントラクトを示すコードを次に示します。
いくつかの検証をエンティティのプロパティに直接適用したり、流暢な API を介して適用したりできることは知っていますが、これはビジネスに関連するというよりは持続性に関連しているように思えます。たとえば、データ側で、説明列の長さは 255 文字であると仮定しますが、ビジネス ニーズでは 100 文字しか許可されません。データベース/モデルの作成中に、初期永続性関連の属性を定義できます。コントラクトのアイデアはとても気に入っていますが、Entity Framework で機能するとは思えません。私が持っていた他の唯一の考えは、エンティティと EF の間にコントラクト (またはビジネス クラス) を配置することでした。私の DAL はエンティティをビジネス ルール クラスに渡し、すべてが問題なければサービスに渡すか、その逆を行います。エンティティに適用されるビジネスルールに関して、誰かがこれよりも優れたアプローチをとることを望んでいます
c# - C# でのルール エンジンの設計と例
私は現在、c# を使用して .net アプリケーションを作成しており、いくつかのルールをチェックし、ルールの合格または不合格に基づいてアクションを実行したいと考えています。だから私は良いおっと原則に準拠して再利用できる一般的なソリューションを実装しようとしています。これにより、ルール エンジンを作成する必要があるという結論に至りました。
私は c# について十分な知識を持っていますが、ルール エンジンを作成する必要があったのはこれが初めてなので、そのようなエンジンの設計と開発に関する研究の一環として、そのようなエンジンの作成に関するヒントを探しています。私が見ることができる例が他にあるとすれば、さらに素晴らしいことは何ですか? c#/.net ルール エンジン アプリケーションはありますか? 典型的な 3 層アーキテクチャのどの層に配置する必要がありますか? 私はコードプレックスとグーグルコードをざっと見ましたが、どれも私に飛びつきませんでした! したがって、いくつかの方向性は素晴らしいでしょう。
rule-engine - デシジョンテーブルの代替
私たちのアプリは急速に成長しています。そこで、ロジックの一部をコードから分離する方法として、ビジネスルールの調査を開始しました(大きなDAAAH;)。主な目標は、ビジネスマンが何も再コンパイルせずにルールを編集および展開できるようにすることです(別の大きなDAAAH)。これまでのところ、ビジネスがルールを管理する方法として、「デシジョンテーブル」への参照しか見つかりませんでした。問題は、私がデシジョンテーブルの概念を私たちのビジネスに導入しようとして、控えめに言っても非常に「混合」の応答を得たということです:)要するに、彼らはそれらを理解したくないのです。質問:デシジョンテーブルに代わるものはありますか?営業担当者にとって理解しやすいものはありますか?