Слайды курса «Разработка сценариев (скриптов) в системе Бизнес-инженер»

advertisement
Слайды курса
«Разработка сценариев (скриптов)
в системе Бизнес-инженер»
г. Москва, тел.: +7 (495) 788-72-47,
E-mail: info@betec.ru, Internet: www.betec.ru
Содержание
1. Виды и типы сценариев
2. Разработка и редактирование кода сценария
3. Объектная модель Бизнес-инженер
4. Часто используемые методы и свойства сценариев
5. Вызов методов внешних СОМ-серверов
2
Бизнес-инженер
1. Виды и типы сценариев
Задачи решаемые с помощью сценариев

Формирование отчетов любого уровня сложности.

Выполнение на основе бизнес-модели любого уровня сложности:
-
Вычислений и расчетов.
-
Видов и методов анализа.
-
Фильтрации данных.
-
Запросов.
-
Семантических проверок.

Вывод данных бизнес-модели на графические диаграммы.

Разработка стилей графических диаграмм.

Выполнение различных видов импорта и экспорта данных бизнесмодели.

Организация автоматического обмена данными между программой
Бизнес-инженер и различными корпоративными информационными
системами.

Запуск любых команд Бизнес-инженер через сценарии.

Разработка новых функций, команд и возможностей в программе Бизнесинженер.
3
Бизнес-инженер
Наиболее часто сценарии используются
 В вычисляемых атрибутах
 В шаблонах отчетов
 На графических диаграммах
4
Бизнес-инженер
Виды сценариев
Виды
сценариев
Описание
Общие
сценарии
Эти сценарии предназначены для использования, когда
проект не открыт и хранятся в файле VBScripts.bin, который
расположен в директории установки программы. Запускаются
эти сценарии в меню главного окна программы Файл
/ Общие сценарии / Выполнить.
Сценарии
проекта
Эти сценарии предназначены для использования, когда
проект открыт и хранятся в нем. Они запускаются в различных
окнах программы в зависимости от типа сценария.
Сценарии
отчетов
Эти сценарии предназначены для формирования отчетов и
хранятся в блоках данных шаблонов отчетов. Эти сценарии
выполняются при формировании отчета.
Сценарии
графических
диаграмм
Данные сценарии предназначены для формирования
графических диаграмм в модуле График-студио. Они
хранятся вместе с шаблонами графических диаграмм в папке
VisioModels, которая расположена в директории установки
программы и запускаются в окне графических диаграмм.
5
Бизнес-инженер
Выполнение и открытие окна общих сценариев
6
Бизнес-инженер
Редактирование и выполнение общих сценариев
7
Бизнес-инженер
Открытие окна сценариев проекта
8
Бизнес-инженер
Окно со сценариями проекта
9
Бизнес-инженер
Типы сценариев проекта
Тип сценария
Назначение
Запуск и выполнение
Характеристики
Группа
Предназначены для
группировки и
иерархического
упорядочивания
Сценариев в окне
сценариев проекта.
Не запускаются в
программе.
Могут не содержать код.
Приложение
Предназначены для
работы с проектом.
Запускаются в меню
всех окон программы.
Определен объект Application. Может иметь любое
количество входных параметров, а их
возвращаемые значения не анализируются.
Проект
Предназначены для
невизуального
обращения к данным
проекта.
Запускаются в меню
всех окон программы.
Определены объекты Application и Document. Может
иметь любое количество входных параметров, а их
возвращаемые значения не анализируются.
Окно
Предназначены для
управления визуальным
представлением данных.
Запускаются в меню
всех окон программы,
кроме окна
Навигатора.
Определены объекты Application, Document и
ChildWindow. Может иметь любое количество
входных параметров, а их возвращаемые значения
не анализируются.
Иерархический
список
Предназначены для
работы с данными окон
иерархических списков
элементов.
Запускаются в меню
окон иерархических
списков элементов.
Определены объекты Application, Document,
ChildWindow и TreeWindow. Должны иметь, как
минимум, два входных параметра: идентификатор
элемента, в контекстном меню которого запускается
сценарий, и номер выбранного атрибута.
Возвращаемые значения этих сценариев не
анализируются.
Матрица
Предназначены для
работы с данными окон
матриц.
Запускаются в меню
окон матриц.
Определены объекты Application, Document и
MatrixWindow. Должны быть, как минимум, четыре
входных параметра: идентификатор матрицы,
номер атрибута и пара идентификаторов элементов
классификаторов, образующих ячейку матрицы.
Возвращаемые значения этих сценариев не
анализируются.
10
Бизнес-инженер
Типы сценариев проекта (продолжение)
Тип сценария
Назначение
Запуск и выполнение
Характеристики
Иерархическая и
копитдиаграммы
Предназначены для
работы с данными
окон Иерархических
диаграмм и Кокпитдиаграмм.
Запускаются в меню
окон иерархических
диаграмм и кокпитдиаграмм.
Определены объекты Application, Document,
ChildWindow и DiagramWindow. Должен быть, как
минимум, один входной параметр - идентификатор
элемента, для которого сформирована иерархическая
диаграмма или идентификатор кокпит-диаграммы.
Возвращаемые значения этих сценариев не
анализируются.
Вычисляемый
атрибут
Предназначены для
вычисления значений
атрибутов.
Выполняются при
открытии окон
иерархических списков
элементов и матриц, а
также по команде
пересчета значений
атрибутов.
Определен объект Document. Должен быть один
входной параметр - идентификатор элемента, для
которого вычисляется значение. Второй и третий
параметры – опционные и должны задаваться для
сценариев, предназначенных для вычисления значений
атрибутов элементов матричных связей (ячеек
матрицы). В этом случае, второй и третий параметры
должны содержать идентификаторы элементов
классификаторов, образующих ячейку матрицы.
Возвращаемые значения сценария – действительное
число или строка.
Отчет
Предназначены для
формирования HTMLтекста блока данных
отчета.
Выполняются при
формировании
отчетов.
Определены объекты Application, Report и Helper.
Должен быть один входной параметр - идентификатор
элемента классификатора, который был выбран для
формирования блока данных отчета. Объект Helper
содержит все необходимые методы для формирования
HTML-текста блока данных отчета.
Фильтр
Предназначены для
фильтрации
визуального
отображения
элементов окон
иерархических
списков.
Выполняются при
применении фильтров
в окнах иерархических
списков элементов.
Определен объект Document. Должны быть два
входных параметра: идентификатор элемента, для
которого применяется фильтр и значение фильтра по
умолчанию (0 или 1) в случае возникновения
исключений при проверке условий. Возвращаемые
значения этих сценариев: 0 (не отображать/включать)
или 1 (отображать/включать).
11
Бизнес-инженер
Типы сценариев проекта (продолжение)
Тип сценария
Назначение
Запуск и выполнение
Характеристики
Анализ
Предназначены для
анализа данных
элементов окон
иерархических
списков.
Запускаются в меню
окон иерархических
списков элементов.
Определены объекты Document и Helper.
Должен быть один параметр идентификатор элемента, данные которого
анализируются. Возвращаемые значения
этих сценариев - строка, которая
отображается в информационном
сообщении, а также сохраняется в Logфайле.
Данные
кокпитдиаграммы
Предназначены для
обращения к
различным базам
данных и файлам, и
для обработки
данных и
формирования
кокпит-диаграммы.
Выполняются при
формировании кокпитдиаграмм.
Определены объекты Document и Cocpit.
Должен быть один параметр идентификатор элемента классификатора,
данные которого обрабатываются и для
которого формируется кокпит-диаграмма.
Возвращаемые значения этих сценариев
далее не используются.
Автоматический
Предназначены для
автоматического
выполнения.
Выполняются в момент
запуска программы и
открытия ее окон.
Определен объект Document. Не должно
быть возвращаемых значений, а в случае их
наличия возвращаемые значения не
анализируются.
Триггер
Предназначены для
выполнения в
момент наступления
заданных для
сценария событий.
Выполняются в момент
наступления заданных
для сценария событий,
связанных с
изменениями данных
(добавление, удаление
и редактирование
элементов) проекта.
Определен объект Document. Должен быть
один параметр - идентификатор элемента
проекта, данные которого были изменены.
12
Бизнес-инженер
Запуск сценариев проекта в окне классификатора
через контекстное меню
13
Бизнес-инженер
Запуск сценариев проекта в окне матрицы через
контекстное меню
14
Бизнес-инженер
Запуск сценариев проекта в окне матричных списков
через контекстное меню
15
Бизнес-инженер
Запуск сценариев проекта в окне кокпит-диаграммы
16
Бизнес-инженер
Запуск сценариев проекта типа «Анализ» в окне
классификатора через контекстное меню
17
Бизнес-инженер
Создание предопределенных параметров запуска
общих сценариев и сценариев проекта
18
Бизнес-инженер
Создание и редактирование сценария отчета в блоке
данных отчета
19
Бизнес-инженер
Задание в блоке данных отчета ссылки на сценарий
проекта типа «Отчет»
20
Бизнес-инженер
Задание для классификаторов сценариев-триггеров
21
Бизнес-инженер
Задание для классификаторов сценариев-триггеров
22
Бизнес-инженер
Типы сценариев графических диаграмм
Типы сценариев
Событийные сценарии
(обработчики событий)
графических диаграмм
Краткое описание
Выполняются автоматически после наступления одного
из следующих заданных событий:
События, связанные с диаграммами

Создание новой диаграммы [после]

Открытие диаграммы [после]
 Применение диаграммы [до]
События, связанные с элементами диаграмм
Пользовательские сценарии
графических диаграмм

Добавление элемента [после]

Выделение элемента [после]

Удаление элемента [до]

Удаление элемента [после]
Запуск выполнения сценария осуществляется
пользователем через настраиваемые разделы меню.
23
Бизнес-инженер
Редактирование событийных сценариев графических
диаграмм
24
Бизнес-инженер
Файлы с кодами событийных сценариев
Файлы с кодами событийных сценарием находятся вместе с
шаблонами графических диаграмм в папке VisioModels,
расположенной в директории установки программы
Событийный сценарий
Файл с кодом событийного сценария
Создание новой диаграммы [после]
OnCreateDiagram.vbs
Открытие диаграммы [после]
AfterLoad.vbs
Применение диаграммы [до]
BeforeOK.vbs
Добавление элемента [после]
AfterShapeAdd.vbs
Выбор элемента [после]
AfterSelectionChange.vbs
Удаление элемента [до]
BeforeSelectionDelete.vbs
Удаление элемента [после]
AfterSelectionDelete.vbs
25
Бизнес-инженер
Редактирование пользовательских сценариев
графических диаграмм
26
Бизнес-инженер
Запуск выполнения пользовательских сценариев
27
Бизнес-инженер
3. Разработка и редактирование кода сценария
Для написания сценариев в одном проекте могут альтернативно
использоваться как VBS (Visual Basic Script), так и Java скрипты
28
Бизнес-инженер
3. Разработка и редактирование кода сценария
Для написания сценариев в одном проекте могут альтернативно
использоваться как VBS (Visual Basic Script), так и Java скрипты
29
Бизнес-инженер
Использование встроенного текстового редактора для
редактирования кода сценария
30
Бизнес-инженер
Использование встроенного справочника объектов и
методов
31
Бизнес-инженер
Проверка корректности синтаксиса кода сценария
32
Бизнес-инженер
Использование для редактирования кода сценария
внешнего редактора RJ TextEd
33
Бизнес-инженер
Использование для редактирования кода сценария
внешнего редактора RJ TextEd
34
Бизнес-инженер
Использование для разработки кода сценария языка
Visual Basic Script (VBS)
Описание языка Visual Basic Script (VBS) можно посмотреть по
адресу: http://www.w3schools.com/asp/vbscript_default.asp
35
Бизнес-инженер
Использование для разработки кода сценария языка
Java Script
Описание языка Java Script можно посмотреть по адресу:
http://www.w3schools.com/js/default.asp
36
Бизнес-инженер
3. Объектная модель Бизнес-инженер
Знание структуры объектной модели необходимо для понимания цепочек
обращений к свойствам и методам объектов программы Бизнес-инженер.
Например, для того чтобы зафиксировать ответственного за бизнес-процесс
нужно обратиться к соответствующей матрице. Для этого потребуются
объекты Matrix и Document. В свою очередь для обращения к свойствам
объекта Document потребуется объект Application. В общем случае, для того
чтобы работать с какой-либо переменной, потребуется вызов цепочки
объектов.
В программном продукте Бизнес-инженер, как и в любой программе,
являющейся COM сервером, объекты, необходимые для работы с OLE
Automation командами, упорядочены иерархически. То есть после запуска
программы доступными являются основные объекты и с их помощью
вызываются остальные объекты.
Объекты программы Бизнес-инженер делятся на НЕВИЗУАЛЬНЫЕ
объекты, которые не затрагивают визуальных контролей программы и
ВИЗУАЛЬНЫЕ объекты.
Описание всех объектов и методов объектной модели Бизнес-инженер
приведено в отдельном документе
Документация по объектам и методам сценариев.doc
который можно скачать по ссылке:
http://www.betec.ru/bep/downloads/documentacia_po_scenaryiam.doc
37
Бизнес-инженер
Невизуальные объекты объектной модели Бизнес-инженер
Application
SQL
Server
Projects
Helper
Cocpit
Document
SQL
Data
Set
Item
SQL
Data
Field
Classi
ficator
MS
Visio
Matrix
Array
Colle
ction
Array
Item
MenuItem
Object
Manager
Report
Item
Cocpit
Item
Report
Single
Series
Item
Primi
tive
Item
Data
Type
Item
Script
Item
Report
Data
Set
Report
Single
Vari
able
38
Бизнес-инженер
Невизуальные объекты объектной модели Бизнес-инженер
Базовым объектом программного продукта Бизнес-инженер является объект
Application. Этот объект становится доступным сразу после запуска программы и доступ
к нему завершается вместе с ее закрытием. Наоборот, при использовании COM API
команды CoCreateInstance, когда в качестве параметра используется GUID объекта
Application, осуществляется запуск программы Бизнес-инженер. Следует отметить, что
объект Application, помимо невизуальных методов содержит методы, предназначенные
для управления главным окном программного продукта Бизнес-инженер.
Помимо объекта Application существует еще два объекта, которые становятся
доступными сразу после запуска программы и доступ, к которым завершается вместе с
ее закрытием. Это объект Helper, содержащий методы HTML-форматирования текста и
объект Cocpit, который является вспомогательным объектом и предназначен для
создания кокпит-диаграмм.
Используя свойства и методы объекта Application, можно получить доступ к двум
другим объектам SQLServerProjects и Document. С помощью объекта SQLServerProjects
осуществляется доступ к проектам, размещенным на SQL-сервере, а с помощью
объекта Document осуществляется доступ к данным проекта. С помощью объекта
SQLServerProjects также можно получить доступ к объектам Document для проектов,
размещенных на SQL-сервере.
Объект Document осуществляет хранение данных в виде иерархического списка и
вызывает два других объекта SQLDataSet и Item.
Объект SQLDataSet вместе с дочерним объектом SQLDataField предназначены для
обмена данными с внешним SQL-сервером.
39
Бизнес-инженер
Невизуальные объекты объектной модели Бизнес-инженер
Объект Item является единицей хранения и обработки данных в иерархическом списке
объекта Document. Он содержит свойства и методы, необходимые для иерархического
доступа к следующим данным элемента проекта:

Название элемента;

Идентификатор элемента;

Идентификатор родительского элемента;

Список идентификаторов дочерних элементов;

Атрибуты элемента.
Объект Item вызывает следующие объекты, используемые для работы с данными:

Объект Classificator - содержит свойства и методы для работы с классификаторами.

Объект Matrix - содержит свойства и методы для работы с матрицами.

Объект MenuItemManager - содержит свойства и методы для работы с разделами
меню.

Объект ReportItem - содержит свойства и методы для работы с отчетами.

Объект CocpitItem - содержит свойства и методы для работы с кокпит-диаграммами.

Объект PrimitiveItem - содержит свойства и методы для работы с формами
иерархических диаграмм.

Объект DataTypeItem - содержит свойства и методы для работы с типами данных.

Объект ScriptItem - содержит свойства и методы для работы со сценариями (VBSскриптами).
40
Бизнес-инженер
Невизуальные объекты объектной модели Бизнес-инженер
Многие из этих объектов, в свою очередь, вызывают вспомогательные
объекты, которые группируют специфические данные и облегчают работу с
ними.
Объект Classificator вызывает объект MSVisio, который позволяет
работать с графическими диаграммами и объект ArrayCollection, с помошью
которого можно работать с таблицами. В свою очередь, объект
ArrayCollection вызывает объект ArrayItem, который позволяет работать с
данными таблицы.
Объект ReportItem вызывает объект Report, который используется для
работы с отчетами. В свою очередь, объект Report вызывает объект
ReportDataSet, который содержит свойства и методы для переноса данных из
проекта в блок данных отчета и который в свою очередь вызывает объект
ReportSingleVariable, предназначенный для HTML-форматирования заданной
переменной в блоке данных отчета.
Объект CocpitItem вызывает объект SingleSeriesItem, который содержит
свойства и методы, позволяющие работать с графиками кокпит-диаграммы.
Вышеописанная иерархия объектов предназначена для работы с
проектом и не затрагивает его визуальных контролей.
41
Бизнес-инженер
Визуальные объекты объектной модели Бизнес-инженер
Application
Child
Window
Document
Tree
Window
Matrix
Matrix
Window
42
Diagram
Window
Бизнес-инженер
Визуальные объекты объектной модели Бизнес-инженер
Вышеописанный объект Application имеет ряд методов (open,...,), которые позволяют
развернуть немодальные окна. Существует 4 типа немодальных окон:

Окна классификаторов;

Окна матриц;

Окна иерархических диаграмм;

Окна кокпит диаграмм.
Общими свойствами окон (высотой, шириной, расположением и названием заголовка)
управляет объект ChildWindow, а конкретными типами окон управляют следующие
объекты, вызываемые им:

Объект TreeWindow - имеет свойства и методы управления графическими
контролями окон классификаторов.

Объект MatrixWindow - имеет свойства и методы управления графическими
контролями окон матриц.

Объект DiagramWindow - имеет свойства и методы управления графическими
контролями окон иерархических диаграмм и кокпит-диаграмм. Функциональность
окон кокпит-диаграмм и иерархических диаграмм однотипна.
Визуальные контроли работают в тесной связи с невизуальными. Помимо общего
объекта Application, каждое из окон имеет связь с объектом Document, который формирует
данные, отображаемые в окне. Описание всех объектов и методов объектной модели
программы Бизнес-инженер приведено в отдельной документации Описание объектов и
методов сценариев (скриптов) Бизнес-инженер.
43
Бизнес-инженер
4. Часто используемые методы и свойства сценариев
Определение элементов (классификаторов, матриц и др.)
ItemByID - определение элемента по ID
ItemByName - определение элемента по названию
ItemByGUID - определение элемента по GUID
Определение типов значений атрибутов элементов
(классификаторов, матриц и др.)
AttributeValueDouble - действительное значение атрибута элемента
AttributeValueString - строковое значение атрибута элемента
-1.2345678E9 – значение выводимое для атрибутов с отсутствующими
действительными данными
44
Бизнес-инженер
Работа с классификаторами
Определение названия, нумерации и значений атрибутов элемента классификатора
set element = document.itemByID(element_ID)
определение объекта элемента классификатора с заданным ID
element_ID = element.ThisID
Определение ID элемента классификатора
element_name = element.ItemName
определение названия (имени) элемента классификатора
element_numeration = document.Numeration(element_ID,0)
определение нумерации (номера) элемента классификатора с
заданными ID. Второй параметр задает ID родительского элемента
относительно которого определяется нумерация
attribute_value_element =
element.AttributeValueDouble(element_attribute_name)
определение значения заданного атрибута элемента классификатора
45
Бизнес-инженер
Пример работы с классификаторами
Расчет суммы значений двух атрибутов элемента классификатора
Function Evaluate(element_ID)
'Данные классификатора "Оргструктура"
costRateAttributeName="Стоимостная ставка в час"
costResourceWorkplaceAttributeName="Стоимость ресурсов в час"
'Выполнение вычислений
set element = document.ItemByID(element_ID)
r1=element.AttributeValueDouble(costRateAttributeName)
r2=element.AttributeValueDouble(costResourceWorkplaceAttributeName)
if (r1>=0) and (r2>=0) then
result=r1+r2
end if
if (r1=-1.2345678E9) then
result=r2
end if
if (r2=-1.2345678E9) then
result=r1
end if
if (r1=-1.2345678E9) and (r2=-1.2345678E9) then
result=-1.2345678E9
end if
'или (r1<0) and (r2<0)
Evaluate=result
End Function
46
Бизнес-инженер
Работа с классификаторами
Определение родительского и дочерних элементов классификаторов
set element = document.itemByID(element_ID)
определение объекта элемента классификатора с заданным ID
parent_ID = element.ParentID
определение ID родительского элемента классификатора
childCount = element.ChildCount
определение количества дочерних элементов первого уровня у элемента
классификатора
attribute_value_child_element =
element.Childs(Index).AttributeValueDouble(child_attribute_name)
определение значения заданного атрибута для дочернего элемента
классификатора с индексом "Index" (возможные значения индекса: 0,...,childCount-1)
set child = element.FirstChild(-1,"")
определение первого дочернего элемента, первый параметр задает количество
уровней (значение – 1 задает все уровни), второй параметр – зарезервирован.
set child = element.NextChild
определяет следующий дочерний элемент
47
Бизнес-инженер
Пример работы с классификаторами
Расчет суммы значений атрибутов дочерних элементов классификатора 1-го уровня
Function Evaluate(element_ID)
'Данные классификатора "Процессы"
elementAttributeName="Временные трудозатраты процесса, часов"
'Выполнение вычислений
set element = document.ItemByID(element_ID)
childCount = element.ChildCount
result=0
count=0
for i=0 to childCount-1
r1=element.Childs(i).AttributeValueDouble(elementAttributeName)
if (r1>=0) then
result=result+r1
count=count+1
end if
next
if (count=0) then
result=-1.2345678E9
end if
Evaluate=result
End Function
48
Бизнес-инженер
Пример работы с классификаторами
Расчет суммы значений атрибутов дочерних элементов классификатора до 5-го уровня
(включительно)
Function Evaluate(element_ID)
'Данные классификатора "Процессы"
elementAttributeName="Временные трудозатраты процесса, часов"
'Выполнение вычислений
set element = document.ItemByID(element_ID)
set child
= element.FirstChild(5,"")
result=0
count=0
test=true
do while test
r1=child.AttributeValueDouble(elementAttributeName)
if (r1>=0) then
result=result+r1
count=count+1
end if
set child = element.NextChild
on error resume next
child_ID = child.ThisID
if (Err.Number<>0) then
test=false
end if
on error goto 0
loop
if (count=0) then
result=-1.2345678E9
end if
Evaluate=result
End Function
49
Бизнес-инженер
Пример работы с классификаторами
Определение нумерации и названия родительского элемента
Function Evaluate(element_ID)
set element = document.ItemByID(element_ID)
parent_ID = element.ParentID
parentNumeration = document.Numeration(parent_ID,0)
set parent = document.itemByID(parent_ID)
parentName = parent.ItemName
result = "Родительский элемент: "
result = result + parentNumeration + parentName
Evaluate = result
End Function
50
Бизнес-инженер
Работа с матрицами
Определение атрибутов матрицы и связанных через матрицу элементов классификаторов
set matrix = document.ItemByGUID(matrix_GUID)
определение объекта матрицы с заданным GUID
cellCount = matrix.Matrix.CellCount(element1_ID)
определение количества связей в матрице для исходного элемента первого классификатора с заданным ID
element2_ID = matrix.Matrix.SecondClassificatorID(element1_ID,Index)
определение ID элемента второго классификатора с индексом "Index", связанного в матрице с исходным
элементом первого классификатора с заданным ID (возможные значения индекса: 0,..., cellCount-1)
attribute_value_matrix = matrix.Matrix.AttributeValueDouble(element1_ID,element2_ID,matrix_attribute_name)
определение значения заданного атрибута связи (ячейки) матрицы для двух элементов первого и второго
классификаторов с заданными ID, при этом ID элемента первого классификатора является параметром
сценария – т.е. определяется автоматически, так как сценарий "привязан" к этому элементу
set matrixCell = document.ItemByID(cellID)
определение объекта одной связи (ячейки) матрицы с заданным ID – этот метод применяется в сценариях,
которые "привязаны" к связи (ячейке) матрицы
attribute_value_matrix = matrixCell.Matrix.AttributeValueDouble(firstID,secondID,matrix_attribute_name)
определение значения заданного атрибута связи (ячейки) матрицы для двух элементов первого и второго
классификаторов с заданными ID, при этом ID этих двух элементов являются параметрами сценария – т.е.
определяются автоматически, так как сценарий "привязан" к связи (ячейке) матрицы
51
Бизнес-инженер
Пример работы с матрицами
Расчет суммы произведений значений атрибутов матрицы и связанных элементов
классификаторов для выбранного элемента классификатора
Function Evaluate(element1_ID)
'Данные матрицы "Процессы <> Оргструктура"
matrix_GUID="{5CC981B9-1A3C-F1E4-272B-96CB58B489A5}"
matrixAttributeName="Количество требуемых оргединиц"
'Данные классификатора "Оргструктура"
costWorkPlaceAttributeName="Стоимость рабочего места в час"
'Выполнение вычислений
set matrix = document.ItemByGUID(matrix_GUID)
cellCount=matrix.Matrix.CellCount(element1_ID)
result=0
count=0
for i=0 to cellCount-1
element2_ID=matrix.Matrix.SecondClassificatorID(element1_ID,i)
r1=matrix.Matrix.AttributeValueDouble(element1_ID,element2_ID,matrixAttributeName)
r2=document.itemByID(element2_ID).AttributeValueDouble(costWorkPlaceAttributeName)
if (r1>=0) and (r2>=0) then
result=result+r1*r2
count=count+1
end if
next
if (count=0) then
result=-1.2345678E9
end if
Evaluate=result
End Function
52
Бизнес-инженер
Пример работы с матрицами
Расчет значения атрибута ячейки матрицы на основе составляющих ее классификаторов и
других атрибутов матрицы
Function Evaluate(cellID,firstID,secondID)
'Данные классификатора "Процессы"
processGUID="{8CE93A56-F6B2-C54B-F172-4E5FBD709A5A}"
timeProcessAttributeName="Время выполнения процесса, минут"
amountPerformanceProcessAttributeName="Количество выполнений процесса"
'Данные классификатора "Оргструктура"
costWorkPlaceAttributeName="Стоимость рабочего места в час"
'Данные матрицы "Процессы <> Оргструктура"
attributeName1="Количество требуемых оргединиц"
attributeName2="Степень участия в процессе"
'Выполнение вычислений
r1=document.ItemByID(cellID).Matrix.AttributeValueDouble(firstID,secondID,attributeName1)
r2=document.ItemByID(cellID).Matrix.AttributeValueDouble(firstID,secondID,attributeName2)
test1=document.ItemByGUID(processGUID).IsParentSelf(firstID)
test2=document.ItemByGUID(processGUID).IsParentSelf(secondID)
if test1 then
processID=firstID
orgID=secondID
end if
if test2 then
processID=secondID
orgID=firstID
end if
r3=document.ItemByID(processID).AttributeValueDouble(timeProcessAttributeName)
r4=document.ItemByID(processID).AttributeValueDouble(amountPerformanceProcessAttributeName)
r5=document.ItemByID(orgID).AttributeValueDouble(costWorkPlaceAttributeName)
if (r1>=0) and (r2>=0) and (r3>=0) and (r4>=0) and (r5>=0) then
result=r1*r2*r3*r4*r5/60
else
result=-1.2345678E9
end if
Evaluate=result
End Function
53
Бизнес-инженер
Работа с типами данных
set element = document.itemByID(element_ID)
определение объекта элемента классификатора с заданным ID
customType_ID = element.CustomType
определение для элемента классификатора ID элемента типа данных
custom_ID = element.CustomID
определение для элемента классификатора ID выбранного значения типа данных
elementTypeValueString =
document.ItemByID(customType_ID).DataTypeMgr.GetCustomString(custom_ID)
определение для элемента классификатора строковой части выбранного значения типа данных
elementTypeValueReal =
document.ItemByID(customType_ID).DataTypeMgr.GetCustomDouble(custom_ID)
определение для элемента классификатора действительной части выбранного значения типа
данных
elementTypeValueComplexString =
document.ItemByID(customType_ID).DataTypeMgr.GetCustomDisplayString(custom_ID)
определение для элемента классификатора составной строки, состоящей из строковой и
действительной частей выбранного значения типа данных
elementTypeValuePictograms =
document.ItemByID(customType_ID).DataTypeMgr.GetCustomGraphicStream(custom_ID)
определение для элемента классификатора пиктограммы выбранного значения типа данных
54
Бизнес-инженер
Пример работы с типами данных
Определение названия типа элемента комплексного классификатора по его
идентификатору
Function Evaluate(element_ID)
set element
= document.ItemById(element_ID)
customType_ID =
custom_ID
=
element.CustomType
element.CustomID
if (customType_ID>0) and (custom_ID>0) then
set customType = document.ItemByID(customType_ID)
customName
= customType.DataTypeMgr.GetCustomString(custom_ID)
end if
if (customName<>"") then
result = "Тип данных: " + customName
end if
Evaluate = result
End Function
55
Бизнес-инженер
Пример формирования отчетов по классификатору
Вывод в отчет нумерации и названий дочерних элементов классификатора до 2-го уровня
(включительно)
Function Report(element_ID)
set element = document.ItemByID(element_ID)
set child
= element.FirstChild(2,"")
result="<table border='1'>"
test=true
do while test
child_ID=child.ThisID
childNumeration=document.numeration(child_ID,0)
childName=child.ItemName
result=result+"<tr><td>"+childNumeration+"</td>"
result=result+"<td>"+childName+"</td></tr>"
set child=element.NextChild
on error resume next
n=child.ThisID
if (Err.Number<>0) then
test=false
end if
on error goto 0
loop
Report=result+"</table>"
End Function
56
Бизнес-инженер
Пример формирования отчетов по классификатору
Вывод в отчет нумерации и
названий дочерних элементов
классификатора до 2-го уровня
(включительно)
57
Бизнес-инженер
Пример формирования отчетов по классификатору
Вывод в отчет нумерации и названий всех дочерних элементов классификатора в виде
иерархического списка с помощью использования рекурсивной функции
Function Report(element_ID)
maxLevel=-1 ' Задание количества иерархических уровней выводимых,
' подэлементов. Значение -1 выводит все уровни.
levelNumber=1
result=ChildDataForReport(element_ID,levelNumber,maxLevel)
Report=result
End Function
Function ChildDataForReport(element_ID,levelNumber,maxLevel)
set element=document.ItemByID(element_ID)
childCount=element.ChildCount
if (childCount>0) and ((levelNumber<=maxLevel) or (maxLevel<0)) then
result=result+"<ul style='margin-left: 30px;'>"
for i=0 to childCount-1
set child=element.Childs(i)
child_ID=child.ThisID
childNumeration=document.Numeration(child_ID,0)+" "
childName=child.ItemName
result=result+"<p>"+childNumeration+childName+"</p>"
result=result+ChildDataForReport(child_ID,levelNumber+1,maxLevel)
next
result=result+"</ul>"
end if
ChildDataForReport=result
End function
58
Бизнес-инженер
Пример формирования отчетов по классификатору
Вывод в отчет нумерации и названий всех
дочерних элементов классификатора в виде
иерархического списка с помощью
использования рекурсивной функции
59
Бизнес-инженер
Пример формирования отчетов по матрице
Вывод в отчет нумерации и названий элементов классификаторов, связанных через
матрицу с выбранным элементом классификатора
Function Report(element1_ID)
'Данные матрицы "Процессы <> Оргструктура"
matrixGUID="{5CC981B9-1A3C-F1E4-272B-96CB58B489A5}"
matrixAttributeName="Роль в процессе"
matrixAttributeValue="Ответственный за процесс"
'Формирование данных для вывода в отчет
result="<table border='1'>"
set matrix = document.ItemByGUID(matrixGUID).Matrix
cellCount=matrix.CellCount(element1_ID)
for i=0 to cellCount-1
element2_ID=matrix.SecondClassificatorID(element1_ID,i)
sRole=matrix.AttributeValueString(element1_ID,element2_ID,matrixAttributeName)
if (sRole=matrixAttributeValue) then
set element2=document.ItemByID(element2_ID)
element2Numeration=document.numeration(element2_ID,0)
element2Name=element2.ItemName
result=result+"<tr><td>"+element2Numeration+"</td>"
result=result+"<td>"+element2Name+" ("+sRole+")"+"</td></tr>"
end if
next
Report=result+"</table>"
End Function
60
Бизнес-инженер
Пример формирования отчетов по матрице
Вывод в отчет нумерации и названий элементов классификаторов,
связанных через матрицу с выбранным элементом классификатора
61
Бизнес-инженер
Работа с графическими диаграммами.
Общая индексация фигур графической диаграммы
Объект MSVisio содержит свойства и методы для работы с графической диаграммой
(График-студио диаграммой). Ссылку на этот объект получают через свойство VisioObject
объекта Classificator.
Этот объект может использовать два типа индексации элементов (объектов и связей)
графических диаграмм и два соответствующих способа обращения к их данным.
Для решения различных задач удобна своя система индексов.
Общие индексы
Первый способ индексирования основан на рассмотрении всей совокупности элементов,
размещенных на графической диаграмме (см. следующий слайд).
На диаграмме процесса, приведенной на следующем слайде, размещены 44 элемента (20
объектов и 24 связи). Порядок их индексации, аналогичный тому, порядку который использует
программный продукт Mocrosoft Visio, за тем исключением, что в Mocrosoft Visio первый
элемент имеет индекс 1, а в объекте MSVisio Бизнес-инженер - 0.
К данным 44 элементов, размещенных на диаграмме можно получить доступ по общему
индексу, который меняется от 0 до 43. Далее такая система индексов называется общей
индексацией.
Помимо методов объекта MSVisio программного продукта Бизнес-инженер для работы с
графическими диаграммами, возможно использование также прямых методов программы
Mocrosoft Visio.
Внимание! В случае использования исходных методов Microsoft Visio общая
индексация фигур на графической диаграмме начинается с 1, а в случае использования
методов Бизнес-инженер, разработанных на основе исходных методов, индексация
начинается с 0.
62
Бизнес-инженер
Работа с графическими диаграммами.
Общая индексация фигур графической диаграммы
63
Бизнес-инженер
Входящая и выходящая индексация фигур диаграммы
Входящие и выходящие индексы связей
Второй способ индексирования основан на рассмотрении одного элемента и всех его
входящих и исходящих связей.
Ниже на рисунке слева для объекта графической диаграммы процесса показан пример
индексации по входящим связям, а на рисунке справа индексация элементов по выходящим
связям. Далее такая система индексов будет называться соответственно входящей индексацией и
выходящей индексацией.
64
Бизнес-инженер
Другие виды индексация фигур диаграммы
Помимо использования общих, входящих и выходящих индексов к данным элементов
графической диаграммы можно обращаться по идентификаторам.
Существует две системы идентификаторов, каждая из которых удобна для определенных
задач.
Идентификатор (Visio)
Первая из них используется в программном продукте Microsoft Visio, который задает каждому
элементу диаграммы индивидуальный идентификатор.
В программном продукте Бизнес-инженер для удобства используются идентификаторы
Microsoft Visio с отрицательным знаком и все они меньше нуля.
Но эта система идентификации не всегда достаточна, так в программном продукте Бизнесинженер один и тот же элемент проекта может присутствовать на различных графических
диаграммах, то есть одному элементу проекта на различных диаграммах могут соответствовать
различные графические фигуры (элементы), которые должны иметь одинаковые идентификаторы,
соответствующие идентификатору элемента проекта.
Идентификатор (thisID)
По этой причине часто используется вторая система идентификаторов (thisID) элементов
программного продукта Бизнес-инженер.
Так как некоторые элементы графических диаграмм могут не иметь идентификатора (thisID),то
для работы с ними применяется первая система идентификаторов.
Поэтому в методах и свойствах программного продукта Бизнес-инженер, работающих с
графическими диаграммами используются обе системы идентификаторов, при этом
идентификаторы программного продукта Microsoft Visio называются идентификаторами (Visio), а
идентификатор программного продукта Бизнес-инженер - идентификаторами (thisID).
65
Бизнес-инженер
Виды методов работы с графическими диаграммами
 Исходные методы MS Visio
- Общий индекс начинается с 1
- Приведены в документации по MS Visio
https://msdn.microsoft.com/en-us/library/aa730930(v=office.12).aspx
 Методы Бизнес-инженер
- Общий индекс начинается с 0
- Написаны с использованием исходных методов
MS Visio
- Приведены в документации по объектами и
методам сценариев системы Бизнес-инженер
66
Бизнес-инженер
Получение ссылок на объекты графических диаграмм
Для методов MS Visio
set shapes = visioControl.Document.Pages(1).Shapes
определение объекта фигуры графической диаграммы НА графической
диаграмме для методов MS Visio
set shapes =
document.ItemByID(element_ID).Node.VisioObject.Document.Pages(1).Shapes
определение объекта фигуры графической диаграмме ВНЕ графической
диаграммы для методов MS Visio
Для методов Бизнес-инженер
set shapes = Diagram
определение объекта фигуры графической диаграмме НА графической
диаграмме для методов Бизнес-инженер
set shapes = document.ItemByID(element_ID).Node.VisioObject
определение объекта фигуры графической диаграмме ВНЕ графической
диаграммы для методов Бизнес-инженер
67
Бизнес-инженер
Работа с графическими диаграммами методами MS Visio
Определение значений фигур и присвоение значений фигурам графической диаграммы
set shapes = visioControl.Document.Pages(1).Shapes
определение объекта фигуры графической диаграмме НА графической диаграмме для методов
MS Visio
set shapes = document.ItemByID(element_ID).Node.VisioObject.Document.Pages(1).Shapes
определение объекта фигуры графической диаграмме ВНЕ графической диаграммы для
методов MS Visio
shapeCount = shapes.Count
определение количества фигур на графической диаграмме
set shape = shapes(Index)
определение фигуры на графической диаграмме с общим индексом "Index" (возможные значения
общего индекса: 1,...,shapeCount)
shape_text = shape.Text
определение строки в текстовом поле фигуры
shape.Text = shape_text
присвоение строки текстовому полю фигуры
shape_master_name = shape.Master.Name
определение имени мастера фигуры
shape_name = shape.Name
определение имени фигуры
shape_name_universal = shape.NameU
определение универсального имени фигуры
shape_NameID = shape.NameID
определение имени ID фигуры
68
Бизнес-инженер
Работа с графическими диаграммами методами MS Visio
Определение значений фигур, присвоение значений фигурам, добавление и удаление
фигур на графической диаграмме
cell_Exist = shape.CellExists("BeginX",0)
определение наличия у фигуры ячейки "BeginX", которая есть только у связей/стрелок (возможные
значения -1 если ячейка существует и 0 если ячейка отсутствует)
value_real = shape.Cells("PinX").Result("mm")
определение действительного значения ячейки "PinX" фигуры в единицах "mm" (задание единиц для
значения не является обязательным)
shape.Cells("PinX").Result("mm") = value_real
присвоение действительного значения ячейке "PinX" фигуры в единицах "mm" (задание единиц для
значения не является обязательным)
formula = shape.Cells("PinX"). Formula
определение формулы ячейки "PinX" фигуры
shape.Cells("PinX").Formula/FormulaU/FormulaForceU = "formula"
присвоение формулы ячейке "PinX" фигуры
set shape = shape. Drop(shape_master_name,PinX,PinY)
добавление новой фигуры на графической диаграмме с заданием имени мастера и координат
shape.Delete
удаление фигуры на графической диаграмме (при этом общие индексы других фигур с большими
значениями уменьшаются на единицу)
shape = addedShape
определение фигуры, добавленной на графическую диаграмму – используется в событийном сценарии
"Добавление элемента [после]"
shape = activeWindow.Selection.PrimaryItem
определение фигуры, выделенной на графической диаграмме – используется в событийном сценарии
«Выделение элемента [после]"
69
Бизнес-инженер
Пример работы с графическими диаграммами
Перестановка двух фигур на графической диаграмме
Function VisioScript(visioControl)
set shapes
shapeCount
= visioControl.Document.Pages(1).Shapes
= shapes.Count
if (shapeCount<>2) then
Exit Function
end if
set shape1 = shapes(1)
set shape2 = shapes(2)
x1=shape1.Cells("PinX").Result("")
x2=shape2.Cells("PinX").Result("")
shape1.Cells("PinX").Result("")=x2
shape2.Cells("PinX").Result("")=x1
y1=shape1.Cells("PinY").Result("")
y2=shape2.Cells("PinY").Result("")
shape1.Cells("PinY").Result("")=y2
shape2.Cells("PinY").Result("")=y1
End Function
70
Бизнес-инженер
Пример работы с графическими диаграммами
Событийный сценарий «Добавление элемента [после]» - изменяет цвет заливки
фигуры процесса при его добавлении на графическую диаграмму, а также изменяет
толщину линии для всех добавляемых на графическую диаграмму связей
Function AfterShapeAdd(VisioControl, AddedShape)
'Задание имени мастера фигуры процесса
processMasterName="Process2BETEC"
'Код выполняемый после добавления фигуры процесса на диаграмму
shape=vbNull
s=addedShape.Master.Name
test1 = (InStr(1,s,processMasterName+".",1)=1)
test2 = (StrComp(s,processMasterName)=0)
if (test1 or test2) then
set shape=addedShape
shape.cells("FillForegnd").formulaForceU="RGB(84,139,212)"
end if
'Код выполняемый после добавления связи на диаграмму
shape=vbNull
set shape=addedShape
if (shape.cellExists("BeginX",0)) then
shape.cells("LineWeight").result("pt")=1.5
end if
End Function
71
Бизнес-инженер
Пример работы с графическими диаграммами
Событийный сценарий «Выделение элемента [после]» - изменяет цвет и толщину
границы фигуры при ее выделении на графической диаграмме
Function AfterSelectionChange(VisioControl, ActiveWindow)
set shape=activeWindow.Selection.PrimaryItem
shape.Cells("LineColor").FormulaU="RGB(84,139,212)"
shape.Cells("LineWeight").Result("pt")=3
End Function
72
Бизнес-инженер
Пример работы с графическими диаграммами
Семантическая проверка «Определение несвязанных стрелок на диаграмме» - изменяет цвет
и толщину стрелок, несвязанных своими началом или окончанием с другими фигурами
Function VisioScript(visioControl)
set shapes=visioControl.Document.Pages(1).Shapes
for i=1 to shapes.Count
set shape=shapes(i)
if (shape.CellExists("BeginX",0)) then
formulaBeginX = shape.Cells("BeginX").Formula
formulaEndX
= shape.Cells("EndX").Formula
testBegin1
= (InStr(1,formulaBeginX,"PAR(PNT",1)=0)
testBegin2
= (InStr(1,formulaBeginX,"_WALKGLUE",1)=0)
testBegin
= (testBegin1 and testBegin2)
testEnd1
= (InStr(1,formulaEndX,"PAR(PNT",1)=0)
testEnd2
= (InStr(1,formulaEndX,"_WALKGLUE",1)=0)
testEnd
= (testEnd1 and testEnd2)
if (testBegin or testEnd) then
shape.Cells("LineWeight").ResultForce("pt") = 1.5
shape.Cells("LineColor").FormulaForceU
= "RGB(255,0,0)"
else
shape.Cells("LineWeight").ResultForce("pt") = 0.24
shape.Cells("LineColor").FormulaForceU
= "RGB(0,0,0)"
end if
end if
next
End Function
73
Бизнес-инженер
Работа с графическими диаграммами методами Бизнес-инженер
Определение значений фигур и присвоение значений фигурам графической диаграммы
set shapes = Diagram
определение объекта фигуры графической диаграмме НА графической диаграмме для методов
Бизнес-инженер
set shapes = document.ItemByID(element_ID).Node.VisioObject
определение объекта фигуры графической диаграмме ВНЕ графической диаграммы для методов
Бизнес-инженер
shapeCount = shapes.ShapeCount
определение количества фигур на графической диаграмме
connectionCount = shapes. ConnectionsCount
определение количества связей на графической диаграмме
shape_text = shapes. shapes.ShapeText(Index)
определение строки в текстовом поле фигуры на графической диаграмме с общим индексом "Index"
(возможные значения общего индекса: 0,...,shapeCount-1)
shapes. shapes.ShapeText(Index) = shape_text
присвоение строки текстовому полю фигуры на графической диаграмме с общим индексом "Index"
(возможные значения общего индекса: 0,...,shapeCount-1)
shape_master_name = shapes.MasterName(Index)
определение имени мастера фигуры на графической диаграмме с общим индексом "Index" (возможные
значения общего индекса: 0,...,shapeCount-1)
shape_custom_master_name = shapes.MasterElementName(Index)
определение пользовательского имени мастера фигуры на графической диаграмме с общим индексом
"Index" (возможные значения общего индекса: 0,...,shapeCount-1)
74
Бизнес-инженер
Работа с графическими диаграммами методами Бизнес-инженер
Определение входящих и выходящих связей, а также связанных фигур
inConnectCount = shapes.InConnectsCount(Index)
определение количества входящих связей для фигуры на графической диаграмме с общим индексом
"Index" (возможные значения общего индекса: 0,...,shapeCount-1)
outConnectCount = shapes.OutConnectsCount(Index)
определение количества выходящих связей для фигуры на графической диаграмме с общим индексом
"Index" (возможные значения общего индекса: 0,...,shapeCount-1)
inConnectIndex = shapes.ConnectedInArrowIndex(Index,IndexInConnect)
определение общего индекса входящей связи для фигуры на графической диаграмме с общим индексом
фигуры "Index" (возможные значения общего индекса: 0,...,shapeCount-1) и входящим индексом связи
"IndexInConnect" (возможные значения номера: 0,..., inConnectCount-1)
outConnectIndex = shapes.ConnectedOutArrowIndex(Index,IndexOutConnect)
определение общего индекса выходящей связи для фигуры на графической диаграмме с общим
индексом фигуры "Index" (возможные значения общего индекса: 0,...,shapeCount-1) и выходящим
индексом связи "IndexOutConnect" (возможные значения номера: 0,..., outConnectCount-1)
sourceShapeIndex = shapes.ConnectedInShapeIndex(Index,IndexInConnect)
определение общего индекса фигуры-поставщика входящей связи для фигуры на графической
диаграмме с общим индексом фигуры "Index" (возможные значения общего индекса: 0,...,shapeCount-1) и
входящим индексом связи "IndexInConnect" (возможные значения номера: 0,..., inConnectCount-1)
targetShapeIndex = shapes.ConnectedOutShapeIndex(Index,IndexOutConnect)
определение общего индекса фигуры-потребителя выходящей связи для фигуры на графической
диаграмме с общим индексом фигуры "Index" (возможные значения общего индекса: 0,...,shapeCount-1) и
выходящим индексом связи "IndexOutConnect" (возможные значения номера: 0,..., outConnectCount-1)
75
Бизнес-инженер
Работа с графическими диаграммами методами Бизнес-инженер
Определение значений фигур, присвоение значений фигурам, добавление и удаление
фигур на графической диаграмме
shape_element_ID = shape.NodeID(Index)
определение идентификатора элемента классификатора, с которым связана фигура
графической диаграммы с общим индексом "Index" (возможные значения общего индекса:
0,...,shapeCount-1)
shape_hint = shape. MasterHintStyle(Index)
определение всплывающей подсказки фигуры графической диаграммы с общим индексом "Index"
(возможные значения типа данных: 0,1,... – см. документацию по сценариям)
shape_hint = shape. shapeID(Index)
определение идентификатора (MS Visio) фигуры графической диаграммы с общим индексом
"Index" (возможные значения типа данных: 0,1,... – см. документацию по сценариям)
shape_type = shape. ShapeType(Index)
определяет тип данных фигуры графической диаграммы с общим индексом "Index" (возможные
значения типа данных: 0,1,... – см. документацию по сценариям)
set shape = shape. AddShape(shape_text,master_name,PinX,PinY)
добавление новой фигуры на графической диаграмме с заданием строки для текстового поля
фигуры, имени мастера и координат
shape.Delete(Index)
удаление фигуры на графической диаграмме с общим индексом фигуры "Index" (возможные
значения общего индекса: 0,...,shapeCount-1, при этом общие индексы других фигур с большими
значениями уменьшаются на единицу)
76
Бизнес-инженер
Работа с графическими диаграммами методами Бизнес-инженер
Свойства и
методы
Краткое
описание
property
ShapeID(index)
Определяет
идентификатор
(Visio) фигуры с
заданным
общим
индексом.
property
BeginArrowPosition
(ArrowVisioID)
Определяет
границу фигуры,
к которой
присоединено
начало стрелки.
property
EndArrowPosition
(ArrowVisioID)
Типы свойств, возвращаемые значения, параметры и примеры
Тип свойства
Только чтение.
Возвращаемые значения
vbInteger - идентификатор (Visio) элемента графической диаграммы.
Параметры
index (vbInteger) – общий индекс элемента графической диаграммы.
Возможные значения: 0,...,shapeCount-1.
Тип свойства
Только чтение.
Возвращаемые значения
vbInteger – значение определяющее границу фигуры, к которой
присоединено начало/окончание стрелки.
Определяет
Возможные значения:
границу фигуры,
0 - Левая граница;
к которой
1 - Правая граница;
присоединено
окончание
2 - Нижняя граница;
стрелки.
3 - Верхняя граница.
В случае отсутствия присоединения, возвращается значение: -1.
Параметры
ArrowVisioID(vbInteger) - идентификатор (Visio) стрелки. Возможные
значения: < 0 (меньше нуля).
77
Бизнес-инженер
Пример работы с графическими диаграммами
Семантическая проверка «Определение несвязанных стрелок на диаграмме» - изменяет цвет
и толщину стрелок, несвязанных своими началом или окончанием с другими фигурами
Function VisioScript(visioControl)
set shapes=visioControl.Document.Pages(1).Shapes
for i=1 to shapes.Count
set shape = shapes(i)
if (shape.CellExists("BeginX",0)) then
shapeVisioID
= diagram.ShapeID(i-1)
positionBegin = diagram.BeginArrowPosition(shapeVisioID)
positionEnd
= diagram.EndArrowPosition(shapeVisioID)
if ((positionBegin<0) or (positionEnd<0)) then
shape.Cells("LineWeight").ResultForce("pt") =
shape.Cells("LineColor").FormulaForceU
=
else
shape.Cells("LineWeight").ResultForce("pt") =
shape.Cells("LineColor").FormulaForceU
=
end if
1.5
"RGB(255,0,0)"
0.24
"RGB(0,0,0)"
end if
next
End Function
78
Бизнес-инженер
Пример формирования отчетов по графической диаграмме
Вывод в отчет элементов графической диаграммы процесса
с указанием предшествующих и последующих элементов
Function Report(element_ID)
'Задание параметров
connectName="WorkFlowBETEC" 'Задание имени мастера фигуры связи
tableTag="width='50%' border='1' bordercolor='#000000' cellpadding='5' cellspacing='0'"
tableTag=TableTag+" style='border-collapse:collapse; font-family:Arial; font-size:10pt;
color:#000000;'"
'Формирование данных для отчета
set shapes=document.itemByID(element_ID).Node.VisioObject
shapeCount=shapes.ShapeCount
'Определение количества фигур
result="<table "+tableTag+"><tr bgcolor='E6E6E6' style='text-align: center; font-weight: bold;'>"
result=result+"<td>№</td><td>Событие/Процесс</td><td>Предшествующий элемент</td><td>Последующий
элемент</td></tr>"
for i=0 to shapeCount-1
'i – общий индекс фигуры
s=shapes.MasterName(i)
'Определение имени мастера фигуры
if (InStr(1,s,connectName,1)<>1) then
inConnectCount=shapes.InConnectsCount(i)
'Определение количества входящих связей фигуры
outConnectCount=shapes.OutConnectsCount(i) 'Определение количества выходящих связей фигуры
result=result+"<tr valign='top'><td align='center'>"
result=result+Cstr(i+1)+".</td><td>"+shapes.ShapeText(i)+"</td><td>"
for j=0 to inConnectCount-1
sourceShapeIndex=shapes.ConnectedInShapeIndex(i,j) 'Определение общего индекса фигуры-поставщика
для входящей связи
result=result+shapes.ShapeText(sourceShapeIndex)+"<br>"
next
result=result+"</td><td>"
for j=0 to outConnectCount-1
targetShapeIndex=shapes.ConnectedOutShapeIndex(i,j) 'Определение общего индекса фигурыпотребителя для выходящей связи
result=result+shapes.ShapeText(targetShapeIndex)+"<br>"
next
result=result+"</td></tr>"
end if
next
Report=result+"</table>"
End Function
79
Бизнес-инженер
Пример формирования отчетов по графической диаграмме
Вывод в отчет элементов графической диаграммы процесса
с указанием предшествующих и последующих элементов
80
Бизнес-инженер
Пример формирования отчетов по графической диаграмме
Вывод в отчет элементов графической диаграммы процесса
с указанием предшествующих и последующих элементов
81
Бизнес-инженер
Пример формирования отчетов по графической диаграмме
Вывод в отчет элементов графической диаграммы процесса
с указанием входов, выходов, поставщиков и потребителей
Function Report(element_ID)
'Задание параметров
connectName="ObjectFlowBETEC" 'Задание имени мастера фигуры связи
tableTag="width='80%' border='1' bordercolor='#000000' cellpadding='5' cellspacing='0'"
tableTag=TableTag+" style='border-collapse:collapse; font-family:Arial; font-size:10pt; color:#000000;'"
'Формирование данных для отчета
set shapes=document.ItemByID(element_ID).Node.VisioObject
shapeCount=shapes.ShapeCount
'Определение количества фигур
result="<table "+tableTag+"><tr bgcolor='E6E6E6' style='text-align: center; font-weight: bold;'>"
result=result+"<td>№</td><td>Процесс</td><td>Поставщик</td><td>Вход</td><td>Выход</td><td>Потребитель</td></tr>"
for i=0 to shapeCount-1
'i – общий индекс фигуры
s=shapes.MasterName(i)
'Определение имени мастера фигуры
if (InStr(1,s,connectName,1)<>1) then
inConnectCount=shapes.InConnectsCount(i)
'Определение количества входящих связей фигуры
outConnectCount=shapes.OutConnectsCount(i) 'Определение количества выходящих связей фигуры
result=result+"<tr valign='top'><td align='center'>"
result=result+Cstr(i+1)+".</td><td>"+shapes.ShapeText(i)+"</td><td>"
for j=0 to inConnectCount-1
sourceShapeIndex=shapes.ConnectedInShapeIndex(i,j) 'Определение общего индекса фигуры-поставщика для
входящей связи
result=result+shapes.ShapeText(sourceShapeIndex)+"<br>"
next
result=result+"</td><td>"
for j=0 to inConnectCount-1
inConnectIndex=shapes.ConnectedInArrowIndex(i,j)
'Определение общего индекса входящей связи
result=result+shapes.ShapeText(inConnectIndex)+"<br>"
next
result=result+"</td><td>"
for j=0 to outConnectCount-1
outConnectIndex=shapes.ConnectedOutArrowIndex(i,j) 'Определение общего индекса выходящей связи
result=result+shapes.ShapeText(outConnectIndex)+"<br>"
next
result=result+"</td><td>"
for j=0 to outConnectCount-1
targetShapeIndex=shapes.ConnectedOutShapeIndex(i,j) 'Определение общего индекса фигуры-потребителя для
выходящей связи
result=result+shapes.ShapeText(targetShapeIndex)+"<br>"
next
result=result+"</td></tr>"
end if
next
Report=result+"</table>"
End Function
82
Бизнес-инженер
Пример формирования отчетов по графической диаграмме
Вывод в отчет элементов графической диаграммы процесса
с указанием входов, выходов, поставщиков и потребителей
83
Бизнес-инженер
Пример формирования отчетов по графической диаграмме
Вывод в отчет элементов графической диаграммы процесса
с указанием входов, выходов, поставщиков и потребителей
84
Бизнес-инженер
5. Вызов методов внешних СОМ-серверов
Пример создания файла на диске, вывод в него данных и открытие файла
Function outputDataFile(outputData)
set myFSO = CreateObject("Scripting.FileSystemObject")
set writeResult = myFSO.CreateTextFile("C:/Выполнение KPI.htm",true)
writeResult.writeLine(outputData)
writeResult.Close
set myFSO = nothing
set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "C:/Выполнение KPI.htm", "", "", "", 1
set objShell = nothing
End Function
85
Бизнес-инженер
Пример вызова функций Microsoft Excel (продолжение)
86
Бизнес-инженер
Пример вызова функций Microsoft Excel (продолжение)
87
Бизнес-инженер
Пример вызова функций Microsoft Excel (продолжение)
88
Бизнес-инженер
Пример диаграммы сформированной системой Бизнесинженер с помощью вызова функций Microsoft Excel
Диаграмма самооценки уровня зрелости по стандарту АРБ СКОРУБП
1. Продуктовая составляющая
5
9. Клиентская составляющая
(раскрытие информации о
4
процессе и его
составляющих)
3
2. Технологическая
составляющая
2
8. Имущественнотехническая
составляющая
3. Организационная
составляющая
1
0
7. Кадровая
составляющая
4. Управленческая
составляющая
6. Программнотехническая составляющая
5. Информационная
составляющая
Уровень зрелости по составляющей
89
Общий уровень зрелости
Бизнес-инженер
Обмен данными с внешними источниками
Пример обращения к базе данных Microsoft Access
90
Бизнес-инженер
Работа с файлами на диске
Пример работы с файлами на диске
' Listing 1. Code to Change Only One File Attribute
Const ReadOnly = 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\foo.txt")
If file.Attributes And ReadOnly Then
file.Attributes = file.Attributes And (Not ReadOnly)
Else
file.Attributes = file.Attributes Or ReadOnly
End If
' Listing 2. The RenameFile Function
Function RenameFile(oldName,newName)
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile(oldName)
file.Name = newName
End Function
91
Бизнес-инженер
Пример работы с файлами на диске (продолжение)
' Listing 3. Script Using FSO Objects to Obtain a Directory Listing
Const Archive = 0
Const ReadOnly = 1
Const Hidden = 2
Const System = 4
folderName = "C:\«
' Gets the collection of files.
Set fso = CreateObject("Scripting.FileSystemObject")
Set files = fso.GetFolder(folderName).Files
' Loops through the list of files.
str = ""
For Each f In files
str = str & f.Name & vbTab & f.Size _
& vbTab & FormatAttrib(f.Attributes)
str = str & vbCrLf
Next
MsgBox str
Function FormatAttrib(attr)
Dim str
str = ""
If attr And Archive Then str = str & "Archive, "
If attr And ReadOnly Then str = str & "Readonly, "
If attr And Hidden Then str = str & "Hidden, "
If attr And System Then str = str & "System, "
str = str & "Normal"
FormatAttrib = str
End Function
92
Бизнес-инженер
Download