Для подключения расширений объекта
CashMaticSession компонент расширения должен реализовывать интерфейс ICashMaticSessionExtender.
(Дополнительные возможности даёт поддержка интерфейса ICashMaticSessionExtender2).
В синтаксисе C++ интерфейс
ICashMaticSessionExtender определяется так:
class ICashMaticSessionExtender : public IDispatch
{
public:
virtual void CALLBACK
PreReset(ICashMaticSession* pSession) = 0;
virtual void CALLBACK
PostReset(ICashMaticSession* pSession) = 0;
virtual void CALLBACK
PreStart(ICashMaticSession* pSession) = 0;
virtual void CALLBACK
PostStart(ICashMaticSession* pSession) = 0;
virtual void CALLBACK OnEvent(
ICashMaticSession* pSession,
BSTR EventName
) = 0;
virtual void CALLBACK
PreFinish(ICashMaticSession* pSession) = 0;
virtual void CALLBACK
PostFinish(ICashMaticSession* pSession) = 0;
};
// {02A6987B-E3F2-451c-A81D-35D74CCDE78E}
static const IID IID_ICashMaticSessionExtender = { 0x2a6987b, 0xe3f2,
0x451c, { 0xa8, 0x1d, 0x35, 0xd7, 0x4c, 0xcd, 0xe7, 0x8e } };
Метод
ICashMaticSessionExtender::PreReset(ICashMaticSession* pSession) вызывается перед сбросом сеанса. Переменные прошлого сеанса ещё существуют, но после этого вызова больше существовать не будут.
Метод
ICashMaticSessionExtender::PostReset(ICashMaticSession* pSession) вызывается после сброса сеанса. Переменных прошлого сеанса уже не существует, началось создание переменных нового сеанса, интерактивного пользователя пока нет.
Метод
ICashMaticSessionExtender::PreStart(ICashMaticSession* pSession) вызывается перед началом сеанса (появился интерактивный пользователь). Переменных прошлого сеанса уже не существует, создание переменных нового сеанса ещё не завершено.
Метод
ICashMaticSessionExtender::PostStart(ICashMaticSession* pSession) вызывается после начала сеанса. Создание начального набора переменных нового сеанса уже завершено.
Метод
ICashMaticSessionExtender::OnEvent(ICashMaticSession* pSession, BSTR EventName) вызывается в результате вызова метода
Event объекта
CashMaticSession, что доступно скриптам HTML-документа, например:
CashMatic.Session.Event("MyEventName");
(таким образом можно связать скрипт с компонентом расширения, который существует в контексте хост-приложения, и, соответственно, вне HTML-документа)
Метод
ICashMaticSessionExtender::PreFinish(ICashMaticSession* pSession) вызывается перед завершением сеанса. Изменение переменных сеанса разрешено, вызов
CashMatic.Session.Event разрешён.
Метод
ICashMaticSessionExtender::PostFinish(ICashMaticSession* pSession) вызывается после завершения сеанса. Компоненты расширения и скрипты далее не должны изменять переменные сеанса и вызывать
CashMatic.Session.Event (текущая версия этому не противодействует, но предполагается, что в дальнейшем это будет запрещено на уровне COM-ошибки)