Найти в Дзене

Скрипт IPS для сценария удаления подписей у документов в процессе согласования IPS.

Система IPS Search позволяет работать с электронными подписями к документу. Подписи могут быть как простыми так и усиленными. Стандартная методология работы с системой IPS предполагает, что в случае изменения документа, на котором есть активная подпись, подпись становится устаревшей. Она не удаляется. По разным причинам, такая стандартная методология IPS не подходит предприятиям в процессе настройки электронного согласования. Одно из решений- добавление скрипта в этап шаблона электронного согласования, который будет удалять подписи у всех документов, идущих по этому процессу согласования. Добавление сценария происходит в редакторе шаблонов процесса. Далее прикладываю сам пример скрипта. Мой пример удаляет ВСЕ подписи: и актуальные и устаревшие. Безусловно, что его можно модифицировать и удалять, например, только устаревшие, или только из определенной графы, или только подписи определенного пользователя. Для удобства, добавлю в скрипт комментарии, которые в коде помечаются //. Код

Система IPS Search позволяет работать с электронными подписями к документу. Подписи могут быть как простыми так и усиленными.

Стандартная методология работы с системой IPS предполагает, что в случае изменения документа, на котором есть активная подпись, подпись становится устаревшей. Она не удаляется.

-2

По разным причинам, такая стандартная методология IPS не подходит предприятиям в процессе настройки электронного согласования.

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

Добавление сценария происходит в редакторе шаблонов процесса.

-3

Далее прикладываю сам пример скрипта. Мой пример удаляет ВСЕ подписи: и актуальные и устаревшие. Безусловно, что его можно модифицировать и удалять, например, только устаревшие, или только из определенной графы, или только подписи определенного пользователя. Для удобства, добавлю в скрипт комментарии, которые в коде помечаются //. Код будет работать даже при наличии этих комментариев.

//Определяем основные библиотеки, которые потребуются нашему обработчику

using System;

using System.Text;

using System.Collections.Generic;

using Intermech;

using Intermech.Interfaces;

using Intermech.Interfaces.Workflow;

using Intermech.Signs.Interfaces;

using Intermech.Search.Interfaces;

//Определяем основной класс скрипта

public class Script

{

//Определяем основное свойства скрипта для обращения к библиотекам API

public ICSharpScriptContext ScriptContext { get; set; }

//Определяем метод чтения

public void Execute(IActivity activity)

{

int countDocs = activity.Attachments.Count;

//Цикл построчного получения документов, привязанных к процессу согласования

for(int i = 0; i < countDocs; i++)

{

if(activity.Attachments[i].Object == null)

{

continue;

}

//Добавляем в цикл метод удаления подписей, который будет описан ниже

DeactivateSignature(activity, activity.Attachments[i].Object);

}

}

//Определяем метод удаления подписей

private void DeactivateSignature(IActivity activity, IDBObject obj)

{

// Определяем интерфейс пользовательской сессии работы с подписями

IUserSession session = activity.Session;

ISignsService signService = session.GetCustomService(typeof(ISignsService)) as ISignsService;

//Определяем список параметров подписи

List<SignParams> signs = signService.GetObjectSignsParams(obj.ObjectID, session.SessionGUID);

if(signs == null)

{

return;

}

int countSigns = signs.Count;

//Массив получения списка подписей документа

for(int index = countSigns-1; index >=0; index--)

{

//Интерфейс получения связи по подписи

IDBRelation rel = session.GetRelation(obj.ObjectID, signs[index].SignObjectId, true);

if(rel != null)

{

//Команда удаления подписи

rel.Delete(Intermech.Consts.PurgeMode);

}

}

}

}

Для связи используйте контакты,

Газизулин Александр

ООО "АМКАД"

Telegram-канал для пользователей IPS

Max-канал для пользователей IPS

8-800-3333-205

gam@amcad.ru