問題タブ [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.

0 投票する
2 に答える
13067 参照

postgresql - PostgreSQL のルールと nextval()/serial の問題 (非常に PostgreSQL 固有)

1 つのテーブルへの挿入を他の 2 つのテーブルへの挿入に分割する書き換えルールを使用すると、挿入された値の 1 つがデフォルトとして nextval('some_sequence') として両方のテーブルで同じシーケンスを持つ場合、挿入されたデフォルト値は二つのテーブル。これはおそらく、書き換え規則による単純なテキスト置換によるものです。代わりに、デフォルト値が最初に解決され、次に同じ値が両方のテーブルに書き込まれることを望んでいました。

ここに例があります(おそらくご想像のとおり、私はルールを使用して特殊化/一般化を実装しようとしています):

第 1 種の子に固有のデータは、

次に、上記の両方のテーブルを結合するビュー Children1 を定義しました (ドキュメントに従ってビューを定義するために PostgreSQL が行うことを明示的に記述して、ビューを書き直しました)。

最後に、私が問題を抱えている書き換えルール:

でデータを挿入しようとしています

エラーメッセージが表示されます

これを解決する方法は、書き換えルールの 2 番目の挿入を次のように置き換えることです。

しかし、これは属性 1 の一意性に依存しているため、強制したくありません。もう 1 つの解決策は、最初に値を一時テーブルに挿入し、次に 2 つのテーブルへの挿入のためにそこから 2 回選択することです。しかし、パフォーマンス上の理由から、私はそれが好きではありません。

両方のテーブルで同じデフォルト値を取得する方法を別のアイデアを持っている人はいますか (トリガーではなくルールを使用するだけです)。

0 投票する
0 に答える
1443 参照

visual-studio - StyleCop 固有の構成 / MSBuild & Visual Studio のさまざまな動作

これは、特定の StyleCop 構成の問題です。

Visual Studio .Net ソリューション フォルダーに合計 2 つの Settings.StyleCop ファイルがあります。

1 つ目は、チーム用に選択されたルールとともにフォルダ ルートに配置されます。

特定のプロジェクトのいくつかのルールを無効にしたいので、対応するプロジェクト フォルダーに別の Settings.StyleCop ファイルを配置しました。

結果は次のとおりです。

  • Visual Studio IDE (Run StyleCop) から分析を起動すると、プロジェクト固有のファイルが考慮され、違反は発生しません。
  • StyleCopCmd (コマンド ツール) から解析を起動すると、プロジェクト固有のファイルが無視され、違反が発生するようです。
  • MSBuild ターゲットから解析を起動すると、プロジェクト固有のファイルも無視されるようで、違反が発生します。

とは異なる結果になるように StyleCop 構成で何かを見逃しましたか?

使用しています: Windows XP StyleCop 4.3 MSBuild 3.5 SP1 MSBuild 拡張パック 3.5.0.0 StyleCopCmd 0.2.1.0

問題は StyleCop 4.3.1.3 および MSBuild Extension Pack 3.5.3.0 でも同じようです。

よろしく、

オリビエ。

0 投票する
1 に答える
506 参照

.net - WF ルールと CodeTypeReferenceExpression

いくつかの変数をワークフローのクラスに移動しました。

残念ながら、ルールが失敗したため、タイプを設定しようとしましたが、このエラーが発生し続けます。

アクティビティ 'ifRequestComplete' の検証に失敗しました: プロパティ "Condition" の値が無効です。条件式が無効です。指定されたタイプ名 ("Request, ApprovalWorkflow") を解決できません。

「ns0:CodeTypeReferenceExpression Type=".."/>」がないと、このエラーが発生します

アクティビティ 'ifRequestComplete' の検証に失敗しました: プロパティ "Condition" の値が無効です。条件式が無効です。タイプ「ApprovalWorkflow.ApprovalFlow」のフィールド「gReq」が存在しないか、アクセスできません。

Request クラスは、ワークフローと同じプロジェクトの ApprovalWorkflow 名前空間に作成され、ApprovalWorkflow という名前も付けられます。

.rules ファイルにはこれが含まれています

タイプ「Request」、「ApprovalWorkflow.Request」、「ApprovalWorkflow.Request、ApprovalWorkflow」を記述するいくつかの異なる方法を試しましたが、何も機能しないようです。

助けてください。

0 投票する
1 に答える
2245 参照

build - ワイルド文字%はmakefileルールでどのように機能しますか

私はmakefileを持っています。

src1とsrc2の下のソースファイルからC:/bin/の下にターゲットのセットを構築する必要があります。

それらを順番に要求させてください

$ {DEST_DIR} / ao $ {DEST_DIR} / bo $ {DEST_DIR} / co $ {DEST_DIR} / do

makefileの一部で

DEST_DIR = C:/ bin

SRC_DIR1 = C:/ src1

SRC_DIR2 = C:/ src2

そして私はそれらのためのルールを次のようにしています

#rule#1

$ {DEST_DIR} /%.o:$ {SRC_DIR1} /%.c

#rule#2

$ {DEST_DIR} /%.o:$ {SRC_DIR2} /%.c

acとbcがSRC_DIR1にあり、ccとdcがSRC_DIR2にあるとします。

私がビルドすると、aoとboの場合はrule#1に、次にcoの場合はrule#2に移動して、正常にビルドされます。

大丈夫だとは思っていませんでした。私はそれがcoのルール#1に行き、「ターゲットccを作成するルールがありません」というエラーをスローすることを期待していたからです。しかし、それはルール#2に当てはまり、SRC_DIR2のccからcoを構築します。

誰かがそれがどのように機能するかを私に説明できますか?この場合、ワイルドカード文字はどのように機能し、%ルールの一致はどのように発生しますか?

0 投票する
1 に答える
374 参照

design-patterns - 持続性パターン - ルールベースのオブザーバー

次のいずれかの変更をユーザーがサブスクライブできるアプリに機能を追加しようとしています。

  • 別のエンティティへ (任意のユーザーによる)
  • 別のユーザーによって (他のエンティティに対して)
  • 2 つの組み合わせ (この最後の 1 つはオプションですが、問題がより難しくなります)

これらのルールをデータベースに保持する最善の方法を考えています。

私は当然、特定のエンティティ (ユーザー自体を含む) ごとに傾向があります。追加の UserSubscription テーブル/エンティティ (たとえば、PublisherUserSubscription、BookUserSubscription、UserUserSubscription) を追加します。

これは、整合性が適用された状態でサブスクリプションが永続化されることを意味します。ただし、これは、必要なテーブルの数の点ですぐに膨張し、後でサブスクリプション モデルを変更すると、非常に脆弱な設計になる可能性があるようです。(既存のすべてのテーブルを更新する必要がある場合があります)。

これはかなりありふれた現実世界のシナリオであることを考えると、これにはいくつかのパターンがあると思います。誰でもいくつか提案できますか?

0 投票する
2 に答える
816 参照

parsing - 構文解析ルール - 一緒にうまくプレイする方法

だから私はパーサーをやっていて、速度よりも柔軟性を優先し、文法を簡単に書きたいと思っています。 .)

トークンの固定セット (例: PLUS、DECIMAL、STRING_LIT、NAME など) を使用して手作業でコード化されたレクサーがあり、現在、3 つのタイプのルールがあります。

  • TokenRule: 特定のトークンに一致
  • SequenceRule: 規則の順序付けられたリストに一致します
  • GroupRule: リストの任意のルールに一致

たとえば、トークン名 (おおよそ /[A-Za-z][A-Za-z0-9_]*/) に一致する TokenRule 'varAccess' と [式、TokenRule(PLUS)、式]。

式は、「割り当て」または「varAccess」のいずれかに一致する GroupRule です (私がテストしている実際のルールセットはもう少し完全ですが、例ではそれで十分です)

しかし、今、私が解析したいとしましょう

そして、パーサーがルール Expression で始まるとしましょう (それらが定義される順序は重要ではありません - 優先度は後で解決されます)。そして、GroupRule 式が最初に「代入」を試みるとしましょう。次に、「式」は「代入」で一致する最初のルールであるため、式を再度解析しようとします。スタックがいっぱいになり、コンピューターが - 予想どおり - キラキラした segfault で単にあきらめるまで、同様の処理が繰り返されます。

だから私がしたことは - SequenceRules は最初のルールに「葉」として自分自身を追加し、ルート以外のルールになります。ルート規則は、パーサーが最初に試行する規則です。それらのいずれかが適用されて一致すると、一致するまで、各リーフを 1 つずつサブ適用しようとします。次に、一致するリーフのリーフを試行し、一致するものがなくなるまで試行します。

次のような式を解析できるように

ちょうどいい =) さて、興味深いものです。このコード:

解析しません。何が起こるかというと、var1 が解析され (varAccess)、代入がサブ適用され、式が検索され、「括弧」が試行され、開始され、「(」の後の式が検索され、var2 が検出され、「+」がチョークされます。 ')' を予期していたためです。

「var2 + var3」と一致しないのはなぜですか? (そして、質問する前に、「追加」SequenceRule があります)。'add' はルート規則ではなく (parse-expression-beginning-with-expression などによる無限再帰を避けるため)、葉は SequenceRules でテストされないため、そうでなければ次のようなものを解析します。

なので

(たとえば、'1 = 3' は add が期待する式であり、varAccess a のリーフです)

一方、左結合にしたいのですが、たとえば、次のように解析します

とにかく、SequenceRules 内で「1 + 2」などの式を解析できるはずであるという問題が発生しました。何をすべきか?SequenceRules が TokenRule で始まる場合、それに含まれる GroupRules がリーフについてテストされるという特別なケースを追加しますか? その特定の例の外でも、それは理にかなっていますか? または、葉についてテストする必要があるかどうかを、SequenceRule の各要素で指定できるようにする必要がありますか? あなたの考えを教えてください(システム全体を捨てることを除いて - それはおそらく数ヶ月以内に起こります)

PS: どうか、どうか、「この 400 ページの本を読みに行ってください。さもないと、私たちの時間にふさわしくありません」などと答えないでください。わかった?前もって感謝します。

0 投票する
4 に答える
3413 参照

c# - Java および C# 環境でのルールベースのシステム

C# と Java (化学アプリケーション用) の両方で実行および開発できる「ルールベース」のシステムを構築する必要があります。システムは、(既存のライブラリを介して) オブジェクトの計算されたプロパティを取得し、それらの値を決定できる必要があります。システムがどのようになるかはわかりませんが、ルールが正式に一貫している必要はありません (多くのヒューリスティックを使用します)。ユーザーと開発者がエンジン (オープン ソースであり、両方のプラットフォームで実行する必要があります) について知らなくてもルールを変更できるように、可能な限りルールを外部化する必要があります。自然言語に似た限られた一連のコマンドによってシステムが実行される可能性があります。適応の要素があります-新しいオブジェクト(または少なくとも語彙)を追加できます。

これは思ったほど難しいことではありません.FORTRANを使用して30年以上前に大きな進歩がありましたが、この分野は休眠状態にあります. エントリのオーバーヘッドがわずかな場合に実験できるアプローチへのポインタをいただければ幸いです。機能する可能性のあるアプローチには、次のものがあります。

  1. プロローグ
  2. OWLオントロジー
  3. 決定木
  4. RULEML
  5. テキストベースのゲーム

編集 質問の主な側面は、ルールベースのシステムを見つけることです(Java C#の言及は二次的なものであり、単に「Windowsには組み込みシステムがあります」と言うかもしれない回答を防ぐためでした.)変換へのアプローチで答えないでください. Java から C#; 原則として、どちらにも実装できるルールベースのアプローチが必要です。これまでのところ、1 つ (または 2 つ) の回答のみが実際にルールの側面に対処しています。

0 投票する
2 に答える
1027 参照

delphi - DelphiWindows7アプリを開発するためのルール

Windows 7用のDelphiアプリケーションを開発するために従うべき最良のルールセットはどこにありますか?

0 投票する
2 に答える
2563 参照

list - Drools ルールで、2 つの異なる ArrayList オブジェクトを使用する方法、obj1 はルール 1 で使用され、obj2 はルール 2 で使用されますか?

私は ksession.insert(list) を実行しています。その後、drl ファイルでルール 1 を起動し、次に ksession.insert(list) を実行して、drl でルール 2 を起動する必要があります。

誰かがこれを達成する方法を教えてもらえますか。アジェンダフィルターとファクトハンドルについて読みましたが、これを機能させる方法がよくわかりません

以下はいくつかのコードです:

ArrayList リスト = 新しい ArrayList(); list.add(product1); list.add(product2); list.add(product3);

ksession.insert(リスト);
ksession.fireAllRules("drl でルール 1 を起動");

// リストを削除しますか?

ArrayList list2 = new ArrayList(); list2.add(str1); list2.add(str2); list2.add(str3);

ksession.insert(list2); ksession.fireAllRules("drl でルール 2 を起動");

0 投票する
5 に答える
965 参照

java - Web アプリでユーザー制約をモデル化する際のベスト プラクティスは?

Acegi (Spring) セキュリティを使用して、ロール ベースのアクセス制御を備えた Web アプリケーションを構築しています。したがって、ロールを持つさまざまなユーザーがいます: ROLE_ADMINROLE_USERなど。
ただし、さまざまなユーザー制約を実装する必要があります。

例を考えてみましょう:

ユーザーがオンラインで映画を視聴できるサイトがあるとします。と の役割ROLE_STANDARD_USERを持つユーザーがいますROLE_VIP_USER。標準ユーザーは週に 3 本の映画を視聴でき、VIP ユーザーは週に 10 本の映画を視聴でき、その他の特典もいくつかあります。また、標準ユーザー グループには、1 週間に 2 本の映画を追加で提供したいユーザーが 1 人います。許可される動画の数は変更される場合があります。
また、映画にはさまざまなカテゴリがあります。ファンタジー、コメディ、クラシック、新しい映画などです。役割に関係なく、一部のユーザーが特定のカテゴリにのみアクセスできるようにしたいと考えています。カテゴリは動的に作成および削除できます。

このようなタイプのユーザー制約を実装するための標準的な方法はありますか?
Spring Security のロールとパーミッションを使用して実行できますか?
または、ルール ベースのエンジンをアプリに追加することを検討する必要がありますか?

ありがとうございました。

編集:
上記の例は架空のものです。私のプロジェクトは、学生にさまざまなネットワーク (およびその他の) 機器へのリモート アクセスを許可することに関係しています。ただし、ユーザー制約の種類は同じである可能性があります。
残念ながら、ユーザー アクセスと制約のモデルは完全ではなく、安定していません。近い将来、ユーザーにさまざまな追加の制約を実装するように言われるかもしれませんが、それは現在知られていません。
したがって、将来的に新しいユーザー制約の追加または変更が容易になり、内部モデルやデータベース構造の大幅なオーバーホールを必要としないパスを選択したいと思います。それができれば。

編集 2

現在、基本的なユーザー制約はハードコーディングされています (プロトタイピング システムの残り物)。最初に何らかのパラメーター化されたビジネス サービス オブジェクトにリファクタリングしてから、そこからどこへ行くことができるかを考えてみようと思います。また、Spring Security Authorization Decision Manager の使用も検討します。

すべての提案に感謝します!