AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.01.2004, 11:40   #1  
DenisS is offline
DenisS
Участник
 
65 / 24 (1) +++
Регистрация: 01.09.2003
Опять про кэш (*.aoc)
Большинству из присутствующих на форуме известна проблема обновления приложения в 3-х уровневой конфигурации и борьбы с кэшем объектов клиента (файлов *.aoc). Можно, конечно, как предлагалось где-то на форуме удалять эти файлы вручную (а если клиентов где-то 100?!!!) или автоматически при каждом запуске клиента (bat-файл), но при этом смысл кэширивания теряется.
Предлагается следующий алгоритм:
1. Перед сборкой новой версии приложения меняем ей Build Number путем запуска Axapta c Sartup Command = setBuildNo 377-79.XX, где XX - номер нашей версии.
2. Запускаем Axapta в 2-х уровневой конфигурации - она сама запрашивает компиляцию, синхронизацию и т.п.
3 Отдаем версию клиенту (заказчику)
4. Администратор заказчика останавливает AOS (весь сервис), копирует приложение, запускает первый раз клиента с ключем Sartup Command = updateBuildNo
5. Администратор заказчика запускает 2-х уровневого клиента и производит синхронизацию БД
6. Администратор заказчика запускает AOS
7. Пользователи начинают работать с системой.

К сожалению, возникают ситуации, когда объект, сохраненный в кэше клиента отличается от объекта в новом приложении и приложение начинает вести себя, мягко говоря, странно. Для решения этой проблемы предлагается следующее:
в классе Application объявляются 2 статических метода:

PHP код:
static client SysBuildNo clientApplicationBuildNo()
{
    ;
    return 
ApplicationVersion::applBuildNo();
}

static 
server SysBuildNo serverApplicationBuildNo()
{
    ;
    return 
ApplicationVersion::applBuildNo();

в методе Application.startUpPost
пишем:

[/PHP]
if (Application::clientApplicationBuildNo() != Application::serverApplicationBuildNo())
{
Args args;

info("Обнаружена новая версия приложения.");

SysFlushAOD::main(args);
SysFlushData::main(args);
SysFlushDictionary::main(args);
}
[/PHP]

К сожалению, этот метод тоже не всегда срабатывает. Предполагаю, что он не срабатывает, когда в кэше клиента отсутствует метод clientApplicationBuildNo().

Вопрос: Можно-ли проверить наличие в кэше клиента определенного объекта? В данном случае статического метода.

Если есть еще какие-либо соображения по борьбе с кэшем клиента, буду очень признателен.

Да,у меня Axapta 2.5.
В 3.0 - такие же проблемы?
Старый 23.01.2004, 13:21   #2  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
По идее в в классе info есть метод:

PHP код:
void watchDog()
{
    
this.setTimeOut(identifierStr(watchDog), #watchdogInterval, false);
    
SysUserLog::updateLogoutTime();
    
xSession::updateAOC();

который с переодичностью в 15 минут автоматически запускает процесс обновления кэша, может что-то не так работает, попробуй покопать в этом направлении.

кстати у xSession есть метод для удаления АОС...
Старый 23.01.2004, 13:27   #3  
DenisS is offline
DenisS
Участник
 
65 / 24 (1) +++
Регистрация: 01.09.2003
Про watchDog я знаю. Однако этот метод работает раз в 15 минут. А за эти 15 минут можно натворить черт знает что. Я хочу, чтобы клиент при загрузке при обнаружении новой версии обновлял кэш нафиг и все. Для этого мне надо определить есть ли у меня в кеше статический метод или нет.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
А построение перекрестных ссылок опять сожрет всю память и завесит систему нафих Alex_K DAX: Администрирование 15 04.09.2009 22:00
Кэш и отчет Biosoft DAX: Программирование 4 30.03.2005 16:27
Кэш на сервере? nicko DAX: Администрирование 14 16.09.2004 14:50
Ax 3.0 Некорректное завершение - ошибка. Не лечится. Локальный кэш? dirigente DAX: Администрирование 4 20.11.2003 13:11
кэш клиента andreynikolai DAX: Программирование 1 15.09.2003 18:37

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:19.