2

問題があります。プログラムされた機能は複雑でユーザーに提供されるため、既存のテクノロジーの代替案を求めたいので、フロントエンドで可能な限りシンプルにする必要があります。Javaベースのテクノロジーが必要です。

私がしなければならないこと: 私はたくさんのデータを持つ基本的な構造を持っています。これらのデータは、ほとんどの場合、整数、日付、ブール値などのように適切に記述されているため、簡単に比較できます。

内部ビジネスプロセスや政府法などの多くのソースによって定義および変更できる要件のバッチを使用して、意思決定をモデル化する必要があります。

ですから、私はユーザーにスクリプト機能を提供することを考えています(ほとんどのユーザーは大学の学位を持っているので、多少の複雑さは問題ありません)。
簡単な例を見てみましょう。
Aを次のような構造とします。
A.budget-整数
A.bankRelatedDebt-整数
A.privateRelatedDebt-整数
A.deadLine-日付
A.hasPermissionFromGovernment-ブール値
A.hasProblematicContracts-ブール値

ルールが成立するか失敗するかを決定するために定義するルールが必要なので、ブール値を返す必要があります。
Rule1:予算が100万ユーロを
超えているRule2:問題のある文書がないか、政府からの許可があります
Rule3:期限は1か月以内になりません。
Rule4:全体的な債務(ローカル+プライベート)は100.000ユーロを超えない

これらのルールは他の場合にハードコーディングされる可能性がありますが、これは超動的であり、特定のデータに基づいている必要があります。

私たちはdroolsantlrのオプションを持っています。あなたが言及することができれば私は代替案が必要になるでしょう。または、避けるべきテクノロジーについて言及できれば、それも役に立ち、歓迎されるので、避けることができます。

4

5 に答える 5

1

それが価値があるもののために。私もそのようなエキスパートシステムをやりたいと思っているので、とりとめのないことを我慢してください。あなたが何を避けるべきかを尋ねたとき、最初にいくつかの否定的な点。

多くの落とし穴があります。

「プログラミング」はユーザーによって行われます。おそらく、復元用のバージョン管理システムはなく、ステージング システムもないかもしれませんが、本番システムで動作しています。共通のライブラリ ルールをテスト用に拡張することを考えてください。単体テストはありませんか?

次に、ユーザーの受け入れがあります。特に、競争相手である Excel プログラミングがあり、これに取って代わらなければなりません。人間が選択できるテキスト ブロック、図を使用してレポートを生成します。

番号が付けられていないルールにはまだ寿命がありません。システムは、選択するカテゴリを提供するのに役立ちます: ルール 1 - 金銭的リソースの制限。「限られたリソースを制限したいですか? (a) ルール 1、(b) ... .

また、商品は何ですか?利点は何ですか?目標は何ですか?レポート、計算シナリオ (what-if、計算された許容範囲)。

あなたがやっているように、私は確かに最初に上記の行に沿って技術文書を書き、ツール検索します。Drools は基本的すぎます。DSL の ANTLR は危険だと思います。

ツール

お探しのキーワードはデータマイニングのようです。

JVM プログラミング言語 Scala (簡単には習得できない) は、DSL や構文解析に生産的です。多くの関数型言語はもう少し簡単で、スクリプトも提供します (Java スクリプト API)。

おそらくjettyを組み込みWebサーバーとして使用するWebプロジェクトはどうですか。したがって、HTML と JavaScript を適用できます。HTML5?

リッチ クライアント プラットフォーム (Eclipse または NetBeans) を迅速に開発するには、経験が必要です。素敵なグラフィックの場合は、おそらく JavaFX (早すぎます)。

于 2013-03-20T13:42:12.187 に答える
1

GroovyまたはScalaを使用して、必要に応じて DSL を開発します。

CodeMirrorを使用して、Web ページで構文の強調表示を提供します。Groovy でうまく機能します。

于 2013-03-20T13:43:41.820 に答える
1

これは戦略パターンのようなもので、すべての異なるルールは Context(A) に適用される異なるアルゴリズムであり、アルゴリズムは実行時に選択できます。

それにフィルタ チェーンの設計パターンを追加して、異なるアルゴリズム (ルール) を同時に選択できるようにします。

Roolieは非常に単純な Java ルール エンジンであり、役に立つかもしれません。 Roolie が言うように:

Roolie は、Java で作成したルールを使用する非常に単純な Java ルール エンジン (非 JSR 94) です。基本的なルールを作成し、それぞれに 1 つの「パス」メソッドを実装してから、それらを XML ファイルにまとめて、より複雑なルールを作成します。

于 2013-03-20T13:46:56.660 に答える
1

私はひどい経験があるのでよだれに反対票を投じますが、好きな人もいます.
Java に既に組み込まれている言語、JavaScript を提案します。なんで?

  • シンプルで、Java Bean に簡単にアクセスできます。budget.getDealLine() の代わりに、budget.deadLine を使用できます。
  • 情報をチェックする場所がたくさんあります
  • 簡単な機能を追加して、より使いやすくすることができます

ただし、JavaScript、Python、Drools、ANTLR を選択した場合は、次のことを覚えておいてください。

  • ユーザーは SVN/GIT のようなバージョン管理システムを持っていないため、それを実現するのはあなた次第です。
  • 作成したすべてのスクリプトのすべてのバージョンを自動的に保存するツール (Web ページなど) を提供します。
  • 何も傷つけずに書いたものをテストする方法を彼らに与えてください。
  • 彼らが行った変更をロールバックするためのツールを彼らに与えてください。
  • コードをコミットしたら、実行する前にできるだけ多くの静的テストを行います。
  • 構文の強調表示は、それらをより幸せにします。

そして覚えておいてください: 彼らはあなたが予期しない方法でツールを使用し、あなたはほとんどのスクリプトを作成 (または再作成) することになります。大学の学位がないということは、彼らが何をしているかを理解していると信頼できるということです。(CSでさえない!)

したがって、システムの動的性を低くすることができれば、それはあなたの利益になります

于 2013-03-20T13:48:51.213 に答える
0

データベースにレコードがある場合は、一致するレコードを SQL 構文で選択できます。

例えば:

SELECT * FROM data
    WHERE budget > 100000
      AND privatCredits < 50000
于 2013-03-20T13:26:31.540 に答える