|
|
|
OEBS: Concurrent Programm и Commit
|
|||
|---|---|---|---|
|
#18+
Интересует мнения знатоков OEBS Предпосылки: 1. Для переноса данных в OEBS существуют открытые интерфейсы. 2. Данные заносятся в таблицы открытого интерфейса, выполняется commit 3. Запускается паралельная программа, которая обслуживает данный интерфейс. Так как данная программа работает в другой сессии, собственно и нужен commit Теперь рассмотрим усложненный случай. Когда имеется MultiOrg, т.е. много организаций (ORG_ID) 1. Для этого во многих таблицах открытого интерфейса, имеется поле ORG_ID которое надо заполнить идентификатором организации 2. Далее процесс похож, как описано выше Но как выяснилось, данные переносятся, только той организации, к которой привязано полномочие под которым будет работать паралельная программа Так вот в связи с этим вопросы 1. Верно, ли что все интерфейсы которые имеют поле ORG_ID за один запуск переносят данные только своей организации? 2. Что для переноса данных другой организации, надо менять полномочия, во время работы программы, для текущего пользователя? 3. Верно ли что после работы паралельной программы, результаты ее работы закомичены? или как? Т.е. не понятен, момент, если программа работает в другой сессии, то данные по окончании работы (закрытию сессии), можно только подтвердить или отменить, и это другая же сессия не может сделать? Т.е. сессия откуда была запущена паралельная программа? 4. Паралельные программы, обычно что используют в качестве ORG_ID Контекст пользователя, или полномочия по умолчанию? 5. Как найти, и где. процедуры по миграции поставщико, чтобы самому разобраться? 6. Если например рассмотреть интерфейс поставщиков (VENDORS), и надо перенести данные для разных организаций. Как лучше поступить? a) Залить в таблицы открытого интерфейса, все данные, по всем организациям. Написать процедуру, которая в цикле будет менять полномочия, тем самым меняя контекст текущей организации, и каждый раз запускать паралельную программу. В этом случае непонятно когда выполнять коммит? В конце обработки одной организации, или когда все пройдут? А если сбой? b) Залить данные одной организации. Запустить паралельную программу, с полномочиями данной организации. Коммит или откат Повторить все сначала, для другой организации Какой вариант предпочтительнее? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 23:47 |
|
||
|
OEBS: Concurrent Programm и Commit
|
|||
|---|---|---|---|
|
#18+
1 - зависит от интерфейса, в некоторых модулях вообще нет org_id 2 - на любителя :) 3 - каждый конкарент стартует в собственной сессии и может управлять своей сессией как хочет 4 - SUBSTRB(USERENV('CLIENT_INFO'),1,10) 5 - начни с самого процесса 6 - если количество итераций описанного цикла не большое - лучше руками - контроля больше за ошибками загрузки Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 14:19 |
|
||
|
OEBS: Concurrent Programm и Commit
|
|||
|---|---|---|---|
|
#18+
авторВерно ли что после работы паралельной программы, результаты ее работы закомичены? или как? Т.е. не понятен, момент, если программа работает в другой сессии, то данные по окончании работы (закрытию сессии), можно только подтвердить или отменить, и это другая же сессия не может сделать? Т.е. сессия откуда была запущена паралельная программа? да. по успешному завершению работы программы делается commit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 14:48 |
|
||
|
OEBS: Concurrent Programm и Commit
|
|||
|---|---|---|---|
|
#18+
вот только после submit_request нужно делать commit. иначе запущенный конкаррет работать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 17:58 |
|
||
|
OEBS: Concurrent Programm и Commit
|
|||
|---|---|---|---|
|
#18+
1. Неверно. 2. Не всегда. 3. Не совсем понял. Другая сессия - не может. Если Вы пишете свой конкарент, можно сделать так, чтобы он сам вовремя сделал Rollback, если так нужно. 4. Если конкарент использует профиль, который выставлен и в полномочии, и у пользователя, система знает, какой выбрать. Правила описаны в документации. 5. Следует начать с User Guide по Кредиторам. 6. Перенос данных из интерфейсных таблиц в операционные выполняется стандартными конкарентами. Исходные данные, которые нужно залить, описаны в документации. К слову, вендоры не делятся по организациям. А откат сделать не получится, так что сначала потренируйтесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 18:45 |
|
||
|
OEBS: Concurrent Programm и Commit
|
|||
|---|---|---|---|
|
#18+
Так примерно разобрались. Спасибо. Т.е. 1. Для запуска конкурентной программы, надо все закоммитить в интерфейсных таблицах. 2. Так как процесс конкурентной программы, запускается в отдельном сеансе. 3. Результаты работы сеанса, автоматически коммитятся. Обработка ошибок обычно идет, как оставить неверные записи в интерфейсных таблица с кодом ошибки Все верно? А вот теперь не подскажет ли All, при работе с какими еще интерфейсами может случится "бяка" в виде, что запуск конкурент программы, переносит из интерфейсной таблицы данные только текущей организации, т.е. той что назначена в полномочиях пользователю? Интересуют в первую очередь интерфейсы для работы со складами, и все сопутствующие. Вот например перенос склада, он как транзакции о товарах грузит? Все или тоже только текущей организации? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 23:59 |
|
||
|
|

start [/forum/topic.php?fid=29&fpage=68&tid=1528355]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 355ms |

| 0 / 0 |
