2010-07-07 6 views
2

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

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

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

+0

Что именно вы ищите? Каким образом он будет действовать как FlowChart? – Gabe

+0

Мне тоже интересно, и я думаю, что ответ имеет какое-то отношение к реализации пользовательского действия и класса пользовательского класса действий. Я думаю, что представление блок-схемы является частью взаимодействия дизайнера WF с классом проектирования пользовательских действий. – codekaizen

+0

Я даже не уверен, какой ActivityDesigner используется для создания FlowChart. – Gabe

ответ

0

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

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

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

+0

Он появляется все больше и больше, что»я ищу, чтобы сказать мой новую пользовательскую активность (которая наследует от NativeActivity, так же как и активность FlowChart), чтобы использовать FlowChart Designer, добавив атрибут [Designer (...)]; однако, похоже, что FlowChart Designer не является публичным или имеет публичный контрструктор, поэтому я, похоже, не могу добраться до него.В основном я хочу, чтобы функциональность конструктора FlowChart работала в конструкторе Workflow Designer, но настраивала функциональность Native Activity, если это имеет смысл. –

1

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