powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Программная установка базы на Cache 5.2
14 сообщений из 14, страница 1 из 1
Программная установка базы на Cache 5.2
    #34130228
Denis Sytenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, господа.
Помогите плс. Может кто сталкивался с такой проблемой. Имеем Cache 5.2 xml и файл с классами. Необходимо написать прогу (или может bat файл) которая.
1. Создаст область.
2. Создаст БД (включая dat файл)
3. Импортирут классы из xml.
4. Перекомпилирует классы.
Подскажите плс как эти действия реализовать программно с помошью VISM например.
...
Рейтинг: 0 / 0
Программная установка базы на Cache 5.2
    #34130255
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Denis SytenkovЗдравствуйте, господа.
Помогите плс. Может кто сталкивался с такой проблемой. Имеем Cache 5.2 xml и файл с классами. Необходимо написать прогу (или может bat файл) которая.
1. Создаст область.
2. Создаст БД (включая dat файл)
3. Импортирут классы из xml.
4. Перекомпилирует классы.
Подскажите плс как эти действия реализовать программно с помошью VISM например.

1
2
можем прислать

3
4
нету
...
Рейтинг: 0 / 0
Программная установка базы на Cache 5.2
    #34130304
Denis Sytenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MX -- ALEX,
1-2 пришлте плс my_cool_test@mail.ru,
3-4 невозможно или вы такого не делали?
...
Рейтинг: 0 / 0
Программная установка базы на Cache 5.2
    #34130746
c0de3code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Denis SytenkovMX -- ALEX,
1-2 пришлте плс my_cool_test@mail.ru,
3-4 невозможно или вы такого не делали?
1-2 выслал, проверяйте вашу крутую тестовую почту :)
3-4 не делали. Возможно ли - не знаем.
...
Рейтинг: 0 / 0
Программная установка базы на Cache 5.2
    #34131124
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В версии Cache' 5.1. и в Cache' 5.2., соответственно, есть новое API для создания областей, БД и т.д.
К моему сообщению прикреплен файл с описанием этого API.

Что касается загрузки и компиляции классов, посмотрите документацию класса %System.OBJ

Стоит еще подумать про настройки безопасности для Вашей системы.
Безопасно ли открывать доступ для работы с системной информацией для внешних программ?

Вадим
...
Рейтинг: 0 / 0
Программная установка базы на Cache 5.2
    #34131145
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3-4 ??
Но ведь доступны

d $system.OBJ.LoadDir()
и
d $system.OBJ.CompileProject()

Скрипт для закрузке прост - главное правильно разбить классы по проектам, ибо IMXO при компиляции проектов меньше всего проблем с зависимыми компиляциями.

От Пункта 1-2 я бы тоже не отказался :) pyton сабака mail.ru
...
Рейтинг: 0 / 0
Программная установка базы на Cache 5.2
    #34132186
c0de3code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Раз, два - и питону выслал.

Три, четыре - интересно.

-----------------------
МУМПС форева СКЛ маздай
...
Рейтинг: 0 / 0
Программная установка базы на Cache 5.2
    #34134503
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c0de3code Три, четыре - интересно.


Дык неясно что там сложного - вот пример програмки для закрузки сценария на основе .ini файла
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
Load(path) 
	new file,class,codes,rs
	if $$ReadINI(path,.file)
	{
		set class=""
		for  
		{
			set class=$o(file("COMMAND",class), 1 ,codes) quit:class=""  
			w !,codes
			x codes
		}
		set class=""
		for  
		{
			set class=$o(file("CLASS",class), 1 ,codes) quit:class=""  			
			set codes=$ZCVT(codes,"u")
			if class["*"
			{
				set class( 1 )=$TR(class,"*","")
				s rs=##class(%ResultSet).%New("%Library.ClassDefinition:ClassInfo")
				if rs'="",rs.Execute(class(1))=1
				{
					while rs.Next()
					{
						set class(2)=rs.Get("Name") quit:'(class( 2 )[class( 1 ))  
						d class(class( 2 ),codes)
					}
				}
			} else  { d class(class,codes)}
		}
		set class=""
		for  
		{
			set class=$o(file("ROUTINES",class), 1 ,codes) quit:class=""  
			set codes=$ZCVT(codes,"u")
			d rtn(class,codes)
		}
	} else {w "Не удалось открыть файл "_path,!}
	q
class(cls,cd)
	w !,cls," "
	if cd["D" {	w "Закрываем",$system.OBJ.MakeClassDeployed(cls)}
	quit  
rtn(cls,cd)
	w !,cls," "
	if cd["DM" { w "Удаляем MAC",##class(%Library.Routine).Delete(cls_".MAC", 1 )}
	if cd["DI" { w "Удаляем INT",##class(%Library.Routine).Delete(cls_".INT", 1 )}
	quit  
Read(afile,file)
	new io,str,i,mysc
	set io=$IO,$ZT="ReadErr",mysc= 1 
	open afile:"R": 5  
	if $t 
	{
		use afile
		for i= 1 : 1   
		{
			read str: 2  quit:$ZEOF  
			if $ZSTRIP(str,"<>W"," ")'="" {set file($i(file))=str}
		}
	} else  {set mysc=0}
ReadErr
	set $ZT=""
	set:'($ZE["<ENDOFFILE>") mysc= 0 
	use io close afile
	quit mysc
ReadINI(afile,fINI)
	new file,i,mysc,section,str,name
	set mysc=$$Read(afile,.file)
	quit:mysc'=1 mysc
	for i=1:1:$g(file,0)
	{
		set str=$ZSTRIP($g(file(i)),"<>W"," ")
		if $e(str,1,1)'=";"
		{
		if str? 1 "["1.ANP1"]" 
		{
			set section=$ZCVT($p($p(str,"[", 2 ),"]", 1 ),"u")
		}
		elseif str? 1 .ANP1"=".E
		{
			set name=$ZSTRIP($p(str,"=", 1 ),"<>W"," ")
			if name'=""
			{
				set fINI(section,name)=$e(str,$f(str,"="),$l(str))
			}
		}
		}
	}
	quit  1 
и собсно пример самого .ini
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
; команды для eXecute - загрузка, компиляции, настройка и т.д.
[COMMAND]
; укажите реальный путь к файл проекта "demo.xml"
 1 =d $system.OBJ.Load("X:\WORK\Project\demo_data.xml","d")
 2 =d $system.OBJ.Load("X:\WORK\Project\demo_sys.xml","d")
 3 =d $system.OBJ.CompileProject("PRJ_DEMO","c-orsu")
 4 =d ##class(%Studio.Project).Delete("PRJ_DEMO")

; пост-секции
; <имя класс>=D - произвести перевод класса в режим эксплуатации
[CLASS]
Demo.Class1=D

; <имя рутины>=DМ - удалить МАС код, DI - удалить INT код,
[ROUTINES]
demo=DMDI
...
Рейтинг: 0 / 0
Программная установка базы на Cache 5.2
    #34134513
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но в целом - картина не совсем ясна. Когда с год назад размышлял над проблемой "интсалятора"
то приходил к мнению что гораздо проще изготовить начальную базу со всеми классами.
В дистриб положить её .DAT файл.
Задача "интсалятора" - создать область, скопировать и подмонтировать инсталяционный .DAT - потом произвести настройку базовых справочников и собсно всё. :)
...
Рейтинг: 0 / 0
Программная установка базы на Cache 5.2
    #34137249
c0de3code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ptn c0de3code Три, четыре - интересно.


Дык неясно что там сложного - вот пример програмки для закрузки сценария на основе .ini файла


Спасибо за пример.

Вижу, что не так уж сложно.

Просто с классами не работаем.

У нас все в интах.

авторНо в целом - картина не совсем ясна. Когда с год назад размышлял над проблемой "интсалятора"
то приходил к мнению что гораздо проще изготовить начальную базу со всеми классами.
В дистриб положить её .DAT файл.
Задача "интсалятора" - создать область, скопировать и подмонтировать инсталяционный .DAT - потом произвести настройку базовых справочников и собсно всё. :)

Инсталлятором еще не занимались.

А хотелось бы.

Что-то из инсталлятора Вам удалось реализовать?

И над чем Вы размышляли - инсталляцией новой базы в существующую у пользователя Cache или же над автоматической инсталляцией Cache, а потом и новой базы?
...
Рейтинг: 0 / 0
Программная установка базы на Cache 5.2
    #34137875
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Что-то из инсталлятора Вам удалось реализовать?

Пока только отдельные куски - задача пока как бы второго плана. Неоформленная.

DAT подготавливать уже умею, с 5.1 можно через API наконец-то базами баловаться, да и ваш скрипт поможет - осталось еще разобраться со мапированием глобалов (не очень хочеться лезть "руками" в cache.cpf)

А вот со справочниками - то самое через, которую всё стремиться к звездам :). Ну это уже наши конкретные индивидуальные заморочки

Я считаю что нужно в первую очередь делать (silent инсталяциия каше + установка базы ). Но нужны оба варианта. С устоновкой и с использованием текущей - просто как настроена текущая неизвестно.
...
Рейтинг: 0 / 0
Программная установка базы на Cache 5.2
    #34139740
Peter Zarubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В свое время, я занимался разработкой инсталлятора.
Реализовал почти все пункты.
Конечно, без использования классов не обошлось.

Схема работы инсталлятора такая:

1.Весь код инсталлятора пишем в файле cbootuser.rsa (код отрабатывает при инсталляции каше)
2. В cbootuser.rsa создаетс рутина %ZSTART, которая запускается всего 1 раз при первом запуске Каше, а потом самоуничтожается.
В этой рутине у меня прописан кода на создания баз данных, областей, импорт классов из xml и.т.п
по окончании отработки этого кода, рутина %ZSTART уничтожается, чтобы при повторном запуске каше не отрабатывать.

Кому интересно, могу пример отправить.
...
Рейтинг: 0 / 0
Программная установка базы на Cache 5.2
    #34139741
Peter Zarubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, реализованы все 4 пункта
...
Рейтинг: 0 / 0
Программная установка базы на Cache 5.2
    #34139977
c0de3code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Peter ZarubinВ свое время, я занимался разработкой инсталлятора.
Реализовал почти все пункты.
Конечно, без использования классов не обошлось.

Схема работы инсталлятора такая:

1.Весь код инсталлятора пишем в файле cbootuser.rsa (код отрабатывает при инсталляции каше)
2. В cbootuser.rsa создаетс рутина %ZSTART, которая запускается всего 1 раз при первом запуске Каше, а потом самоуничтожается.
В этой рутине у меня прописан кода на создания баз данных, областей, импорт классов из xml и.т.п
по окончании отработки этого кода, рутина %ZSTART уничтожается, чтобы при повторном запуске каше не отрабатывать.

Кому интересно, могу пример отправить.

Мне - интересно. Отправьте, пожалуйста на мейл, указанный в моем профиле.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Программная установка базы на Cache 5.2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]