четверг, 1 апреля 2010 г.

Отладка скриптов в карточках

На днях случайно обнаружилась возможность отладки скриптов карточек DV в отладчике MS Visual Studio. Думаю что многим пригодится такой функционал в неравной борьбе с кодом :) Всё довольно просто:

1. Активируем возможность отладки скриптов:

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings]
"JITDebug"=dword:00000001


2. В скрипте карточки ставим точку останова с помощью оператора "stop" в нужном месте. На выполнении этой команды выскакивает окно выбора отладчика.


Ну и далее запускаем студию и отлаживаем.

"Брякнулись":


IntelliSense в действии:



Если окно выбора отладчика не появляется, то удостоверьтесь, что в настройках MSVS: Options -> Debugging -> Just-in-Time стоит галочка "Script".
Для отладки скриптов также есть отладчик Microsoft Script Debugger, но он совсем уж простой, даже функционал watches отсутсвует, что сводит его полезность почти на нет. Также есть инструмент Microsoft Script Editor, но его поддержка ограничивается 2003-им офисом, что тоже является проблемой.
Поэтому лучше всё-таки использовать полноценную среду MSVS. Подойдёт даже бесплатная Express-редакция.

7 комментариев:

  1. Также, при возникновении исключения в скрипте, автоматически вызывается окно выбора отладчика, без использования лексемы stop. Скрипт при этом может быть зашифрованным :)

    ОтветитьУдалить
  2. А как это сделать для скриптов в бизнес-процессах, написаных на C#? Тоже хочется отладки, да...

    ОтветитьУдалить
  3. Бизнес-процессы обрабатываются службой Workflow (и даже не в реальном времени) на сервере приложений, поэтому отлаживать сценарии БП не получится. Однако, было обещание со стороны разработчиков в DV 5.0 улучшить редактор сценариев БП (подсветка точно должна быть). Возможно, мне кажется, реализовать какое-то доп. средство (может с интеграцией в MSVS), которое позволить отладить конкретный сценарий БП, но не думаю, что будет что-то подобное реализовано.
    Тем не менее, сейчас вы можете конкретный сценарий писать в MSVS, с подсветкой и проверкой кода на очепятки и корректность синтаксиса. Для этого нужно создать пустой проект и подключить ключевые библиотеки (см. заголовок сценария БП).

    ОтветитьУдалить
  4. Можно написать тестовый проект: экспортировать БП в xml, написать код, который из xml выдерет контекст - сформирует вызов метода
    Execute(DocsVision.Workflow.Runtime.ProcessInfo process, PassState passInfo) на основе этого контекста.
    Далее можно было бы это автоматизировать как то, чтобы экспорт xml происходил по ссылке на БП.
    Хм... Может сработать...

    ОтветитьУдалить
  5. >Подойдёт даже бесплатная Express-редакция.
    Не подходит

    ОтветитьУдалить
  6. Этот комментарий был удален автором.

    ОтветитьУдалить
  7. Можно написать тестовый проект: экспортировать БП в xml, написать код, который из xml выдерет контекст - сформирует вызов метода
    Execute(DocsVision.Workflow.Runtime.ProcessInfo process, PassState passInfo) на основе этого контекста.
    Далее можно было бы это автоматизировать как то, чтобы экспорт xml происходил по ссылке на БП.
    Хм... Может сработать...


    А примера случайно нет такого? Или подскажите пожалуйста, где можно прочитать описание инициализации этих параметров из XML БП ?

    ОтветитьУдалить