どのような原則のようなシステムに使われているOutlook Expressの作業理論的には?どうすればいすることはできますか。

StackOverflow https://stackoverflow.com/questions/2043546

  •  19-09-2019
  •  | 
  •  

質問

私は好奇心を持つことから始ます:

にMicrosoftsの展望エクスプレス(または望んだもん、Macユーザ)をいいます。一般規則:

を設定することができ、設定のルールを自動的に並べ替えや削除メールを備えています。でも強力な手軽に利用できます。

これらのルールを見たかのようになります:

場合"メール受信トレイには対象を含む'foo'、'bar'または'foobar'削除してください"

したいコードのようなものためのパワフルな検証システム。の開発は単に作成できるルールのようになります:

rule: [password_1] is_not_equal_with [password_2]
consequence: show_error '2921'

rule: [firstName] has_less_characters_than '2'
consequence: show_error '1211'

rule: [age] is_numeric, is_smaller_than '13', is_greater_than '130'
consequence: show_error '1522'

rule: [gender] is_equal_with 'female'
consequence: show_group [female_questions]

rule: [termsAndConditionsAccepted] is_not_checked
consequence: show_error '482'

rule: [age] is_less_than 21
consequence: hide_group [income_questions]

としているのか教えてくださいアイデアをどうすることが不可欠であるとしようとしていたように思い投稿しています。その前に少し話の枠組み:はありま書概念としてご利用できる基盤をルールに基づく検証システムです。行わない場合は、らかにすることが不可欠であると?

上の例では、角括弧は、html形式の要素となります。すべapostrophs"は、"ハードコードされた"価値とを比較します。

に定義されている規則に翻訳されPHPコードのJavaScriptコードの両方をクライアントとサーバ側のバリデーションを実施します。

特徴ことが可能でなければならな:

  • 条件付きルール:ないかなと思ったのがきっかけに依存していB
  • 値の比較:のための整数、浮き、文字列
  • を何らかの形でコントロールロジックがどのように"【男女別】is_equal_with女'"の例です。

どうすればここにするのか。その主たいと考えているかを科学的視点か?

私の理論的なコンセプトは、プラットフォーム独立しています。私をこのPHPとJavaScriptがあってはならない理由はなC++devに反応すべきではない;-) (私はObjective-Cのインスピレーショね)

役に立ちましたか?

解決

するためにチェックのopensourceルエンジン、も、支払がないため記載しておりません。

例として
支払うようにして下さい:
InRule, ビジネスルールエンジン, ASAビジネスルールエンジン

Opensource:
OpenRules, Drools

があります。一されておりjava(JavaルエンジンのAPI(JSR94))です。Net Windowsワークフロー財団ルエンジン

必要な場合は直PHPものです。

としての側面に使用しましたカップルでエンジンのように、 Haleyル 前も買ってOracleをweb UIです。この実行速度がくことが重要だということです。またHaley処理を2000年ルールページあたりの負荷(住宅ローンアプリで実行で約40msではない商品につけられたタ).使用したいかを決める分野のページとか入力されたデータと一致して、法定基準は、がっかりで入力します。

その他エンジンをはるかに遅いものくらい小さいルールを設定しよされているだけでインスタンスを生成します。

私も、書面に自分の小さなシステム。私の場合は使用javascriptをセットするだけで変数のデータからの投稿の前に実行するスクリプトが保存される。

このたperformant規模が小さいがいいのだけを簡単に行うことができるようになります。

他のヒント

小さな番号の規則およびメッセージで応募できるすぎアルゴリズム各ルールとは、それぞれのメッセージと比較されます。を取得しますO(rm 複雑性の場のルールおよびmは、数メッセージないでいることも念頭に置く必要が原則で複数の条件です。

膨大な数のルールやメッセージまで実施可能でReteネットワーク(http://en.wikipedia.org/wiki/Rete_algorithm).この間、一部のメモリがいかに早くなっております。によってデザインの仕方はどんな感じるまでの異なる複雑な.

最初のアプローチは簡単ではないと思いま説明しておく必要があるでします。ただし、困っている。について説明させていただき第二のアプローチ:

読約Reteアルゴリズムに行く前に。

アルファーの一部Reteネットワークってきますので個別の条件が表示される。一部のルールが共有しています。のように:

Rule1:IF(メッセージ。日equals24.10.2009)(メッセージ。タイトルを含む"こんにちは"していsomething1

Rule2:IF(メッセージ。hasAttachementはTRUE)、(メッセージ。日equals24.10.2009していsomething2

そのアルファ部分のネットワークから3要素

  • C1:(メッセージ。日equals24.10.2009)
  • C2:(メッセージ。タイトルを含む"こんにちは")
  • C3:(メッセージ。hasAttachementはTRUE)

ベータ純まって参加ノードリンクC1-C2、C3-C1.

の生産ノードのベータネットワークが含まれまでの一連の行為を実施することが必要である場合のメッセージを満たす条件をすべてのルール(アルファ)との整合性チェック(βせることはできません。

最も複雑な部品はベータ-ネットワーク.したい場合は、論理やルールなどの論理的なopは括弧)であるようにします。したい場合より複雑な構築しましょう書くコード、たくさんテストを行っております。

詳しい情報につRete:

  • 生産マッチングのための大きな学習システム--ロバート-BDoorenbos.(1995)
  • の効率的な生産システム/--チャールズL.Forgy(1979)

オブジェクト指向の設計では、1つのアプローチは、より複雑なニーズのために、インタプリタパターンをコマンドパターンを実装したりすること。あなたは、通常のルールの異なるカテゴリのためのいくつかのクラスを作成したい、とあなたは(たとえば、CompositeRuleを構築することにより)、より複雑なシナリオのためにそれらを構成することができます。それらの全ては、実行()または(コンテキスト)を実行などのインターフェースをサポートします。

あなたは、ルールインスタンスのキューを構築し、各オブジェクトが上の行動のためにそれらのそれぞれに実行(コンテキスト)を呼び出します。コンテキストは、あなたがに作用しているオブジェクト(メッセージ、またはフォーム、または何でも)のインスタンスを含むでしょう。

scroll top