Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

серверные события и техпроцессы в Инмете

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы специалистов по адаптации системы
Предыдущая тема :: Следующая тема  
Автор Сообщение
Владимир Фещенко



Зарегистрирован: 14.05.2005
Сообщения: 13
Откуда: ООО "Жихарь", Ангарск

СообщениеДобавлено: Сб 29 Апр 2006 06:36    Заголовок сообщения: серверные события и техпроцессы в Инмете Ответить с цитатой

Начал разбираться с техпроцессами и соответственно
возникает масса вопросов.
"застрял" на такой задаче:
нужно, чтобы в момент регистрации входящего обращения, автоматически
создавался новый процесс (тип создаваемого процесса зависит от типа
и предмета обращения), при этом, создание процесса должно быть
"незаметным" для регистратора (делопроизводителя), т.е. после
регистрации обращения, регистратора не должно "выкидывать" на
страницу с техпроцессами.
Попытался реализовать создание процесса в серверном событии
входящего обращения <data-event name="InLetterServerEvent"
on-after-create="InLetterInitProcessing">, и столкнулся с тем, что
не могу получить данные создаваемого объекта (входящего обращения),
т.е. при попытке обратиться к переменным Request или HttpRequest
сервер жутко ругается, что таких переменных не знает Sad

Таким образом имеются два (пока) вопроса:
1. Через какие объекты ИнМеты или IIS я могу получить доступ к
данным сохраняемого объекта в обработчике серверного события ИнМеты.
2. Какие объекты подсистемы "Техпроцессы" доступны на серверной и клиентской
сторонах, и какие у них есть свойства и методы (хотя бы просто
перечень, без описания функциональности).
Как вариант, сделал отдельный .asp документ, обращение к которому происходит из
обработчика onsave входящего обращения следующим образом:
---------------------------------------------------------
create_process_ex_url = InMeta.AppBaseURL & "tptools/create_process_ex.asp?class=General/Letter&id=" & sID
InMeta.HTMLWindow.showModalDialog(create_process_ex_url)
---------------------------------------------------------
обработчик .asp выглядит так:
<!-- #include file="../techproc/common_inc.asp" -->
<%
Dim sClass, sID, aLetterKindID, aTemplateID, sResolutionID, sProcessID, anObjectXml, aTemplate, aStep, anActors, anActor
dim anAttrTemplates, anAttrTemplate, anAttr, j, sAttrName, sFlag
dim InMetaManager
set InMetaManager = Application("MetaManager")
sClass = Request.QueryString("class")
sID = Request.QueryString("id")
set anObjectXml = XmlUtils.CreateDoc("root")
ReceiveObjectData anObjectXml, sClass, sID
aLetterKindID = GetNodeText(anObjectXml.selectSingleNode("//LetterKind"))
sResolutionID = anObjectXml.selectSingleNode("//aggregation[@role='General/Resolution']/object").attributes.getnameditem("id").nodeValue
ReceiveObjectData anObjectXml, "General/LetterKind", aLetterKindID
aTemplateID = GetNodeText(anObjectXml.selectSingleNode("//ProcessStepTemplate"))
'определение исполнителя
'исполнитель резолюции
ReceiveObjectData anObjectXml, "General/Resolution", sResolutionID
anObjectXml.save("C:\temp\resolution.xml")
sResolutionID = anObjectXml.selectSingleNode("//aggregation[@role='General/ResolutionExecutor']/object").attributes.getnameditem("id").nodeValue
'исполнитель
ReceiveObjectData anObjectXml, "General/ResolutionExecutor", sResolutionID
sResolutionID = GetNodeText(anObjectXml.selectSingleNode("//Executor"))
'сотрудник
ReceiveObjectData anObjectXml, "General/Executor", sResolutionID
sResolutionID = GetNodeText(anObjectXml.selectSingleNode("//Employee"))
'actor
ReceiveObjectData anObjectXml, "General/Employee", sResolutionID
sResolutionID = GetNodeText(anObjectXml.selectSingleNode("//Actor"))
set anActors = tpDomain.QueryObjects("Actor", "OID=?", sResolutionID)
if anActors.Count=0 then
Err.Raise vbObjectError, "", "Нету исполнителя с идентификатором " & sResolutionID
end if
set anActor = anActors(0)
set aTemplate = tpDomain.GetObject("ProcessStepTemplate", aTemplateID)
set aStep = tpDomain.CreateInMetaObject("ProcessStep")
aStep.Associations("Template") = aTemplate
' определить ACTOR по исполнителю резолюции
SetStepState aStep, "Выполняется", anActor
sFlag = ""
set anAttrTemplates = aTemplate.Aggregations("AttributeTemplate")
for j = 0 to anAttrTemplates.count - 1
set anAttrTemplate = anAttrTemplates(j)
if anAttrTemplate("CardinalityMin") > 0 then
set anAttr = AddStepAttr(aStep, anAttrTemplate)
sAttrName = anAttrTemplate("Name")
if anAttrTemplate("Name") = "RLETTER" then
sFlag = "check"
anAttr("Value") = sID
end if
end if
next
sProcessID = aStep.OID
'anObjectXml.save("C:\temp\cpe.xml")
Sub ReceiveObjectData(ByVal xmlObjectDataResponseDoc, ssClass, ssID)
Dim xmlObjectDataRequestDoc, InMetaRequest
set xmlObjectDataRequestDoc = XmlUtils.CreateDoc("root")
xmlObjectDataRequestDoc.loadXML("<get class=""" & ssClass & """ id=""" & ssID & """/>")
set InMetaRequest = Server.CreateObject("InMetaSQ.InMetaRequest")
InMetaRequest.Init InMetaManager, Session("user")
InMetaRequest.HandleGetDataRequest xmlObjectDataRequestDoc, xmlObjectDataResponseDoc
set InMetaRequest = Nothing
End Sub
Function GetNodeText(xNode)
dim chl, ch, result
result = ""
set chl=xNode.childNodes
For Each ch in chl
If ch.nodeType=3 and ch.text<>"{{null}}" Then
result = ch.text
End if
Next
GetNodeText = result
End Function
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML LANG="ru" DIR="ltr">
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251" />
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript" />
<TITLE>Работа с модальным окном</TITLE>
<SCRIPT>
close();
</SCRIPT>
</HEAD>
<BODY>
sClass = <%=sClass%><BR>
sID = <%=sID%><BR>
aLetterKindID = <%=aLetterKindID%><BR>
aTemplateID = <%=aTemplateID%><BR>
sProcessID = <%=sProcessID%><BR>
sResolutionID = <%=sResolutionID%><BR>
sAttrName = <%=sAttrName%><BR>
sFlag = <%=sFlag%><BR>
</BODY>
</HTML>
этот вариант работает, но мне не нравится применение таких "обходных манёвров".
может кто посоветует, как правильно решить эту задачу.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы специалистов по адаптации системы Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB