Корпоративная работа приложений

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

Корпоративная работа приложений

Сообщение NewUser »

Привет всем!
Следующий трабл стопорит проект. Напомните, плиз, как побороть. Образно говоря:
1. Есть менеджер приложений, который может только запускать их.
2. Есть набор самих приложений, которые, выполнив свою работу (время работы – изначально неизвестное), выгружаются из памяти.
3. Менеджеру приложений, прежде чем запустить на выполнение то или иное приложение, необходимо убедиться, что это самое приложение в данный момент не загружено в память.
4. Вопрос: как с минимальными затратами (как программиста на реализацию, так и вычислительной техники на выполнение), реализовать пункт 3?
5. Мысли в слух:
- использовать общую таблицу: возрастает нагрузка на жесткий диск.
- использовать DDE – нет никакого опыта работы.
- использовать общую переменную: возможно ли, перспективно ли, если да, то как реализовать?

Все выше сказанное рассматриваю сквозь призму C6.3 ABC.
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Корпоративная работа приложений

Сообщение Алексей- Софт-Центр »

Добрый день!
Напомните, плиз, как побороть.

Типа не знал, не знал да и забыл)))) :wink:

Например:
! Проверка и запуск EXCEL.EXE
if ~instring ('EXCEL',upper(DDEquery()),1,1)
run(clip(PathWrd)&'\Excel.EXE')
loop
if INSTRING('EXCEL',upper(DDEquery()),1,1) then
break
end
end
end
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Вставка Inside in Global MAP:
!--------
MODULE('CWDDE')
DDEclient(<string>,<string>), ULONG, NAME('Cla$DDEclient')
DDEserver(<string>,<string>), ULONG, NAME('Cla$DDEserver')
DDEclose(ULONG), NAME('Cla$DDEclose')
DDEread(ULONG, UNSIGNED, STRING, <*?>), NAME('Cla$DDEread')
DDEwrite(ULONG, UNSIGNED, STRING, <*?>), NAME('Cla$DDEwrite')
DDEpoke(ULONG, STRING, STRING), NAME('Cla$DDEpoke')
DDEexecute(ULONG, STRING), NAME('Cla$DDEexecute')
DDEquery(<STRING>,<STRING>), STRING, NAME('Cla$DDEquery')
DDEchannel(),ULONG,NAME('Cla$DDEchannel')
DDEitem(),STRING,NAME('Cla$DDEitem')
DDEapp(),STRING,NAME('Cla$DDEapp')
DDEtopic(),STRING,NAME('Cla$DDEtopic')
DDEvalue(),STRING,NAME('Cla$DDEvalue')
DDEacknowledge(SIGNED),NAME('Cla$DDEacknowledge')
end
!--------



Но на вкус и цвет...)))

Алексей
Tuko_G
Бывалый
Сообщения: 95
Зарегистрирован: 09 Декабрь 2005, 10:47
Откуда: Tbilisi, Georgia
Контактная информация:

Re: Корпоративная работа приложений

Сообщение Tuko_G »

Privet,

можно использовать продукт от capesoft oddjob. работает нормально.

Tuko_Geo
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

Re: Корпоративная работа приложений

Сообщение NewUser »

Алексей- Софт-Центр писал(а): Типа не знал, не знал да и забыл)))) :wink:
Именно так! :D Хотя я почти уверен, что за последние 10 лет я читал здесь, на форуме, решение данной проблемы. Но, ни внутренним поиском по форуму, ни внешним googl-овским не нашел ничего соответствующего.
Алексей- Софт-Центр писал(а): Например:
! Проверка и запуск EXCEL.EXE
В данном примере, исходя из сообщения, выдаваемого Message(DDEquery()) можно понять, что в строку поиска скорее всего не попадают программы, в которых не реализовано DDE. Например, calc.exe, мояпрограмманаclarione.exe и т.д. Word и Exel – присутствуют. Как быть?
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

Re: Корпоративная работа приложений

Сообщение NewUser »

Tuko_G писал(а):можно использовать продукт от capesoft oddjob. работает нормально.
Продукт oddjob от capesoft – просто шикарнейший! Наверное, поэтому я не смог найти его в наших с вами приватских загашниках. :(
В таком случае типично созревает во всей красе вопрос, а не уровнять наши загашники по данному продукту? Если, конечно, Вы являетесь счастливым обладателем онного.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Корпоративная работа приложений

Сообщение Yufil »

В шаблонах FreeABC есть шаблон APITerminateProcess, с прилагаемыми функциями, возвращающими ID процесса по имени EXE-файла (или пустой соответственно) и строит очередь запущенных процессов
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Корпоративная работа приложений

Сообщение Алексей- Софт-Центр »

Добрый день!

Можно покапаться и здесь (библиотека ToolHelp32) :

CreateToolhelp32Snapshot function
http://msdn.microsoft.com/en-us/library ... s.85).aspx

Toolhelp32ReadProcessMemory function
http://msdn.microsoft.com/en-us/library ... s.85).aspx

Алексей
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7379
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Re: Корпоративная работа приложений

Сообщение Игорь Столяров »

NewUser писал(а):5. Мысли в слух: использовать общую таблицу: возрастает нагрузка на жесткий диск.
На мой субъективный взгляд первая мысль и есть самая правильная.
Не надо без необходимости усложнять простое и тем более лезть в DDE которое само по себе ресурсоемко,
а в контексте Clarion'а еще и непредсказуемо глючно. Не знаю, какая предполагагается интесивность запуска
процессов и опроса их состояния, что бы создать какую-либо ощутимую нагрузку на HDD ...
По крайне мере получишь простую, полностью управляемую и предсказуемую по поведению схему работы.
За теми кто отстал - не возвращаться. (С) Кодекс
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

Re: Корпоративная работа приложений

Сообщение NewUser »

Спасибо всем, кто откликнулся!
Из предложенных вариантов «взлетело» на ура решение, предложенное Yufil БГ (Билл Гейтс :). На что надо обращать в данном случае внимание – нужно подключить API: get last error from API от этой же FreeABC, а так же переводить название анализируемого процесса в нижний регистр.
Игорь Столяров писал(а): На мой субъективный взгляд первая мысль и есть самая правильная.
Не надо без необходимости усложнять простое и тем более лезть в DDE которое само по себе ресурсоемко,
а в контексте Clarion'а еще и непредсказуемо глючно. ...
По крайне мере получишь простую, полностью управляемую и предсказуемую по поведению схему работы.
Я вот тоже все больше склоняюсь к данному решению. И не только исходя из приведённых Игорем соображений. Тут вот какое дело.
Дочерние приложения занимают при их работе значительные ресурсы. Рано или поздно станет вопрос о сетевом локальном расширении этого комплекса. Менеджер приложений с полным их комплектом – на сервере. На клиентах – только набор приложений, запускаемых с сервера.
Тогда возникает вопрос, как поведет себя функция, реализованная FreeABC-шниками. Сможет ли она по сети отследить завершение процесса, исполняющегося на рабочей станции?
Тогда как с таблицами, работающими в локальной сети, большинство из нас работало неоднократно, и известны, как я надеюсь, все подводные сетевые камни.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Корпоративная работа приложений

Сообщение Yufil »

>>Тогда возникает вопрос, как поведет себя функция, реализованная FreeABC-шниками. Сможет ли она по сети >>отследить завершение процесса, исполняющегося на рабочей станции?

Не сможет, разумеется. Проверяются только приложения, запущенные на локальной машине. С другой стороны, упавшее приложение будет считаться работающим.
В этом случае есть такое решение. Заводится некий каталог (у меня в приложениях \Lock) , каждое приложение после запуска первым делом пытается удалить все файлы из этого каталога, а потом монопольно создать и открыть файл <приложение>.lock . Если не удалось, значит, это приложение всё ещё работает. Закрытие файла можно выполнить в конце приложения или вообще не закрывать, автоматически закроется.

Аналогично там же хранятся файлы с именами Tutornnn.lock и Studentnnnn.lock, указующие на список учащихся и преподов (программа обучального направления)

Список файлов, оставшихся в каталоге указывает на работающие в данный момент приложения, студентов и преподавателей.
Tuko_G
Бывалый
Сообщения: 95
Зарегистрирован: 09 Декабрь 2005, 10:47
Откуда: Tbilisi, Georgia
Контактная информация:

Re: Корпоративная работа приложений

Сообщение Tuko_G »

NewUser писал(а):
Tuko_G писал(а):можно использовать продукт от capesoft oddjob. работает нормально.
Продукт oddjob от capesoft – просто шикарнейший! Наверное, поэтому я не смог найти его в наших с вами приватских загашниках. :(
В таком случае типично созревает во всей красе вопрос, а не уровнять наши загашники по данному продукту? Если, конечно, Вы являетесь счастливым обладателем онного.

пришли мыло на totalinfogeo@gmail..com (но потом выложи на FTP если не трудно. ребята давайте жить дружно :P )
Аватара пользователя
morkovin
Ветеран
Сообщения: 909
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Корпоративная работа приложений

Сообщение morkovin »

пришли мыло на totalinfogeo@gmail..com (но потом выложи на FTP если не трудно.
Вроде бы праздники все прошли, а движения в сторону OddJob не произошло. :cry:
WBR, morkovin
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

Re: Корпоративная работа приложений

Сообщение NewUser »

morkovin писал(а):Вроде бы праздники все прошли, а движения в сторону OddJob не произошло. :cry:
Особо страждущих и прочих интересующихся чудо-продукт OddJob ждет-не дождется в привате чтобы его попробывали-пощупали.
Да, вот странность, он желает работать только напару с StringTheory. На наше счастье - он тоже есть у нас. Там же.
Ответить