Почему имя файла компании предоставляется веб-службой?

Я понимаю, что для доступа к компании, которая в настоящее время не открыта в QuickBooks, веб-служба должна предоставить QuickBooks Web Connector расположение файла в качестве возвращаемого значения для вызова authenticate().

Мне это кажется обратным. Почему веб-служба должна сообщать веб-коннектору, где находится соответствующий файл компании? Не было бы более разумно, если бы им управлял веб-коннектор?

Вот соответствующее объяснение, которое я нашел в Руководстве программиста QuickBooks Web Connector:

  1. ЕСЛИ ваш веб-сервис хочет попробовать другую компанию, укажите путь к компании в возвращаемой строке. (Вы можете указать пустую строку, если хотите использовать любой открытый файл компании.) Веб-коннектор попытается снова подключиться к QuickBooks, используя предоставленную строку.

Зачем веб-сервису искать другую компанию?

Зачем веб-службе выполнять второе из этих действий, а не просто полностью останавливаться? На практике этот подход используется, когда веб-служба запоминает путь к файлу компании от сеанса к сеансу (рекомендуемая практика) и хочет иметь запасной вариант для использования любого файла компании, открытого в данный момент в QuickBooks (путем ответа на вызов connectionError с помощью пустая строка).

Это не так случайно, как может показаться. Когда веб-служба добавляется в веб-соединитель, веб-соединитель сохраняет уникальный идентификатор файла в качестве расширения личных данных в указанной компании. В результате веб-служба всегда может убедиться, что она взаимодействует с ожидаемым файлом компании, просто проверив CompanyRet, возвращенный вашей веб-службе в первом вызове sendRequestXML веб-коннектора в последовательности обмена данными. (Проверьте список расширений данных для ожидаемого FileID.)

Это похоже на плохой опыт конечного пользователя; если они переместят файл своей компании (при условии, что они хотят, чтобы веб-коннектор работал без открытия QuickBooks), веб-служба не будет работать до тех пор, пока этот путь не будет обновлен на стороне сервера. Кажется вполне правдоподобным, что конечный пользователь мог сделать это, не зная, что это сломает что-то.

Почему это так устроено? И что еще более важно: есть ли способ обойти это?


person JohnB    schedule 14.09.2015    source источник


Ответы (1)


Почему это так устроено?

Потому что именно так Intuit построил это.

Есть ли способ обойти это?

No.

person Keith Palmer Jr.    schedule 14.09.2015
comment
Я боялся, что это будет ответ, но я ценю подтверждение. Легко понять логику перевернутой коммуникационной модели для остальной части QBWC, но этот конкретный аспект совершенно бесполезен для меня. Ну что ж! - person JohnB; 14.09.2015
comment
Да, это немного облом. Ходили слухи о новой версии веб-коннектора... Хотел бы я, чтобы у меня было время, чтобы самому создать ее для решения некоторых подобных проблем. - person Keith Palmer Jr.; 14.09.2015