Witam.
Próbuje rozgryźć pewien problem na jaki się natknąłem ostatnio. Oprogramowanie jakie napisałem służy do rozsyłania powiadomień o dokumentach, płatnościach, raportach sprzedaży z Comarch Optima. Niektórzy klienci życzą sobie, aby dokument w postaci PDF pojawił się w załączniku, więc taki dokument "drukuje" Optimą za pomocą obiektów COM jakie Comarch udostępnia partnerom. Problem zaczyna gdy wątki Quartz się "nakładają", są uruchamiane o tej samej porze. Przykład:
- Dokumenty WZ - co 15 minut
- Dokumenty FA/FV - raz dziennie o 11:15
W momencie gdy system próbuje się zalogować do Optimy i wydrukować dokumenty WZ oraz FA/FV dostaje błąd
Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.
STACKTRACE
at CDNBase.ApplicationClass.Login(Object vUser, Object vChk, Object vFirm, Object _ModulKP, Object _ModulKH, Object _ModulKHP, Object _ModulST, Object _ModulFA, Object _ModulMAG, Object _ModulPK, Object _ModulPKXL, Object _ModulCRM, Object _ModulANL, Object _ModulDET, Object _ModulBIU, Object _ModulSRW, Object _ModulOBD, Object _ModulKB, Object _ModulKBP, Object _ModulHAP, Object _ModulCRMP)
at Optima.Common.OptimaAccess.Login(String oper, String password, String company, Byte[] modules, Object logManager)
at CallSite.Target(Closure , CallSite , IOptimaAccess , String , String , String , Byte[] , Object )
at Optima.Common.Logic.Services.LoginService.Login(String oper, String password, String company, ModuleCollection modules)
Wsparcie techniczne z Comarchu twierdzi, że ich system nie jest przystosowany do asynchronicznych operacji i jeden wątek logowania musi być zakończony, aby móc stworzyć kolejny w obrębie jednego procesu.
Czy ja ze swojej strony jestem w stanie to jakoś ominąć? Błąd sugeruje, że to provider bazy danych nie pozwala na asynchroniczność, a nie sama Optima i jej obiekty COM.