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
Dział zatytułowany „Przykłady”Utworzenie nowej sprawy
Dział zatytułowany „Utworzenie nowej sprawy”AMODCase amodCase = AMODCase.CreateCase();Pobranie listy spraw z danej procedury w których podane pole ma daną wartość:
Dział zatytułowany „Pobranie listy spraw z danej procedury w których podane pole ma daną wartość:”string query = String.Format(@"", prc[0].PrcId, par.PpaFieldName, req.primeId);
List list = AMODCase.GetCases(query);Ustawianie użytkownika, na którym ma działać aplikacja
Dział zatytułowany „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
Dział zatytułowany „Utworzenie sprawy z podanej procedury, w podanym statusie i tytule”List 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
Dział zatytułowany „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)
Dział zatytułowany „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
Dział zatytułowany „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
Dział zatytułowany „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
Dział zatytułowany „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
Dział zatytułowany „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);