|  Приложение 3: примеры сценариев
 
  Получение ФИО пользователя
 
class DVScript
 
 {
 
 // Получение ФИО пользователя DV
 
 // На входе – переменная “UserDV” типа “Пользователь DV”
 
 // На выходе – переменная “User” типа “Строка”
 
 public void Execute(DocsVision.Workflow.Runtime.ProcessInfo process, PassState passInfo)
 
 {
 
 try
 
 {
 
 process.LogMessage("Получение ФИО Пользователя DV...");
 
 // Переменная типа пользователь DV
 
 ProcessVariable oEmployeeID = process.GetVariableByName("UserDV");
 
 // Переменная типа строка
 
 ProcessVariable oUserFIO = process.GetVariableByName("User");
 
 //Получаем Гейт к DocsVision
 
 DVGate m_oDVGate = (DVGate)process.Gates[DVGate.GateID];
 
 //Получаем Сотрудника
 
 DVPrincipal oEmployee = (DVPrincipal)oEmployeeID.Value;
 ///Подготоваливаем строки вида Фамилия И.О.
 
 string sTempFIO = "";
 if (oEmployee.LastName.Length > 0) { sTempFIO = oEmployee.LastName; }
 
 if (oEmployee.FirstName.Length > 0) { sTempFIO += " " + oEmployee.FirstName.Substring(0, 1) + "."; }
 
 if (oEmployee.MiddleName.Length > 0) { sTempFIO += oEmployee.MiddleName.Substring(0, 1) + "."; }
 
 oUserFIO.Value = sTempFIO;
 
 process.LogMessage("ФИО:" + sTempFIO);
 
 }
 
 catch (Exception ex)
 
 {
 
 // запись в журнал ошибки исполнения
 
 process.LogMessage("Ошибка выполнения скрипта:" + ex.Message);
 
 }
 
 return;
 
 }
 
 }
 
  Получение заместителя пользователяclass DVScript
 
 {
 
 // вход: переменная "UserDV" процесса типа Пользователь DV
 
 // выход: переменная "Deputy" процесса типа Пользователь DV,
 
 // которая вычисляется как первый заместитель у пользователя из переменной1
 
 public void Execute(DocsVision.Workflow.Runtime.ProcessInfo process, PassState passInfo)
 
 {
 
 try
 
 {
 
 process.LogMessage("Получение заместителя...");
 
 // Переменная типа пользователь DV
 
 ProcessVariable oUserDV = process.GetVariableByName("UserDV");
 
 ProcessVariable oDeputy = process.GetVariableByName("Deputy");
 
 DVPrincipal dvUser = (DVPrincipal)oUserDV.Value;
 
 process.LogMessage("Пользователь: " +
 
 dvUser.LastName + " " + dvUser.FirstName + " " + dvUser.MiddleName);
 
 DVPrincipal dvDeputy = dvUser.ActiveDeputy;
 
 oDeputy.Value = dvDeputy;
 
 // Результат
 
 process.LogMessage("Заместитель: " +
 
 dvDeputy.LastName + " " + dvDeputy.FirstName + " " + dvDeputy.MiddleName);
 
 }
 
 catch (Exception ex)
 
 {
 
 // запись в журнал ошибки исполнения
 
 process.LogMessage("Ошибка выполнения скрипта:" + ex.Message);
 
 }
 
 return;
 
 }
 
 }
 
 
 
 Получение URL-ссылки на карточку
 class DVScript
 
 {
 
 // вход:
 
 // переменная "Card" процесса типа "Карточка DV" – карточка
 
 // выход:
 
 // переменная "URL" процесса типа строка – содержит URL на карточку
 private DVGate m_oDVGate;
 public void Execute(DocsVision.Workflow.Runtime.ProcessInfo process, PassState passInfo)
 
 {
 
 try
 
 {
 
 process.LogMessage("Формирование URL карточки...");
 
 // Переменные
 
 ProcessVariable oURL = process.GetVariableByName("URL");
 
 ProcessVariable oCard = process.GetVariableByName("Card");
 
 // Получаем шлюз
 
 m_oDVGate = (DVGate)process.Gates[DVGate.GateID];
 
 // Приводим тип переменной
 
 DVCard dvCard = (DVCard)oCard.Value;
 
 // Формируем URL
 
 string strUrl = oURL.Value.ToString();
 
 if (m_oDVGate.BaseURL != null)
 
 strUrl += Environment.NewLine + "<" + m_oDVGate.BaseURL + ((m_oDVGate.BaseURL.IndexOf('?') > 0) ? "&" : "?") + "CardID=" + dvCard.ID + ">";
 
 // Результат
 
 oURL.Value = strUrl;
 
 process.LogMessage("Url: " + strUrl);
 
 }
 
 catch (Exception ex)
 
 {
 
 // запись в журнал ошибки исполнения
 
 process.LogMessage("Ошибка выполнения скрипта:" + ex.Message);
 
 }
 
 return;
 
 }
 
 }
 
 
 
 Перемещение ярлыка карточки
 
class DVScript
 
 {
 
 // вход:
 
 // переменная "TargetFolder" процесса типа "Папка DV" – целевая папка
 
 // переменная "Card" процесса типа "Документ DV" – карточка
 // выход:
 
 // перемещает сильную ссылку карточки "Card" в "TargetFolder"
 private DVGate m_oDVGate;
 public void Execute(DocsVision.Workflow.Runtime.ProcessInfo process, PassState passInfo)
 
 {
 
 try
 
 {
 
 process.LogMessage("Перемещение ярлыка...");
 
 // Переменные
 
 ProcessVariable oTargetFolder = process.GetVariableByName("TargetFolder");
 
 ProcessVariable oCard = process.GetVariableByName("Card");
 
 // Приводим типы переменных
 
 DVFolder dvTargetFolder = (DVFolder)oTargetFolder.Value;
 
 DVCard dvCard = (DVCard)oCard.Value;
 
 // Получаем шлюз
 
 m_oDVGate = (DVGate)process.Gates[DVGate.GateID];
 
 process.LogMessage("Получили шлюз");
 
 // получаем сессию
 
 UserSession oSes = m_oDVGate.Session;
 
 process.LogMessage("Получили сессию");
 
 // получение карточки папок
 
 FolderCard oFoldersCard = (FolderCard)oSes.CardManager.get_Card(oSes.CardManager.GetCardByRow(dvTargetFolder.ID, "FE27631D-EEEA-4E2E-A04C-D4351282FB55").ID);
 
 process.LogMessage("Получили карточку папок");
 
 // получение ярлыка
 
 Shortcut oShortcut = oFoldersCard.GetHardLink(dvCard.ID);
 
 process.LogMessage("Получили ярлык, перемещаем");
 
 // перемещение ярлыка
 
 oShortcut.Move(dvTargetFolder.ID);
 
 process.LogMessage("Ярлык перемещен успешно.");
 
 }
 
 catch (Exception ex)
 
 {
 
 // запись в журнал ошибки исполнения
 
 process.LogMessage("Ошибка выполнения скрипта:" + ex.Message);
 
 }
 
 return;
 
 }
 
 }
 
  Удаление унаследованных прав на карточкуclass DVScript
 
 {
 
 // Удаление унаследованных прав на карточке
 
 // На входе – переменная “Карточка” типа “Карточка DV”
 
 public void Execute(DocsVision.Workflow.Runtime.ProcessInfo process, PassState passInfo)
 
 {
 
 try
 
 {
 
 ProcessVariable varCard = process.GetVariableByName("Карточка");
 // получение шлюза
 
 DVGate dvGate;
 
 dvGate = (DVGate)process.Gates[DVGate.GateID];
 // получение объекта сессии для доступа к API
 
 UserSession session = dvGate.Session;
 // получение дескриптора
 
 string cardID = ((DVCard)varCard.Value).ID;
 
 ISecurable secureCard = session.AccessManager.GetSecureCard(cardID);
 
 byte[] descBytes = (byte[])secureCard.ADsSecurityDescriptor;
 
 CommonSecurityDescriptor desc = new CommonSecurityDescriptor(true, false, descBytes, 0);
 // отключение наследования
 
 desc.SetDiscretionaryAclProtection(true, false);
 // сохранение измененного дескриптора
 
 descBytes = new byte[desc.BinaryLength];
 
 desc.GetBinaryForm(descBytes, 0);
 
 secureCard.ADsSecurityDescriptor = descBytes;
 process.LogMessage("Унаследованные права удалены");
 
 }
 
 catch (Exception ex)
 
 {
 
 process.LogMessage("Ошибка выполнения скрипта:" + ex.Message);
 
 }
 
 return;
 
 }
 }
 
 
            3Copyright © DocsVision, 2002–2010. Все права защищены v.4.5.0
 
 
 
 | 
    
    
      
      
      
      
      
        |  | DocsVision 6 sr1: Руководство по установке и настройке Особенности конфигурации серверного программного обеспечения для установки DocsVision 5
 
 |  | Техническое задание Сопровождение и разработка прикладных решений на платформе «DocsVision» в 2016 году
 
 | 
      
        |  | Руководство по установке Иркутск, 2016 г Конфигурирование программного обеспечения перед установкой серверной части Docsvision 25
 
 |  | Эпидемиологическое лечение пациентов Синдромное (эмпирическое, эпидемиологическое) лечение пациентов с клиническими проявлениями иппп и их половых партнеров в практике...
 
 | 
      
        |  | Руководство разработкой системы документооборота Разработка приложений для пользователей и партнеров на платформе AndroidДостижения
 
 |  | Информационное письмо для партнеров В параметры функции коррекции бд добавлен чек «Контроль пустых мнемокодов» с возможностью их автоматического заполнения
 
 | 
      
        |  | На русском языке Членам нп «Гидроэнергетика России» все материалы Международной комиссии по большим плотинам доступны на портале для партнеров в разделе...
 
 |  | На русском языке Членам нп «Гидроэнергетика России» все материалы Международной комиссии по большим плотинам доступны на портале для партнеров в разделе...
 
 | 
      
        |  | Преимущества для партнеров Партнерам с действующим компетенциями уровня Gold или Silver дополнительно доступна профессиональная техническая поддержка по телефону...
 
 |  | Данное методическое пособие издается в соответствии с Соглашением... Пособие содержит материалы и лексику, которые могут быть необходимы при преподавании и использовании профессионально ориентированного...
 
 | 
      
        |  | Инновационная деятельность. 2009. №1 (6) Научно-аналитический журнал для ученых, производственников, разработчиков новой продукции, инвесторов, властных структур и организаторов...
 
 |  | Методическое пособие Саратов 2008 г. Организация комплексной системы... Методическое пособие предназначено для руководителей и преподавателей- организаторов обж образовательных учреждений
 
 | 
      
        |  | Главный редактор: Атоян Вазген Рубенович Научно-аналитический журнал для ученых, производственников, разработчиков новой продукции, инвесторов, властных структур и организаторов...
 
 |  | Информационное письмо для партнеров Начиная с версии 71 мастер-диск и инсталлятор единый для Парус-Бюджет, Парус-Муниципальное образование, Парус-Бюджетный учет поселений,...
 
 | 
      
        |  | Информационное письмо для партнеров Начиная с версии 71 мастер-диск и инсталлятор единый для Парус-Бюджет, Парус-Муниципальное образование, Парус-Бюджетный учет поселений,...
 
 |  | Информационное письмо для партнеров Начиная с версии 71 мастер-диск и инсталлятор единый для Парус-Бюджет, Парус-Муниципальное образование, Парус-Бюджетный учет поселений,...
 
 |