カスタム シミュレーター ルールの DLL、バージョン、および名前空間は、.ptd 内の開発ステートジーにエンコードされているようです。
カスタム ルールのコードなどを新しい名前空間/DLL に移動したいと考えています。
シリアライゼーション バインディング コードを使用して、カスタム ドメイン オブジェクト スタイルでこれを処理します。カスタム シミュレータ ルールに対して同じことを行うことは可能ですか?
乾杯、
ニール
カスタム シミュレーター ルールの DLL、バージョン、および名前空間は、.ptd 内の開発ステートジーにエンコードされているようです。
カスタム ルールのコードなどを新しい名前空間/DLL に移動したいと考えています。
シリアライゼーション バインディング コードを使用して、カスタム ドメイン オブジェクト スタイルでこれを処理します。カスタム シミュレータ ルールに対して同じことを行うことは可能ですか?
乾杯、
ニール
ロバートへの回答:
Petrel 2012 には、ワークステップとプロセス用の新しい属性があります。UniqueIdCore メソッドを実装して、Guid の形式で固定され安定したグローバル (すべてのプロジェクトにわたって) 一意の ID を提供する必要があります。この UniqueId は、Petrel プロジェクトにシリアル化されます。シリアル化されたワークフローで使用されます。2012 リリースより前では、ワークステップのアセンブリまたは名前空間を変更すると、シリアル化されたワークフローが壊れていました。後でワークステップ タイプを変更する場合は、同じ一意の識別子を指定する限り、シリアル化されたワークフローを中断することなく変更できます。
ニールへの答え:
同僚との会話に関しては、これは arg pack のソフト化された ID 文字列の問題であるため、残念ながら別のアセンブリに移動したり、クラス名を変更したりすることはできません。現在可能な半回避策は 1 つだけです (チェックしませんでした): 引数パックを古いアセンブリ/クラス名に残して、他のすべてを移動しますが、もちろんこれは良い解決策ではありません。