Показать конкретный диалог процесса в буревестнике?

Я хочу показать указанный диалог в категории моделирования, такой как "Стратегия развития", и сделать что-нибудь после его нажатия "ОК". Есть ли способ показать окно процесса родного буревестника? Я вижу некоторые классы и интерфейсы в "Slb.Ocean.Petrel.UI", такие как DialogBuilder, DialogPage, IDialogPageFactory, IDialogPage... но я не могу их использовать, даже не знаю, предоставляют ли они мои необходимые объекты.

2 ответа

Вы можете программно показать конкретный диалог процесса, используя DialogBuilder.ShowSettings(object) и прохождение Process пример. Обычно он используется плагином для запуска собственного диалогового окна процесса, но можно получить ссылку на экземпляр нативного Process по имени, используя FindProcess(string), Это, конечно, очень хрупкий подход:

Process p = PetrelSystem.ProcessDiagram.FindProcess("Development strategy");
PetrelSystem.DialogBuilder.ShowSettings(p);

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

Однако, это все еще только запустит диалог. Нет никакого способа узнать, если / когда пользователь нажимает кнопку ОК. Процессы Petrel, как правило, представляют собой отдельные функциональные элементы, и любой вид цепочки обычно поддерживается созданием рабочих процессов.

Я думаю, что вы хотите создать Workstep (Slb.Ocean.Petrel.Workflow). Океанский волшебник предлагает быстрое начало. При желании он создает упаковку процесса, которая является элементом, отображаемым в дереве процессов.

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

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

Другие вопросы по тегам