Współpraca aplikacji zewnętrznych z AMODIT poprzez API (SOAP)
UWAGA! AMODIT WebAPI w technologii SOAP zostało wycofane z użytku! Należy korzystać z nowszego technologicznie AMODIT REST API.
Tworzenie własnych aplikacji korzystających z AMODIT’a może być zrealizowane na dwa sposoby:
- wykorzystanie web service AMODWebAPI.asmx (adres to np.: http://{adres domenowy serwera}/webserviceanon/AMODWebAPI.asmx)
- wykorzystanie biblioteki AMODClasses.dll dostępnej w katalogu w którym jest zainstalowana witryna
Aby wywołać AMODWebApi należy:
- dodać web reference do web service http://{adres domenowy serwera}/webserviceanon/AMODWebAPI.asmx
- Settings.Default.AMODExternalApplication_AMODWebApi_AMODWebAPI – powinna zawierać url webservice AMODWebAPI.asmx
- Settings.Default.AMODWebApiUser i Settings.Default.AMODWebApiPass to login i hasło użytkownika na którego chcemy się zalogować (jeżeli jest logowanie AD to nie trzeba tego podawać, wtedy wystarczy api.UseDefaultCredentials = true;)
using (AMODWebApi.AMODWebAPI api = Tools.GetAPI()) { return api.GetCase(Convert.ToInt32(caseID)); }public static AMODWebApi.AMODWebAPI GetAPI() { AMODWebApi.AMODWebAPI api = new AMODWebApi.AMODWebAPI(); string mainServiceURl = Settings.Default.AMODExternalApplication_AMODWebApi_AMODWebAPI; api.Url = mainServiceURl; AMODWebApi.AMODWebAPIHeader auth = new AMODWebApi.AMODWebAPIHeader(); auth.Username = Settings.Default.AMODWebApiUser; auth.Password = Settings.Default.AMODWebApiPass; api.AMODWebAPIHeaderValue = auth; auth.AuthenticatedToken = api.AuthenticateUser(); return api; }
Przykłady dla AMODClasses.dll (należy dodać referencję do pliku do projektu – plik jest katalogu bin w aplikacji webowej). Dostępne klasy i biblioteki będą widoczne w Inteli Sense w Visual Studio.
Przykłady
Utworzenie nowej sprawy
AMODCase amodCase = AMODCase.CreateCase();
Pobranie listy spraw z danej procedury w których podane pole ma daną wartość:
string query = String.Format(@"<where><and><field name=""caseProcedureId"" op=""="" val=""{0}"" type=""int"" /><field name=""{1}"" op=""="" val=""{2}"" type=""int"" /></and></where>", prc[0].PrcId, par.PpaFieldName, req.primeId); List<AMODCase> list = AMODCase.GetCases(query);
Ustawianie użytkownika, na którym ma działać aplikacja
Jeżeli nie ustawimy, to zostanie pobrany bieżący użytkownik który uruchomił program
AMODUtils.CurrentUserName=login;
Utworzenie sprawy z podanej procedury, w podanym statusie i tytule
List<AMODProcedure> prcList = AMODProcedure.GetProcedures(procName); string status = "..."; string title = "..."; AMODCase cs = AMODCase.CreateNewCase(prcList[0],status,title);
Uzupełnianie standardowych pól, np przypisanie właściciela
AMODWorkflowUser owner=AMODWorkflowUser.CreateAMODWorkflowUser(login); cs.CaseOwnerId=owner.UserId;
Uzupełnianie zwykłych pól formularza (nie standardowych)
//dla pól typu użytkownik powinien być to login
string val="...." cs["Nazwa pola"].SetValue(val); .... cs.Update();
Dodawanie wiersza tabeli
//tableName to nazwa pola tabeli
AMODCaseParam param = context.Case[tableName]; string updated; int result=cs.AddTableRow(param.PrcParam, out updated);
Pobranie sprawy z wiersza tabeli – AddTableRow zwraca id wiersza, trzeba pobrać obiekt sprawy
//tak samo można pobrać obiekt głównej sprawy
AMODCase row=AMODCase.CreateAMODCase(result);
Uzupełnianie pól jak dla głównej sprawy, można oczywiście robić tabele zagnieżdżone
row["Nazwa pola"].SetValue(val); row.Update();
Przekazanie sprawy dalej to ustawienia CaseStatusId i CaseOwnerId
//ustawiamy status jeżeli inny niż przy tworzeniu sprawy
AMODProcedureStatus status = cs.CaseProcedure.StateExists("nazwa etapu"); cs.CaseStatusId=status.PstId; AMODWorkflowUser owner=AMODWorkflowUser.CreateAMODWorkflowUser(login); cs.CaseOwnerId=owner.UserId;
//na koniec update
cs.Update();
//ewentualnie można wysłać maila
AMODUtils.SendEmailCase(AMODWorkflowUser.Current, owner, cs, null);
Możliwość komentowania została wyłączona.