У меня есть приложение для управления, которое собирается в Symfony, и мне нужно извлекать информацию из другого приложения, Genesys, которое является корпоративным программным обеспечением для обработки различных типов сообщений от телефона до справки в онлайн-чате, база данных для исторических данных Genesys является объектно-ориентированной и простой в использовании. использовать, но мне интересно, что было бы лучшим способом взаимодействия с ним, мой проект Symfony уже настроил соединение, однако я не уверен, должен ли я просто получать информацию с помощью запросов или создавать и отображать объекты в соответствии с дизайном Genesys, и о SDK или библиотеке не может быть и речи, поскольку Genesys предоставляет такое программное обеспечение только для Java и Microsoft .Net.
config.yml
# Doctrine Configuration
doctrine:
dbal:
default_connection: cscc
connections:
cscc:
driver: pdo_mysql
host: "%database_host%"port: "%database_port%"dbname: "%database_name%"user: "%database_user%"password: "%database_password%"charset: UTF8
infomart:
driver: pdo_sqlsrv
host: '%database_host2%'
port: '%database_port2%'
dbname: '%database_name2%'
user: '%database_user2%'
password: '%database_password2%'
charset: UTF8
wfm:
driver: pdo_sqlsrv
host: '%database_host3%'
port: '%database_port3%'
dbname: '%database_name3%'
user: '%database_user3%'
password: '%database_password3%'
charset: UTF8
Учтите следующее:
типы запросов, которые я должен использовать в чистом подходе sql, довольно сложны и долго
Select DISTINCT INTERACTION_FACT_GI2.START_TS_TIME as cal_date
,RESOURCE_GI2.EMPLOYEE_ID as Windows_User
,RESOURCE_GI2.RESOURCE_NAME Ignition_ID
,RESOURCE_GI2.AGENT_FIRST_NAME
,RESOURCE_GI2.AGENT_LAST_NAME
,INTERACTION_FACT_GI2.SOURCE_ADDRESS as Phone
,INTERACTION_FACT_GI2.TARGET_ADDRESS
,TicketType
,AgentComment
,ItemCategory
,Problem
,Solution
,storeID
,LoyaltyNumber
,OrderNumber
FROM [IRF_USER_DATA_CUST_1]
JOIN INTERACTION_RESOURCE_FACT_GI2 ON (INTERACTION_RESOURCE_FACT_GI2.INTERACTION_RESOURCE_ID=IRF_USER_DATA_CUST_1.INTERACTION_RESOURCE_ID)
JOIN INTERACTION_FACT_GI2 on (INTERACTION_FACT_GI2.INTERACTION_ID=INTERACTION_RESOURCE_FACT_GI2.INTERACTION_ID)
JOIN DATE_TIME ON (DATE_TIME.DATE_TIME_KEY=INTERACTION_FACT_GI2.START_DATE_TIME_KEY)
JOIN MEDIA_TYPE ON (MEDIA_TYPE.MEDIA_TYPE_KEY=INTERACTION_RESOURCE_FACT_GI2.MEDIA_TYPE_KEY)
JOIN RESOURCE_GI2 ON (INTERACTION_RESOURCE_FACT_GI2.RESOURCE_KEY=RESOURCE_GI2.RESOURCE_KEY)
JOIN [INTERACTION_TYPE] ON [INTERACTION_TYPE].[INTERACTION_TYPE_KEY] = INTERACTION_FACT_GI2.INTERACTION_TYPE_KEY
Where [IRF_USER_DATA_CUST_1].TICKETTYPE =''
AND [IRF_USER_DATA_CUST_1].TICKETTYPE IS NOT NULL
AND MEDIA_TYPE.MEDIA_NAME IN ('Voice','Email')
AND [INTERACTION_TYPE].INTERACTION_TYPE= 'Inbound'
AND INTERACTION_FACT_GI2.START_TS_TIME > '2017-01-26 00:00:00' and INTERACTION_FACT_GI2.START_TS_TIME < '2017-01-27 23:59:59'
order by INTERACTION_FACT_GI2.START_TS_TIME
Вам обязательно нужно создавать и отображать объекты в базу данных Genesys.
Как правило, вы хотите оттолкнуть синтаксис и взаимодействие с поставщиком (в данном случае Genesys) от бизнес-кода веб-сайта.
Для этого создайте UserRepository
(и другие репозитории, в зависимости от того, какими объектами вы управляете), которые используются внутри GenesysClient
, В GenesysClient
Вы можете написать конкретные запросы Genesys.
Таким образом, ваш код отделен от Genesys, становится более читабельным, необходимые изменения могут быть сделаны внутри GenesysClient
если нужно.
Допустим, вы должны были подключиться к вашему infomart
подключение к базе данных, и вам нужно было получить $someID
который представляет ЧЕЛОВЕКА в PERSON
Таблица; Вы должны создать соединение и выполнить запрос следующим образом:
$someID = ...
...
$infomart = $this->get('doctrine.dbal.infomart_connection');
$query = "SELECT P.NAME,P.DATE,S.USER
FROM PERSON P
WHERE P.ID = '".$someID."'";
$result = $infomart->fetchAll( $query );
Вам все еще нужно будет определить правильный запрос SQL, который вам нужно выполнить на вашем MS SQL Server, но тогда нет никакой зависимости от любого другого пакета или API. Я делаю нечто подобное с базой данных Oracle.