問題タブ [business-logic]
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.
business-logic - BAとしてJD Edwardsツールを学ぶ
誰かが私を助けてくれたら最高です。私はBA/BPMです。ビジネスの知識はありますが、一般的なプログラミング言語でのコーディング経験はありません。私の利益と容易さのために、私は通常、DB2、Oracle などの会社が使用するテクノロジーの基本を取得します。私はそれにさらされることはありません。
これにアプローチする最良の方法は何ですか。Oracle Web サイトでいくつかのバージョンを見てきました。- どのバージョンをダウンロードして慣れることができるかについて (低い方が学習に適していますが、構造や何かに大きな変更がある場合は注意が必要です)。- これは、特に初心者向けの優れた本/ドキュメントです。エンドユーザーとビジネスエンド。-誰が行うのが最善の方法ですか。cognosの場合、単一のマシンにインストールし、レポートを公開して動作の概要を取得するまで、データベースにテーブルを作成しました。そして、概要を把握したら、ビジネス/ロジカルは主に私の仕事の場所であり、これは私がほとんどの時間をプレイする場所です.
これが長いことはわかっていますが、正しい方向へのポインターで十分です。
.net - LINQ で子コレクションに関連するビジネス ルールを実装する最もエレガントな方法は何ですか?
データベースに 2 つのテーブルがあります。
これらのテーブルには、1 (Wiki) 対多 (WikiUser) の関係があります。
LINQ エンティティ クラスに次のビジネス ルールを実装するにはどうすればよいですか。
「ウィキには必ず 1 人の所有者が必要ですか?」
次のようにテーブルを更新しようとしました:
これにより制約が強制されますが、所有者の WikiUser レコードを Wiki の WikiUser コレクションから削除すると、醜い SqlException が返されます。これをキャッチして UI で処理するのは難しいようです。
SqlException が生成される前にこのチェックを実行する方法はありますか? データベースを構築するためのより良い方法は? SqlException をキャッチしてより便利なものに変換する方法はありますか?
編集:可能であれば、検証ルールをLINQエンティティクラス内に保持したいと思います。
編集2:私の特定の状況に関する詳細。
私のアプリケーションでは、ユーザーは Wiki からユーザーを削除できる必要があります。現在 Wiki の「所有者」としてフラグが立てられているユーザーを除いて、すべてのユーザーを削除できる必要があります (Wiki には常に 1 人の所有者が必要です)。
私の制御ロジックでは、次のようなものを使用したいと思います。
そして、壊れたルールを UI レイヤーに転送します。
私がしたくないことはこれです:
また、コードを自分のリポジトリに移動したくない (ネイティブの Remove 関数を使用しないように指示するものがないため) ため、次のようなコードも必要ありません。
これは受け入れられるでしょう:
しかし、これはあまりにも多くのエラーをキャッチします:
また、ビジネスルールチェックを明示的に呼び出すことはお勧めしません (必要になるかもしれませんが):
c# - ビジネスオブジェクトのIDは読み取り専用である必要がありますか?
私の考えでは、ビジネスオブジェクトのIDフィールドは読み取り専用(publicgetおよびprivateset)である必要があります。これは、定義上、IDが変更されることはないためです(データベース内のレコードを一意に識別するため)。
これは、新しいオブジェクト(IDがまだ設定されていない)を作成するときに問題を引き起こします。たとえば、新しく作成されたIDを返すストアドプロシージャを使用してデータベースに保存し、IDプロパティが読み取られた場合にオブジェクトにどのように保存しますか。 -それだけ?
例:
Saveメソッド(実際にデータベースに接続して新しい従業員を保存する)は、このプロパティが読み取り専用の場合(EmployeeIdが作成されると変更されないため)、EmployeeオブジェクトのEmployeeIdプロパティをどのように更新しますか。
Idは、DALによって書き込み可能であり、他の世界では読み取り専用である必要があるようです。特にDALクラスとビジネスオブジェクトクラスが異なるアセンブリにある場合、これをどのように実装しますか?
このクラスはデータベースとは何の関係もないはずなので、EmployeeクラスにSaveメソッドを作成したくありません。
asp.net-mvc - ASP.NET MVC および Entity Framework でモデルを拡張するにはどうすればよいですか?
私の最初の ASP.NET MVC アプリケーションでは、モデルはテーブルとクラスの間の単純な O/R マッピングであり、Entity Framework によって管理されていました。
ここで、このスケルトンに肉付けを追加し、生成されたクラスのビジネス メソッドを導入したいと思います。ASP.NET MVC (Entity Framework を使用) でこれに推奨されるアプローチは何ですか? 私のお気に入りは、同じドメイン ロジックをデスクトップ クライアントでも再利用できるように、ASP.NET MVC 参照なしでサービス層でも使用できるソリューションです。
技術的には、O/R クラスを更新する必要がある場合でも、追加のビジネス ロジックを保持する方法で、生成されたクラスを拡張できるはずだと思います。(ただし、これはEntity Frameworkに関連する質問です。)
編集: 貢献と、Entity Framework (4.0) の次のバージョンに関する情報に感謝します。2 セットのクラスを作成します。1 つは永続レイヤーのデータを表すために自動生成され、もう 1 つは実際のビジネス ロジック用です。
sms - SMS - 破産を回避するには?
ユーザーが携帯電話番号を入力する必要がある新しい Web サイトをコーディングしています。私が直面している問題は、ユーザーが実際に所有者であること (またはこの場合はアクセス権があること) を確認する必要があることです。携帯電話番号。
私が思いついた解決策は、番号の送信時にトークンを含む SMS を送信し、Google カレンダーと同じように、ユーザーに私の Web サイトでトークンを入力するように依頼することです。ただし、予算が限られているため、ユーザー A が 100,000 件の携帯電話番号を送信しないようにする必要があります。送信された SMS ごとに約 0.10 米ドルの費用がかかるため、すぐに倒産してしまいます。
これまでのところ、次の解決策を考え出しました。
- CAPTCHA を使用する(一部のユーザーを遠ざけており、手動登録に対して依然として脆弱です)
- 特定の IP アドレス要求(動的 IP、プロキシなど)に対するトークンの数を制限する
- 特定の携帯電話番号に対して送信されるトークンの数を制限します (ユーザーは利用可能なすべての番号のトークンを要求でき、実際のユーザーが正当なトークンを要求しようとすると、その番号は既にブロックされています)
これらの解決策はどれも完璧ではありません。この問題にどのようにアプローチすることをお勧めしますか?
javascript - ユーザーの選択に応じたラジオ ボタンの有効化と無効化
ビジネスロジックに従って現在選択されているラジオボタンに応じて、ラジオボタンのみを有効にするjQueryを作成しようとしています。
基本的に、3 つのラジオ ボタンからなる 3 つのグループがあり、最終的には次のようになります (この例の HTML は冗長で申し訳ありませんが、これが私の言いたいことを示してくれることを願っています)。
難しいのは、表示するラジオ ボタンと有効にするラジオ ボタンを決定するために必要なロジックです。ユーザーは各グループから 1 つの選択肢を選択する必要がありますが、あるグループから別のグループに同じ選択肢を繰り返すことはできません。
理想的には、ユーザーがページにアクセスしたときに、すべてのラジオ ボタンが使用可能でありながら選択されていない状態です。
ユーザーが最初に (たとえば) グループ 3 で選択肢 2 を選択した場合、スクリプトはグループ 1 とグループ 2 の両方で選択肢 2 を無効にする必要があります。次に、ユーザーがグループ 2 の選択肢 3 を選択した場合、グループ 1 の選択肢 1 のみを有効にする必要があります。
どんな助けでも大歓迎です。この問題を解決するために書き込もうとしていた jQuery を投稿しますが、これについてはうまく行っていないと思います。ありがとう!
.net - 動的ビジネス ルールのアーキテクチャ
.NET で給与計算アプリケーションを作成しています。要件の 1 つは、出勤規則と控除規則が可能な限り動的で柔軟であることです。ユーザーは、すべての従業員が出席ルールにバインドされる独自のルールを定義できる必要があります。
1 つの解決策は、すべての出席規則のコードがデータベースに格納され、実行時にコンパイルされる C# コードをオンザフライでコンパイルすることですが、規則は技術者のみが読み取り/理解できるため、これは最も洗練された解決策ではありません。 、コードのパフォーマンスと可読性も可能な限り最高のものではありません。
スクリプトを記述したり C# コードを動的にコンパイルしたりせずに、出席規則を定義して適用し、それらに基づいて控除を計算できるソリューション \ アーキテクチャ パターンがあるかどうか疑問に思っています。
e-commerce - 税エンジンの例
Mac用のPOSソフトウェアを作成しており、税務エンジンの刷新を目指しています。今では非常にシンプルで、名前、コード、料金で構成される税金がすべての製品に個別に適用されます。これで十分な人もいますが、より高度な状況に対応するためのリクエストがたくさんあります。例としては、米国の市/郡の消費税、カナダの複合(積み上げ)税、フランスの環境税、ニューヨークの奢侈税があります。
これらの税金が持つ特徴のほとんどを特定し、一種のルールエンジンベースの実装に傾いています。すべてのケースをサポートする必要はありませんが、必要に応じて拡張できるようにしたいと考えています(別の書き換えを回避するため)。
以前にこのようなものを作った人からのアドバイスや、それをエレガントに解決しようとするプロジェクトの例を探しています。
java - 複数の値オブジェクトのビジネスロジック-ループをどこに置くか?
...そしてビューレイヤーへの成功/失敗のフィードバックを処理するための最良の方法。
オプションは次のとおりです。
また
一貫した方法で(つまり、値オブジェクトに対する単一または複数の操作から)成功/エラーフィードバックを受け取るビューレイヤーが必要であると仮定すると、最良のアプローチは何ですか?
明確化:
ビューレイヤーでビジネスロジック呼び出しからスローされた複数の例外タイプを処理すると、コードが重くなり、メンテナンスの問題も発生します(プレゼンテーションレイヤーが認識しない新しい例外が導入されます)。ビジネスロジック呼び出しでは、複数の値オブジェクトのエラーを処理し、ビューが一貫した方法で処理できるようにそれらを「パッケージ化」する方がよいようです。
error-handling - 多層アーキテクチャで一括操作を実行する際のエラーとフィードバックの処理
いくつかのオブジェクトに対して何らかの操作を実行できるビジネスロジックメソッドがあるとします。たぶん、リストから選択された人ごとに1回、宝くじ番号選択Webサービスに電話をかけたいと思うかもしれません。Javaでは、コードは次のようになります。
宝くじ番号のWebサービスには、その人が宝くじ番号を要求したことを記録する(おそらくアカウントに請求する)などの副作用がある可能性があるため、ある人のWebサービス呼び出しが失敗した場合でも、他の人のWebサービス呼び出しは成功した可能性があることに注意してください。この情報(宝くじ番号)は、より高いレベル(ビュー)にフィードバックする必要があります。
これが単一の操作が行われた場合、ビジネスロジックメソッドは単一の値(たとえば、宝くじ番号)を返すか、失敗の詳細を含む例外をスローする可能性があります。ただし、一括操作の場合、いくつかの操作が成功し、いくつかが失敗する可能性があります。
これは多くのアプリケーションで発生するタイプの問題のようであり、それを処理するためのクリーンな方法があるはずです。では、このタイプの情報をビジネスロジックレイヤーからアプリケーションの別のレイヤー(ビューなど)にフィードバックするための最良の方法は何ですか?できれば、さまざまなタイプのデータや操作に再利用できる一般的な方法でしょうか?