私はフィールド技術者が作業指示書を閉じるためのインターフェースを構築し始めており、さまざまな顧客に必要なさまざまな紙のフォームがあります。フォームごとにページを設定し(すべて.Net 4.0/wpfで、悪い選択でない場合はcaliburn.microを使用する)、ルールに基づいて特定のページを自動的に表示できるシステムを構築したいと考えていました。私は、3つのボタン(戻る、次へ/終了、キャンセル)とフレームを備えたwpfフォームで構成される基本的なフレームワークを設定することから始めました。最終的には、必要なすべての情報を取得し、表示するページを決定し、それらを順番に表示し、ユーザーが[完了]をクリックしたときにデータベースを更新する識別子を渡すことができるオブジェクトが欲しいと思っています。
仕事を簡単にするために調査/学習する必要がある特定のこと、または完成品をより堅牢で信頼性の高いものはありますか?どのページを表示するかを決定するための良いアプローチは何でしょうか?ほとんどの場合、_Show this form if Customer is X
_のようなものに基づいていますが、必要に応じて、それよりも複雑(拡張可能?)にできるようにしたいと思います。最終的に、各ページ/フォームはおそらく、顧客の実際のフォームのPDFファイルを入力して生成します。日常的なもののように聞こえますが、個人的に実装または使用したことはありません私自身、それを行ったものは何でも、私は盲目になります。ホスティングウィンドウは、ページを表示する必要があるかどうかをページに尋ねますか?ページは自分で発言する必要がありますか?ホスティングウィンドウはデータオブジェクト全体をブール関数に渡す必要がありますShouldIShowYou()
そしてページを整理させますか?特定の「何か」のためにページを「登録」するための何らかのメカニズムがすでに整っている必要がありますが、それが何であるかはわかりません。かなり簡単に更新したいのですが、アプリはクリックワンスでデプロイされ、当面の間、ユーザーの総数は100未満になります。コレクションに新しいページオブジェクトとロジックを追加して再デプロイするだけではいけません。トラブルの原因になります。
私が持っていた他のいくつかの質問:
これを.netのトランザクションとして実装できます。ウィンドウ/オブジェクトの作成時にトランザクションを開始し、フレーム内の個々のページに独自のデータ作業を実行させ(共有wcfプロキシを介して)、コミットします。すべてがうまくいった後のトランザクション?
各ページはオブジェクトを構築するだけで、メインウィンドウはオブジェクトを返し、元のアプリケーションにデータを機能させる必要がありますか?例えばアプリケーションのセグメント全体をデータに対応させないようにします。これがうまくいくかどうかはわかりませんが、メンテナンスの悪夢のように聞こえます。
これは、この種の質問をするのに間違った場所ですか?私はコードを探していないので、あふれているとは感じませんでした。これは、「私がやろうとしていることを説明する言葉は何ですか」という質問です。
ありがとう!
私はこれを1日のうちに10回または12回読み直し、可能かどうかを明確にしようとします。私の頭脳が話すことは必ずしも勇気のある言葉を作るとは限りません。
このようなシステムの設計の多くは、実際にはユーザー、ユーザーの接続方法、およびユーザーの接続の種類に依存します。また、結果をすぐに取得することがどれほど重要か、または「同期」アプローチが問題ないかどうか...
「フィールドテック」は、切り離された方法で作業するような人々のように聞こえますか?
したがって、オンライン時に結果を保存して同期する方法を検討したいと思うかもしれません。これにより、SQL CE、おそらく組み込みRavenDB、ローカルマシン上の何か(おそらく単純なCSV)のようなものがたくさんあります。オンラインの場合-すべての応答を照合できるサービスに同期します。
ページ自体に関しては、長期的にいくつあるか、または計画されているかに応じて、すべてをプロジェクトに組み込むか、グループ化できる場合は、ページのグループごとに個別のクラスライブラリを作成します。次に、ロットを展開するか(パッケージが適度なサイズで、フィールド技術者が適切な接続を持っている場合)、オンデマンドでダウンさせるか、個別に配布してMEFなどを使用して動的にロードします。
質問にMVVMのタグを付けたので、パターンについて知っています。 VMはページを管理している必要があり、「next」コマンドは次にロードするページを認識します(またはすべきです!)。どの顧客に基づいてどのページを表示するかという点で、より「一般的」にするために、顧客情報をどこかに、おそらくサービス内に保存し、同期/インストール時にフィールド技術者に同期させたいと思うでしょう。ソフトウェア。
データベースでコード文字列式のようなことを行って、ルールを動的に生成し(http://www.fidelitydesign.net/?p=333)、超複雑さを追加することができます-ただし私はより複雑なコード-単純なものから始めて、それを機能させ、必要に応じて複雑さを打ちます。
PDF世代の場合、XAMLをグーグルで検索しますPDF世代、またはその時点でデータベースにデータがある場合、世界はあなたのカキです。いくつかの素晴らしい無料PDFライター(iTextSharpなど)といくつかのそれほど無料ではない-しかしまた良い(PDFKit)です。あなたがタイトな予算を持っているか、それほどタイトでない予算を持っているかによって異なります: )