2011-07-26 1 views
0

ユーザーは、有効な値のリスト(例:コンボボックス)からInArgument /プロパティの値を指定できるようにする必要があります。有効な値のリストは、別のInArgumentの値によって決定されます(値は式によって設定されます)。例えば設計時に別のInArgumentの値に依存するInArgumentの値を設定する方法

、設計時:

  • ユーザDependedUpon InArgumentがファイルパス
  • ファイルの値に設定されているワークフロー変数ファイルパス
  • にファイル・パスに入るが照会とのリストであります有効な値がユーザに表示され、適切な値が選択されます(おそらくカスタムPropertyValueEditorを介して)。

これは可能ですか?

答えて

0

これは設計時に行われたことを考慮すると、アクティビティ自体ではなく、のすべてのロジックをデザイナーに提供することを強くお勧めします。

デザインタイムロジックをアクティビティ内に含めないでください。アクティビティは、どのデザイナーからも独立して実行できるはずです。このように考えてみてください。

アクティビティとその設計者を使用してワークフローを設計します。作業が完了したら、ワークフローを別の場所のサーバーにインストール/ xcopyします。サーバが実行前にそのアクティビティをロードするとき、あなたのデザインロジックがCacheMetadataで実行されるとどうなりますか?デザイン時に実行されていないことをヒューリスティックで判断するために、またはを選択すると、そのファイルを見つけることができないときにこのコードをスキップする余分なロジックが含まれます。いずれにせよ、このデザインタイムコードを実行するサーバーはなぜですか?答えは、それを実行してはならないということです。そのコードはデザイナーに属しています。

フレームワークを見ると、アクティビティとそのデザイナーが異なるアセンブリに存在することがわかります。コードは同じ方法でなければなりません。デザイン中心のコードは、アクティビティとは別のアセンブリで配布する必要があります。そのため、デザイナにもアプリケーションサーバーにもアクティビティアセンブリのみを提供できます。

0

いつこれを検証するかは、設計時または実行時にですか?

ユーザーは別の変数に依存する式を使用でき、設計時にその値を読み取ることができないため、設計時間が制限されます。しかし、式を見て、おそらく無効な組み合わせをそのように推論することができます。この場合、CacheMetadata関数にコードを追加する必要があります。

実行時に、実際の値を取得して実行関数で検証することができます。

+1

これは設計時に行う必要があります。私はCacheMetadataを見ていきます – primalgeek

+0

実行時に生成される値ではなく、VB式にアクセスできるため、できることには限界があります。あなたがそれについて考えるときは明らかですが、適切な検証をするのは難しいです。 – Maurice

関連する問題