Страница 1 из 1

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

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

Все выше сказанное рассматриваю сквозь призму C6.3 ABC.

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

Добавлено: 03 Май 2012, 12:07
Алексей- Софт-Центр
Добрый день!
Напомните, плиз, как побороть.

Типа не знал, не знал да и забыл)))) :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
!--------



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

Алексей

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

Добавлено: 03 Май 2012, 13:34
Tuko_G
Privet,

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

Tuko_Geo

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

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

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

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

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

Добавлено: 03 Май 2012, 17:41
Yufil
В шаблонах FreeABC есть шаблон APITerminateProcess, с прилагаемыми функциями, возвращающими ID процесса по имени EXE-файла (или пустой соответственно) и строит очередь запущенных процессов

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

Добавлено: 04 Май 2012, 14:30
Алексей- Софт-Центр
Добрый день!

Можно покапаться и здесь (библиотека 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

Алексей

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

Добавлено: 04 Май 2012, 22:08
Игорь Столяров
NewUser писал(а):5. Мысли в слух: использовать общую таблицу: возрастает нагрузка на жесткий диск.
На мой субъективный взгляд первая мысль и есть самая правильная.
Не надо без необходимости усложнять простое и тем более лезть в DDE которое само по себе ресурсоемко,
а в контексте Clarion'а еще и непредсказуемо глючно. Не знаю, какая предполагагается интесивность запуска
процессов и опроса их состояния, что бы создать какую-либо ощутимую нагрузку на HDD ...
По крайне мере получишь простую, полностью управляемую и предсказуемую по поведению схему работы.

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

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

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

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

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

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

Список файлов, оставшихся в каталоге указывает на работающие в данный момент приложения, студентов и преподавателей.

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

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

пришли мыло на totalinfogeo@gmail..com (но потом выложи на FTP если не трудно. ребята давайте жить дружно :P )

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

Добавлено: 11 Май 2012, 12:30
morkovin
пришли мыло на totalinfogeo@gmail..com (но потом выложи на FTP если не трудно.
Вроде бы праздники все прошли, а движения в сторону OddJob не произошло. :cry:

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

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