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

#dialog #ocean #petrel

#диалоговое окно #ocean #petrel

Вопрос:

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

Ответ №1:

Я думаю, вы хотите создать рабочий этап (Slb.Ocean.Буревестник.Рабочий процесс). Мастер Ocean позволяет быстро начать. Он создает для вас оболочку процесса, которая является элементом, отображаемым в дереве процессов.

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

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

Комментарии:

1. на самом деле нет! Я знаю, как создать рабочий этап или процесс. Я просто хочу загрузить встроенный процесс, подобный тому, что я бы написал («Стратегия разработки») где-нибудь в моем коде. предположим, у меня есть графический интерфейс для моего рабочего шага, и у него есть кнопка управления. Я хочу загрузить окно «Стратегия разработки», когда я нажимаю эту кнопку!

Ответ №2:

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

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

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

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

Комментарии:

1. Я использовал этот метод, но новое окно для стратегии не было представлено, потому что главная страница, которая является самим процессом, открыта, когда я вызываю PetrelSystem. DialogBuilder. ShowSettings(p), тем не менее, процесс был успешно создан как собственный процесс. можете ли вы помочь мне выполнить обработку ошибок, на которые вы указали.

2. Я могу показать желаемый процесс, используя этот оператор, но я должен закрыть свой письменный процесс программно, прежде чем новый покажет себя … есть ли способ показать новый собственный процесс рядом с моим процессом. если нет, есть ли способ повторно открыть и снова показать мой закрытый процесс?

3. В конечном итоге это станет возможным, но многие процессы все еще нуждаются в обновлении, чтобы обрабатывать одновременное открытие более одного диалогового окна. Посмотрите Process.ExclusivityCore , не нуждается ли ваше диалоговое окно процесса в этом ограничении. К сожалению, это поможет только в том случае, если «Стратегия разработки» уже обновлена для поддержки неисключительного поведения.

4. Я не смог найти «Процесс. ExclusivityCore», где находится этот метод или свойство ?! как я могу обновить собственный процесс для поддержки неисключительного поведения? Возможно ли, чтобы вы привели мне пример для этой цели?

5. Против какой версии Petrel вы работаете? ExclusivityCore появился довольно недавно. Либо 2013, либо 2014. Большинство встроенных процессов не были обновлены до неисключительных, поскольку это текущая работа команды Petrel. К сожалению, на данный момент это просто вопрос ожидания.