私は現在、2つのシステム間で特定の属性(税コード、名目コード、国コードなど)をマッピングする方法の実装を担当しています。
これらのマッピングは、1つのシステムによってプッシュされたデータの特定のプロパティが特定の値を持っている場合、値が反対側でマップされた属性の値に変更されることをシステムに通知します。
例:2つのシステムが顧客のステータスに同意しないとします(1つのシステムは「正常」、もう1つは「正常」)。 「大丈夫」属性が「良好」にマップされている場合、値「大丈夫」が最初のシステムによってプッシュされ、次に2番目のシステムによってプルダウンされるたびに、値は「良好」に変更されます。
このマッピングは両方の方法で行われるため、属性が単一の属性にのみマッピングできることを確認する必要があります(たとえば、「正常」が「良好」にマッピングされている場合、これらのいずれも他の属性との間でマッピングできません)。
私の問題は、これらのマッピングの設定方法を視覚化するのに問題があることです。
これまでの私の唯一のアイデアは、2列のテーブルを作成することです。 1つは1つのシステムの属性が事前に設定され、もう1つはドロップダウンを使用して、ユーザーが属性を選択してそれにマッピングできます。
これに関する私の問題は、何かが選択されるたびにドロップダウンから項目を削除する必要がある(そうでない場合、複数のマッピングを設定できる)か、ユーザーが既に使用されている属性を選択すると、それを検証してエラーをスローする必要があることです。これらはどちらも、非常に明確で透明な感じがしません。
実際にリストからアイテムを削除するシナリオは、ドラッグアンドドロップの良い候補です。マッピングされていないステータスのリストから、ステータスをマップ先のステータスにドラッグするUIを作成できます。この場合、ステータスを見つけるために、ドロップダウンではなくリストボックスが必要です。また、リストボックスをフィルタリングするために、ある種の検索ボックスをお勧めします(これらの多くを管理する必要がある場合は、スクロールするよりも簡単です)。
わかりやすくするために、ステータスを両側から3番目の画面領域にドラッグしてマッピングを作成できます。これは、1対多または多対多のマッピングが将来の機能リクエストになる可能性がある場合に適したソリューションです。