Расширьте Workflow Foundation FlowChart - PullRequest
2 голосов
/ 07 июля 2010

Я хотел бы создать настраиваемое основополагающее действие рабочего процесса на основе действия FlowChart.Все встроенные классы запечатаны, поэтому я не могу унаследовать его.Эти действия будут использоваться в приложении, которое повторно размещает конструктор рабочих процессов и используется не разработчиками.Я могу наследовать от класса NativeActivity.Однако мне нужно иметь возможность перетаскивать действия в это пользовательское действие точно так же, как действие FlowChart.

Резюме: есть ли у кого-нибудь пример или идеи о том, как реализовать пользовательское действие рабочего процесса, которое ведет себя так же, какFlowChart (в конструкторе и во время выполнения), но позволяет мне расширить класс с помощью собственной собственной закулисной логики?

Я думаю, что, возможно, просто ищу или повторно использую тот же ActivityDesigner, который использует FlowChart.Это возможно?

Ответы [ 2 ]

1 голос
/ 03 марта 2011

рок! Я думаю, что вы можете использовать этот подход: у вас есть некоторые встроенные запрограммированные действия кода (flowtep, flowdecision), которые вы не можете изменить, но вы можете создать для них другие дизайнеры (то есть пользовательский интерфейс). Мне удалось настроить этот способ конструктора flowdecision, добавив триггеры для применения цветовых эффектов. Более того, вы можете автоматически назначить ему условие (например, связав его с внутренней переменной потоковой диаграммы), используя базовые переопределения класса ActivityDesigner.

0 голосов
/ 09 июля 2010

Если бы мне пришлось это сделать, я, вероятно, пошел бы в Reflector и нашел бы класс, который я хочу изменить, а затем скопировал бы и вставил его в проект в VS.На этом этапе я бы скомпилировал, выяснил, от каких других внутренних / частных классов он зависит, и скопировал их.После итерации пару десятков раз у меня будет что-то, что компилируется без ошибок, и я могу начать интегрировать это в остальную часть моей системы.

Это не красиво, но я не думаю, что есть какой-либо другой способ расширениявнутренний или закрытый класс.

Конечно, вы можете сделать все это, только обнаружив, что у конструктора есть какой-то особый код, который ищет конкретный класс, который вы хотите расширить, чтобы получить желаемое поведениеневозможно.

...