Авторизуйтесь или зарегистрируйтесь, чтобы создать новую тему

Интеграция системы TeamWox в систему Oktell

aberro
5
aberro 26.09.2011 18:17 | #

Нужно интегрировать данные из модулей "Задачи" и "Чат" системы TeamWox в систему Oktell. Насколько мне объяснили, для этого нужно создать модуль TeamWox, который со своей стороны будет получать данные и пересылать их в систему Oktell. Я взял за основу модуль HelloWorld из TeamWox SDK.

Подскажите, пожалуйста, структуру базы данных для модулей "Задачи" и "Чат".

С TeamWox эффективность работы выше - доказано вашими конкурентами

Управлять большой компанией в наше время непросто. Информации извне поступает много, она разрозненная и хранится в разных местах. Чтобы собрать все нужные данные в случае необходимости, придется постараться. TeamWox легко решает этот вопрос – система представляет собой единое информационное пространство!

alexey
487
alexey 26.09.2011 20:48 | #

Для того, чтобы получать данные модулей "Задачи" и/или "Чат" необходимо воспользоваться API данных модулей. Подключите их в stdafx.h вашего проекта:

#include "..\..\SDK\API\Chat.h"
#include "..\..\SDK\API\Tasks.h"

На втором этапе инициализации модуля получите интерфейсы менеджеров необходимых модулей:

//+------------------------------------------------------------------+
//| Второй этап инициализации                                        |
//+------------------------------------------------------------------+
TWRESULT CHelloWorldManager::PostInitialize()
  {
//---
   if(RES_FAILED(res=m_server->GetInterface(TWX_TASKS, L"ITasks", (void**)&m_task_manager)) ||
      m_task_manager==NULL)
       ExtLogger(NULL,LOG_STATUS_ERROR) << "failed to get ITasks interface";
//---
   if(RES_FAILED(res=m_server->GetInterface(TWX_CHAT, L"IChatManager", (void**)&m_chat_manager)) ||
      m_chat_manager==NULL)
       ExtLogger(NULL,LOG_STATUS_ERROR) << "failed to get IChatManager interface";
//---
   return(RES_S_OK);
  }

В методах, которые будут заниматься обработкой данных запросите и обработайте список заданий:

//+------------------------------------------------------------------+
//| Синхронизация заданий                                            |
//+------------------------------------------------------------------+
TWRESULT CHelloWorldManager::TasksSync(const Context *context)
  {
//--- проверки
   if(context==NULL)        ReturnError(RES_E_INVALID_ARGS);
   if(m_task_manager==NULL) ReturnError(RES_E_FAIL);
//--- инициализируем параметры запроса заданий
   ITaskRecord *records[20]={0};
   int          filter     =TASKS_FILTER_OPENED | TASKS_FILTER_GROUP_ALL;
   int          order      =TASKS_ORDER_DATE_DESC;
   int          start      =0;
   int          count      =_countof(records);
//--- запросим список заданий
   if(RES_FAILED(res=m_task_manager->TasksListGet(context,filter,order,records,start,&count)))
       ReturnErrorExt(res,context,"failed to get task records");
//--- обработаем список
   for(size_t i=0;i<count;i++)
     {
      if(records[i]==NULL) continue;
      //--- работаем с записью
      //--- освобождаем ресурсы
      records[i]->Release();
      records[i]=NULL;
     }
//---
   return(RES_S_OK);
  }

или диалогов чата:

//+------------------------------------------------------------------+
//| Синхронизация диалогов чата                                      |
//+------------------------------------------------------------------+
TWRESULT CHelloWorldManager::ChatSync(const Context *context)
  {
//--- проверки
   if(context==NULL)        ReturnError(RES_E_INVALID_ARGS);
   if(m_chat_manager==NULL) ReturnError(RES_E_FAIL);
//--- инициализируем параметры запроса списка диалогов
   IChatDialog *records[20]={0};
   INT64        group_id   =CHAT_GROUP_USER;
   INT64        filter_id  =CHAT_FILTER_IN;
   int          order      =CHAT_ORDER_BY_DATE_DESC;
   int          start      =0;
   int          count      =_countof(records);
//--- запросим список диалогов
   if(RES_FAILED(res=m_chat_manager->DialogsGet(context, group_id, filter_id, order, records, start, &count)))
       ReturnErrorExt(res,context,"failed to get dialogs");
//--- обработаем список
   for(size_t i=0;i<count;i++)
     {
      if(records[i]==NULL) continue;
      //--- работаем с записью о диалоге
      //--- освобождаем ресурсы
      records[i]->Release();
      records[i]=NULL;
     }
   //---
   return(RES_S_OK);
  }
К списку тем

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий