Pubblicazione di un evento prodotto da un sistema esterno

<< Fare clic per visualizzazione il sommario >>

Percorso:  Jamio openwork > Gli eventi  >

Pubblicazione di un evento prodotto da un sistema esterno

Le interfacce applicative Jamio sono esposte per mezzo del protocollo SOAP. A tale scopo Jamio mette a disposizione una serie di endpoint che espongono le funzionalità erogate dalla piattaforma.

Ogni applicazione è esposta su protocollo SSL (https). Per interfacciare Jamio è dunque sufficiente utilizzare le utility fornite per i vari linguaggi e dai vari IDE di sviluppo per produrre i proxy, che consentono di utilizzare i servizi dal codice come librerie locali. Tuttavia, l’utilizzo da parte di Jamio di oggetti strutturalmente uguali nelle varie applicazioni, ma diversamente definiti per ogni endpoint, porterebbe a un effort eccessivo per duplicazioni inutili. Per evitare queste duplicazioni inseriamo alcune indicazioni per la produzione dei Proxy in C# e Java, che saranno descritte nei relativi paragrafi. Le applicazioni qui coinvolte sono due, descritte in seguito:

Session Management, questa sezione è necessaria per la login alla piattaforma e la gestione della sessione. Endpoints:

https://paas.jamio.com/gateway/gateway/ISessionManagement/mex?wsdl;

Event Management, questa applicazione contente l'invio dell'evento e la fruizione delle altre funzionalità relative agli eventi. Endpoints:

https://paas.jamio.com/gateway/gateway/IEventManagement;

 

Pubblicazione di un evento nella piattaforma Jamio

Creazione e pubblicazione di un evento custom

In questo paragrafo descriviamo i metodi coinvolti e i relativi parametri. Prima di procedere occorrono alcune specificazioni:

E’ necessario possedere le credenziali di accesso alla piattaforma Jamio (nome utente, password e Area). Normalmente queste informazioni sono già in possesso di che vuole accedere alla piattaforma. In caso contrario richiederle all’Amministratore dell’Area;

L’evento che si vuole inviare deve essere noto alla piattaforma per nome e contenuto. Questo implica che il modello di evento debba essere installato sull’area in questione;

Occorre possedere l’identificativo - oltre che il nome - dell’Area, l’identificativo del modello di evento e il nome dello stesso. Queste informazioni devono essere richieste al gestore dell’Area;

Il risultato della invocazione a qualsiasi metodo dei Servizi di Jamio è di tipo ServiceResult*. Esso contiene l’esito della chiamata, il risultato vero e proprio del metodo – laddove previsto - e una lista di eventuali messaggi (informazioni, warning o errori).

 

Le azioni da effettuare per pubblicare un evento sono le seguenti:

1.Autenticazione del chiamante tramite invocazione al metodo Login del servizio SessionManagement. Questa può essere effettuata una tantum, fintanto che la relativa sessione aperta resti in piedi e quindi non scada il token generato o non sia chiusa la sessione. Il metodo Login del servizio SessionManagement richiede in input i parametri:

Parametri del metodo Login

Nome

Descrizione

Tipo

Opzionale

identityRepositoryName

Identificativo dell’Area.

String

 

userName

Nome utente di autenticazione.

String

 

password

Password dell'utente che effettua l'autenticazione.

String

 

multiPosition

Indicare come valore false.

Bool

 

source

Rappresenta un identificativo del sistema che effettua la richiesta

String

 

 

2.Creazione di un evento tramite la valorizzazione di un oggetto di tipo CustomEvent. L’evento è descritto dal suo modello, che ne identifica il tipo e ne descrive la struttura, che la piattaforma Jamio vede come in insieme di campi, il cui identificativo è il nome. L’utente dovrà riempire una lista o un array o un dizionario di oggetti, in base alla interpretazione che le utility messe a disposizione dai diversi IDE danno al WSDL, nell’ordine e con il nome richiesto dal modello.

3.Pubblicazione dell’evento nella piattaforma, tramite l’invocazione del metodo PublishEvent del Servizio EventManagement, di cui riportiamo i parametri:

Parametri del metodo PublishEvent

Nome

Descrizione

Tipo

Opzionale

repositoryId

Identificativo dell’Area.

String

 

publishEvent

Evento Custom da inviare.

EventMessage

 

info

Oggetto contenente il token di sessione.

RequestInfo

 

 

Jamioware per il test

Nei paragrafi successivi sono riportati esempi di pubblicazione (o invio) evento in C# e Java.

Per consentire il funzionamento corretto degli esempi è stato preparato un Jamioware dal nome TestEvent, a corredo di questa pagina, all'interno dell’archivio TestEvent.zip, che prepara la propria Area a riceverne l’evento.

Una volta installato questo Jamioware, sarà possibile inviare l’evento.

La sua ricezione sarà notificata all’utente definito in fase di installazione del Jamioware su Jamio on Stage.

 

#C Example

Preparazione del Proxy

Per interrogare i suddetti metodi agevolmente sono a disposizione diverse possibilità. Ad esempio, in Visual Studio è possibile aggiungere una Service Reference tra i riferimenti di progetto.

L’utilizzo delle funzionalità messe a disposizione dagli IDE è consigliato, in quanto consente di utilizzare le utility direttamente nella versione meglio compatibile con l’IDE stesso. Nell’esempio, comunque, è utilizzata la generazione dello skeleton (o proxy) dal WSDL delle interfacce dei Web Services attraverso l’utilizzo dell’applicazione svcutil.exe presente nel pacchetto Microsoft SDK for Windows. Questa utility cambia in base alla versione dell’SDK, cambiando la location dell’utility stessa e il risultato che essa genera. Se il comando di seguito riportato non funzionasse occorrerebbe trovare la svcutil installata sulla propria macchina.

 

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\svcutil.exe /out:ProxyJamio.cs  /serializer:Auto 

https://paas.jamio.com/gateway/gateway/ISessionManagement/mex?wsdl 

https://paas.jamio.com/gateway/gateway/IEventManagement/mex?wsdl

 

Durante l’esecuzione del comando la console mostrerà una serie di errori, ma non inficeranno il risultato finale, che sarà la generazione del file ProxyJamio.cs. Per questo esempio si è scelto di utilizzare endpoint di tipo https.

 

Jamioware Visual Studio

Il Jamioware di seguito descritto è disponibile nell’archivio qui scaricabile PublishEventCSharp.zip.

 

Per la preparazione del Jamioware effettua i seguenti passi:

1. Inserisci nel Jamioware il file ProxyJamio.cs prodotto al passo precedente;

2. Verifica che nel Jamioware siano presenti i riferimenti a System.Runtime.Serialization e System.ServiceModel, altrimenti aggiungili;

3. Verifica che nell’area a cui vuoi accedere sia stata installato il Jamioware Jamio TestEvent. In caso contrario installala o richiedine l’installazione al gestore del tenant;

4. Sovrascrivi il file app.config con il contenuto qui di seguito riportato.

 

<configuration>

  <system.serviceModel>

    <bindings>

      <basicHttpBinding>

        <binding name="basicHttpsBinding_Gateway">

          <readerQuotas maxDepth="65536" maxStringContentLength="65536

           maxArrayLength="65536" maxBytesPerRead="65536" maxNameTableCharCount="65536"/>

          <security mode="Transport" />

        </binding>

      </basicHttpBinding>

    </bindings>

    <client>

      <endpoint address=https://paas.jamio.com/gateway/gateway/ISessionManagement

       binding="basicHttpBinding" bindingConfiguration="basicHttpsBinding_Gateway"

       contract="ISessionManagement"

       name="basicHttpsBinding_Gateway_ISessionManagement"/>

      <endpoint address=https://paas.jamio.com/gateway/gateway/IEventManagement

       binding="basicHttpBinding" bindingConfiguration="basicHttpsBinding_Gateway"

       contract="IEventManagement"

       name="basicHttpsBinding_Gateway_IEventManagement"/>

    </client>

  </system.serviceModel>

</configuration>

 

5. Inserisci prima del codice di invio lo using www.openworkbpm.com.schema, o comunque quello del namespace inserito dall’utility

6. Copia il codice e valorizza i parametri e le credenziali.

 

Jamioware e codice di esempio

using www.openworkbpm.com.schema;

 

            // Indirizzo di base (da modificare solo su specifiche indicazioni)

        static string realBaseAddress = "https://paas.jamio.com/gateway/gateway/";

 

        // parametri e credenziali da impostare

        static string userName = "";

        static string password = "";

        static string identityRepositoryName = "";

        static string repositoryId = "";

        static string eventTestModelUrl = "";

        static string eventTestDataSetModelUrl = "";

        static string eventTestArraysModelUrl = "";

        static string eventTestReferenceModelUrl = "";

        // fine parametri

 

        static void Main(string[] args)

        {

 

            // rappresenta un identificativo del sistema che effettua la richiesta

            // a discrezione dello sviluppatore

            string source = Environment.MachineName;

            //creazione del client per la gestione delle sessioni

            SessionManagementClient SessionManagement = new SessionManagementClient("basicHttpsBinding_Gateway_ISessionManagement", realBaseAddress + "ISessionManagement");

 

            //Invocazione del servizio di login

            ServiceResultOfLoginInfo loginResult = SessionManagement.Login(identityRepositoryName, userName, password, false, source);

            if (!loginResult.Error)

            {

                Console.WriteLine("Login: OK");

            }

            else

            {

                Console.WriteLine("Login: KO. " + loginResult.ResultInfoList[0].Message);

                SessionManagement.Close();

                return;

            }

 

            //creazione dell’oggetto richiesto dalle invocazioni contente il token di sessione

            RequestInfo info = new RequestInfo();

            info.Token = loginResult.Value.Token;

 

            // invio dell'evento semplice

            SendTestEvent(createTestEvent(), info);

 

            // invio dell'esempio con dataset

            SendTestEvent(createTestEventDataSet(), info, new List<Type> {typeof(DataSetValue)});

 

            // invio dell'esempio con array

            SendTestEvent(createTestEventArrays(), info, new List<Type> { typeof(ArrayValue) });

 

            // invio dell'esempio con reference

            SendTestEvent(createTestEventReference(), info, new List<Type> { typeof(NamedReference),typeof(CatalogItemValue) });

 

            // logout e chiusura sessione

            Console.WriteLine("Logout...");

            SessionManagement.CloseSession(info);

            SessionManagement.Close();

            Console.WriteLine("Invio eventi terminato... Premi INVIO per uscire");

            Console.Read();

 

        }

 

        private static void SendTestEvent(CustomEvent EventToSend, RequestInfo info, List<Type> KnownTypes = null)

        {

            //creazione del client per la gestione degli eventi

            EventManagementClient EventManagement = new EventManagementClient("basicHttpsBinding_Gateway_IEventManagement", realBaseAddress + "IEventManagement");

            if (KnownTypes!= null)

                foreach (Type KnownType in KnownTypes)

                    addKnownType(EventManagement.Endpoint, KnownType);

 

            // invio dell'evento

            ServiceResultOfboolean eventResult = EventManagement.PublishEvent(repositoryId, EventToSend, info);

            if (!eventResult.Error)

            {

                Console.WriteLine("Publish " + EventToSend.ModelReference.Name + ": OK");

            }

            else

            {

                Console.WriteLine("Publish " + EventToSend.ModelReference.Name + ": KO. " + eventResult.ResultInfoList[0].Message);

            }

            EventManagement.Close();

        }

 

        private static void addKnownType(System.ServiceModel.Description.ServiceEndpoint proxyEndPoint, Type knownType)

        {

            foreach (var op in proxyEndPoint.Contract.Operations)

            {

                if (!op.KnownTypes.Contains(knownType))

                    op.KnownTypes.Add(knownType);

            }

        }

 

        private static CustomEvent createTestEvent()

        {

            var EventToSend = new CustomEvent();

 

            //modello dell'evento

            EventToSend.ModelReference = new NamedReference

            {

                Name = "TestEvent",

                Type = Types.CustomEvent,

                Url = eventTestModelUrl

            };

 

            EventToSend.Fields = new Fields();

 

            EventToSend.Fields.Add("campo stringa""campo stringa");

            EventToSend.Fields.Add("campo numerico", 1);

            EventToSend.Fields.Add("campo booleano"true);

            EventToSend.Fields.Add("campo data"DateTime.Now);

 

            return EventToSend;

        }

 

        private static CustomEvent createTestEventDataSet()

        {

            var EventToSend = new CustomEvent();

 

            //modello dell'evento

            EventToSend.ModelReference = new NamedReference

            {

                Name = "TestEventDataSet",

                Type = Types.CustomEvent,

                Url = eventTestDataSetModelUrl

            };

 

            EventToSend.Fields = new Fields();

 

            EventToSend.Fields.Add("campo stringa""campo stringa");

            EventToSend.Fields.Add("campo numerico", 1);

            EventToSend.Fields.Add("campo booleano"true);

            EventToSend.Fields.Add("campo data"DateTime.Now);

 

            DataSetValue dataset = new DataSetValue();

            dataset.Fields = new Fields();

            dataset.Fields.Add("booleano"true);

            dataset.Fields.Add("float", 1.2);

            dataset.Fields.Add("dataeora"DateTime.Now);

            dataset.Fields.Add("testo""nunzio");

            dataset.Fields.Add("decimale"Convert.ToDecimal(1));

            dataset.Fields.Add("intero", 1);

 

            EventToSend.Fields.Add("campo dataset", dataset);

            return EventToSend;

        }

 

        private static CustomEvent createTestEventArrays()

        {

            var EventToSend = new CustomEvent();

 

            //modello dell'evento

            EventToSend.ModelReference = new NamedReference

            {

                Name = "TestEventArrays",

                Type = Types.CustomEvent,

                Url = eventTestArraysModelUrl

            };

 

            EventToSend.Fields = new Fields();

 

 

            EventToSend.Fields.Add("campo stringa"new ArrayValue { Elements = new SerializableListOfanyType() { "nunzio""nunzio1" } });

            EventToSend.Fields.Add("campo numerico"new ArrayValue { Elements = new SerializableListOfanyType() { 1 } });

            EventToSend.Fields.Add("campo booleano"new ArrayValue { Elements = new SerializableListOfanyType() { true } });

            EventToSend.Fields.Add("campo data"new ArrayValue { Elements = new SerializableListOfanyType() { DateTime.Now } });

 

            DataSetValue dataset = new DataSetValue();

            dataset.Fields = new Fields();

            dataset.Fields.Add("booleano"true);

            dataset.Fields.Add("float", 1.2);

            dataset.Fields.Add("dataeora"DateTime.Now);

            dataset.Fields.Add("testo""nunzio");

            dataset.Fields.Add("decimale"Convert.ToDecimal(1));

            dataset.Fields.Add("intero", 1);

            EventToSend.Fields.Add("campo dataset"new ArrayValue { Elements = new SerializableListOfanyType() { dataset } });

            return EventToSend;

        }

 

        private static CustomEvent createTestEventReference()

        {

            var EventToSend = new CustomEvent();

 

            //modello dell'evento

            EventToSend.ModelReference = new NamedReference

            {

                Name = "TestEventReference",

                Type = Types.CustomEvent,

                Url = eventTestReferenceModelUrl

            };

 

            EventToSend.Fields = new Fields();

 

            EventToSend.Fields.Add("campo collegamento"new NamedReference { Name = "nunzio", Type = Types.Account, Url = "url" });

 

            CatalogItemValue extref = new CatalogItemValue();

            extref.Fields = new Fields();

            extref.Fields.Add("booleano"true);

            extref.ModelReference = new NamedReference { Name = "name", Type = Types.AccountCriteria, Url = "url" };

            extref.Name = "name";

            extref.Type = Types.AccountCriteriaEvent;

            extref.Url = "url";

 

            EventToSend.Fields.Add("campo esteso", extref);

            return EventToSend;

        }

    }

 

Nota bene: Per inserire nei field particolari definizioni di classi, occorre aggiungere tra i KnownTypes dell’endpoint il type delle suddette classi. A tale scopo è stato inserito il metodo privato:

private static void addKnownType(System.ServiceModel.Description.ServiceEndpoint proxyEndPoint, Type knownType)

nell’esempio i tipi da aggiungere sono passati per mezzo di apposita lista e cambiano, appunto, in base al contenuto dei campi.

 

Java Example

Preparazione del Proxy

Per poter generare lo skeleton (o proxy) dal WSDL delle interfacce dei Web Services ci avvarremo della creazione di un progetto Maven all'interno dell'IDE Eclipse. Le versioni adottate nell'esempio sono:

Eclipse Mars.2 v.4.5.2

Plugin Maven  m2e  v.1.6.2

Maven è quindi un plugin di Eclipse e, se non presente, deve essere aggiunto e installato tra i software in dotazione dell’IDE.

 

Pe la creazione del proxy occorre creare un progetto Maven, utilizzando l’apposito Wiizard. Nel nostro caso sono state effettuate le seguenti scelte:

selezionata l’opzione Create simple project

inserito come Group Id it.openwork.jamio

inserito come Artifact Id proxyJamio,

selezionata la modalità Packaging JAR.

In seguito occorre modificare il file POM.xml, del quale il wizard ha creato uno skeleton, da compilare con i comandi e i riferimenti alle librerie necessarie alla creazione in un unico jar del proxy. Per questo esempio sono stati scelti endpoint di tipo http.

 

Nota bene: Nel caso si scegliessero gli endpoint https occorre scaricare il certificato di sicurezza ed importarlo nel keystore mediante questo comando, da lanciare da prompt di comando, posizionandosi nella cartella bin del path in cui è installata la jre  (java runtime enviroment) scelta:

keytool -importcert -keystore cacerts -alias openwork -file jamio.com.crt 

 

Di seguito il contenuto del file POM.xml da noi generato: 

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

 <modelVersion>4.0.0</modelVersion>

 

 <groupId>it.openwork.jamio</groupId>

 <artifactId>proxyJamio</artifactId>

 <version>v.4.4</version>

 <packaging>jar</packaging>

 

 <name>proxyJamio</name>

<url>http://maven.apache.org</url>

 

 <properties>

   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

 </properties>

 

<dependencies>

   <dependency>

     <groupId>junit</groupId>

     <artifactId>junit</artifactId>

     <version>3.8.1</version>

     <scope>test</scope>

   </dependency>

 

   <dependency>

         <groupId>org.apache.axis</groupId>

         <artifactId>axis</artifactId>

         <version>1.4</version>

 </dependency>

 

<dependency>

   <groupId>javax.xml</groupId>

   <artifactId>jaxrpc-api</artifactId>

   <version>1.1</version>

</dependency>

 

 

 

   <dependency>

         <groupId>org.jconfig</groupId>

         <artifactId>jconfig</artifactId>

         <version>2.9</version>

 

                  <exclusions>

             <exclusion>

                 <groupId>com.sun.jmx</groupId>

                 <artifactId>jmxri</artifactId>

             </exclusion>

             

             <exclusion>

                 <groupId>javax.xml.parsers</groupId>

                 <artifactId>jaxp-api</artifactId>

             </exclusion>

             

             <exclusion>

                 <groupId>crimson</groupId>

                 <artifactId>crimson</artifactId>

             </exclusion>

         </exclusions>

 </dependency>        

</dependencies>

<build>

         <plugins>          

    <plugin>

           <artifactId>maven-compiler-plugin</artifactId>

               <configuration>

                   <source>1.5</source>

                   <target>1.5</target>

                   <encoding>UTF-8</encoding>

               </configuration>

  </plugin>

       

    <plugin>

         <groupId>org.codehaus.mojo</groupId>

         <artifactId>jaxws-maven-plugin</artifactId>

         <version>2.4.1</version>

         

                         <executions>

                     <execution>              

                     <id>Session</id>

                             

                                     <goals>

                               <goal>wsimport</goal>

                             </goals>

             

                       <configuration>                

                   <bindingFiles>

                       <bindingFile>${basedir}/binding.xjb</bindingFile>              

                       </bindingFiles>

                                             

                   <wsdlUrls>

                         <wsdlUrl>http://paas.jamio.com/gateway/gateway/ISessionManagement/mex?wsdl</wsdlUrl>

                   </wsdlUrls>

                           

                     <keep>true</keep>                

                     <packageName></packageName>            

                     <sourceDestDir>${basedir}/src/</sourceDestDir>

                     <destDir>${basedir}/target/jaxws</destDir>              

                               </configuration>

                                   </execution>  

           

                                 <execution>              

                     <id>Event</id>

                       

                                   <goals>

                           <goal>wsimport</goal>

                         </goals>

             

                         <configuration>                    

                     <bindingFiles>

                       <bindingFile>${basedir}/binding.xjb</bindingFile>              

                       </bindingFiles>                                              

                           

           <wsdlUrls>

<wsdlUrl>http://paas.jamio.com/Gateway/Gateway/IEventManagement/mex?wsdl</wsdlUrl>

           </wsdlUrls>                        

             

                     <keep>true</keep>

                     <extension>true</extension>

                     <packageName></packageName>              

                     <sourceDestDir>${basedir}/src/</sourceDestDir>

                     <destDir>${basedir}/target/jaxws</destDir>              

                   </configuration>

                      </execution>  

                   </executions>    

            </plugin>      

 </plugins>      

 

   <resources>

     <resource>

       <directory>src</directory>      

       <includes>

         <include>wsdl/**/*.*</include>    

       </includes>

     </resource>    

   </resources>

</build>

</project>

 

Nella stessa location del file pom.xml, deve essere inserito il file denominato binding.xjb, di cui si riporta il contenuto:

 

<jxb:bindings version="1.0"

              xmlns:jxb="http://java.sun.com/xml/ns/jaxb"

              xmlns:xs="http://www.w3.org/2001/XMLSchema"

              xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">

    <jxb:globalBindings generateElementProperty="false">

  <jxb:javaType name="java.util.Date" xmlType="xs:dateTime"/>

  </jxb:globalBindings>

</jxb:bindings>

 

Il progetto Maven è dunque pronto e la sua esecuzione produrrà nella cartella target il file: proxyJamiov.4.4.5jar.

 

Preparazione del Client

A questo punto, sempre all'interno dello stesso workspace, creiamo un nuovo JavaProject, utile a effettuare il test del client per il proxyJamio appena creato con la procedura maven. Una volta creato il progetto java è necessario collegare la libreria rappresentata dal file jar del proxy proxyJamio-v.4.4.jar e dunque aggiungerla al progetto. 

 

Di seguito il codice delle classi java in cui, per consentirne il funzionamento, occorre valorizzare i parametri e le credenziali. 

Il codice e il progetto da noi utilizzati sono disponibili nel file PublishEventClient.jar

 

Classe TestEvent.java

 

package jamio.client;

 

import java.util.ArrayList;

import java.util.Date;

import javax.xml.ws.BindingProvider;

import com.openworkbpm.schema.CustomEvent;

import com.openworkbpm.schema.Fields;

import com.openworkbpm.schema.Fields.Item;

import com.openworkbpm.schema.NamedReference;

import com.openworkbpm.schema.ObjectFactory;

import com.openworkbpm.schema.RequestInfo;

import com.openworkbpm.schema.ResultInfo;

import com.openworkbpm.schema.ServiceResult;

import com.openworkbpm.schema.ServiceResultOfLoginInfo;

import com.openworkbpm.schema.ServiceResultOfboolean;

import com.openworkbpm.schema.event_application.IEventManagement;

import com.openworkbpm.schema.event_application.IEventManagementbasicHttpBindingGateway;

import com.openworkbpm.schema.session_application.ISessionManagement;

import com.openworkbpm.schema.session_application.ISessionManagementbasicHttpBindingGateway;

 

public class PublishEvent {

 

// Factory per l'inizializzazione degli oggetti

private ObjectFactory factory = new ObjectFactory();

// Proxy per l'applicazione di gestione dell'autenticazione

private ISessionManagement sessionManagement;

// Proxy per l'applicazione di gestione degli eventi

private IEventManagement eventManagement;

 

/****************** PARAMETRI DI CONFIGURAZIONE *****************/

// Host o indirizzo ip del server Jamio

private String host = "paas.jamio.com";

// URL dell'applicazione di gestione dell'autenticazione

private String sessionUrl = "http://" + host + "/Gateway/Gateway/ISessionManagement";

// URL dell'applicazione Event

private String eventUrl = "http://" + host + "/Gateway/Gateway/IEventManagement";

// Username di autenticazione

private String userName = <>;

// Password di autenticazione

private String password = <>;

// Nome del repository di autenticazione

private String identityRepository = <>;

private static String dataRepoID = <>;

private static String eventModelURL= <>;

private static String eventModelNAME= "TestEvent";

 

/****************** FINE PARAMETRI DI CONFIGURAZIONE *****************/

/**

* Inizializza i proxy.

*/

public PublishEvent() {

ISessionManagementbasicHttpBindingGateway sessionGateway = new ISessionManagementbasicHttpBindingGateway();

sessionManagement = sessionGateway.getBasicHttpBindingGatewayISessionManagement();

((BindingProvider) sessionManagement).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, sessionUrl);

 

IEventManagementbasicHttpBindingGateway eventGateway = new IEventManagementbasicHttpBindingGateway();

eventManagement = eventGateway.getBasicHttpBindingGatewayIEventManagement();

         ((BindingProvider) eventManagement).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, eventUrl);                

}

private RequestInfo login() throws Exception {

// Autenticazione

ServiceResultOfLoginInfo loginInfo = sessionManagement.login(identityRepository, userName, password, false,        "");

checkServiceResultError(loginInfo);

 

RequestInfo info = factory.createRequestInfo();                

String token = loginInfo.getValue().getToken();

info.setToken(token);

System.out.println("Token:" + token);

return info;

}

 

private void logout(RequestInfo info) throws Exception {

if (sessionManagement != null && info != null) {

 ServiceResult response = sessionManagement.closeSession(info);

 checkServiceResultError(response);

 }

}

 

public boolean sendEvent(RequestInfo info) throws Exception {

//creazione dell’oggetto Evento

CustomEvent eventToPublish = new CustomEvent();

eventToPublish.setModelReference(new NamedReference());

Date dateNow = new Date();                

 

//i valori del name e del url rappresentano il modello di Evento Jamio che deve essere pubblicato

eventToPublish.getModelReference().setUrl(eventModelURL);

eventToPublish.getModelReference().setName(eventModelNAME);

 

//valorizzazione dei campi custom dell’evento                

Fields fields = new Fields();                

Item item = new Item();

ArrayList<Item> itemList= new ArrayList<Item>(4);

                 

item.setKey("campo stringa");

item.setVal("abcd");                

itemList.add(0,item);                

 

item = new Item();

item.setKey("campo numerico");

item.setVal(2);

itemList.add(1,item);                

 

item = new Item();

item.setKey("campo booleano");

item.setVal(true);

itemList.add(2,item);                

 

item = new Item();

item.setKey("campo data");

item.setVal(dateNow);

itemList.add(3,item);        

         

fields.getItem().addAll(itemList);

eventToPublish.setFields(fields) ;

 

//invocazione del servizio

ServiceResultOfboolean eventResult = eventManagement.publishEvent(dataRepoID, eventToPublish, info);

if (!eventResult.isError()){

 System.out.println("PublishEvent: OK");

}

else

{

System.out.println("PublishEvent: KO. " + eventResult.getResultInfoList().getResultInfo().get(0).getMessage());

}

System.out.println("Logout...");                

return eventResult.isError();

}

 

private void checkServiceResultError(ServiceResult response) throws Exception {

// Verifica dell'errore

if (response.isError()) {

StringBuffer buf = new StringBuffer();

// Ogni elemento di tipo ResultInfo contiene le informazioni del

// server relative all'evento verificatosi

 

for (ResultInfo resultInfo : response.getResultInfoList().getResultInfo()) {

 buf.append(resultInfo.getMessage()).append(System.getProperty("line.separator"));

}

throw new Exception("Service Exception: " + buf.toString());

 }

}

public static void main(String[] args) {

PublishEvent jamio = new PublishEvent();

RequestInfo info = null;

 try {

 info = jamio.login();

 if(!jamio.sendEvent(info)){

 System.out.println("Send ok!");

 } else{

 System.out.println("Error send....");

 }

 } catch (Exception e) {

         e.printStackTrace();

 } finally {

 try {

 jamio.logout(info);

 } catch (Exception e) {

 e.printStackTrace();

 }

 }}}

 

Classe TestEventDataSet.java

 

package jamio.client;

 

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.Date;

import javax.xml.ws.BindingProvider;

 

import com.openworkbpm.schema.CustomEvent;

import com.openworkbpm.schema.DataSetValue;

import com.openworkbpm.schema.Fields;

import com.openworkbpm.schema.Fields.Item;

import com.openworkbpm.schema.NamedReference;

import com.openworkbpm.schema.ObjectFactory;

import com.openworkbpm.schema.RequestInfo;

import com.openworkbpm.schema.ResultInfo;

import com.openworkbpm.schema.ServiceResult;

import com.openworkbpm.schema.ServiceResultOfLoginInfo;

import com.openworkbpm.schema.ServiceResultOfboolean;

import com.openworkbpm.schema.Types;

import com.openworkbpm.schema.event_application.IEventManagement;

import com.openworkbpm.schema.event_application.IEventManagementbasicHttpBindingGateway;

import com.openworkbpm.schema.session_application.ISessionManagement;

import com.openworkbpm.schema.session_application.ISessionManagementbasicHttpBindingGateway;

 

public class TestEventDataSet {

 

 // Factory per l'inizializzazione degli oggetti

 private ObjectFactory factory = new ObjectFactory();

 

 // Proxy per l'applicazione di gestione dell'autenticazione

 private ISessionManagement sessionManagement;

 

 // Proxy per l'applicazione di gestione degli eventi

 private IEventManagement eventManagement;

 

 /****************** PARAMETRI DI CONFIGURAZIONE *****************/

 

 // Host o indirizzo ip del server Jamio

 private String host = "paas.jamio.com";

 

 // URL dell'applicazione di gestione dell'autenticazione

 private String sessionUrl = "http://" + host + "/Gateway/Gateway/ISessionManagement";

 

 // URL dell'applicazione Event

 private String eventUrl = "http://" + host + "/Gateway/Gateway/IEventManagement";

 

 // Username di autenticazione

 private String userName = "";

 

 // Password di autenticazione

 private String password = "";

 

 //Nome del repository di autenticazione

 private String identityRepository = "";

 private static String dataRepoID = "";

 private static String eventModelURL= "";

 private static String eventModelNAME= "TestEventDataSet";

 

 /****************** FINE PARAMETRI DI CONFIGURAZIONE *****************/

 

 /**

  * Inizializza i proxy.

  */

 public TestEventDataSet() {

         ISessionManagementbasicHttpBindingGateway sessionGateway = new ISessionManagementbasicHttpBindingGateway();

         sessionManagement = sessionGateway.getBasicHttpBindingGatewayISessionManagement();

         ((BindingProvider) sessionManagement).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, sessionUrl);

 

         IEventManagementbasicHttpBindingGateway eventGateway = new IEventManagementbasicHttpBindingGateway();

         eventManagement = eventGateway.getBasicHttpBindingGatewayIEventManagement();

         ((BindingProvider) eventManagement).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, eventUrl);                

 }

 

 private RequestInfo login() throws Exception {

         // Autenticazione

         ServiceResultOfLoginInfo loginInfo = sessionManagement.login(identityRepository, userName, password, false,        "");

         checkServiceResultError(loginInfo);

 

         RequestInfo info = factory.createRequestInfo();                

         String token = loginInfo.getValue().getToken();

         info.setToken(token);

         System.out.println("Token:" + token);

         return info;

 }

 

 

 private void logout(RequestInfo info) throws Exception {

         if (sessionManagement != null && info != null) {

                 ServiceResult response = sessionManagement.closeSession(info);

                 checkServiceResultError(response);

         }

 }

 

 /*public boolean sendMessage(RequestInfo info) throws Exception {

 

         ServiceResultOfData dataResponse = dataManagement.read(dataRepoID, dataID, info);

 

         Data dataobj = new Data();

 

         for(int i = 0; i < dataResponse.getResultInfoList().getResultInfo().size(); i++) {

 

 

                 dataobj.setCreated(dataResponse.getValue().getCreated());

                 dataobj.setDescription(dataResponse.getValue().getDescription());

                 dataobj.setId(dataResponse.getValue().getId());

                 dataobj.setModelReference(dataResponse.getValue().getModelReference());

                 dataobj.setName(dataResponse.getValue().getName());

                 dataobj.setRepositoryId(dataResponse.getValue().getRepositoryId());

 

                 dataResponse.setValue(dataobj);

 

                 System.out.println("Data " + dataobj.getDescription() + dataobj.getId() + dataobj.getName() + dataobj.getRepositoryId());                                

         }                

         return dataResponse.isError();                

 }*/

 

 public boolean sendEvent(RequestInfo info) throws Exception {

 

         //creazione dell’oggetto Evento

         CustomEvent eventToPublish = new CustomEvent();

         Types types = null;

         eventToPublish.setModelReference(new NamedReference());

         Date dateNow = new Date();                

 

         //i valori del name e del url rappresentano il modello di Evento Jamio che deve essere pubblicato

         eventToPublish.getModelReference().setUrl(eventModelURL);

         eventToPublish.getModelReference().setName(eventModelNAME);

         eventToPublish.getModelReference().setType(types.CUSTOM_EVENT);

 

         //valorizzazione dei campi custom dell’evento                

         Fields fields = new Fields();                

         Item item = new Item();                        

         ArrayList<Item> itemList= new ArrayList<Item>(5);

         ArrayList<Item> itemListDataSet= new ArrayList<Item>(6);                        

                         

         item = new Item();

         item.setKey("booleano");

         item.setVal(true);

         itemListDataSet.add(0,item);

         

         item = new Item();

         item.setKey("float");

         item.setVal(1.2);

         itemListDataSet.add(1,item);

         

         item = new Item();

         item.setKey("dataeora");

         item.setVal(dateNow);

         itemListDataSet.add(2,item);

         

         item = new Item();

         item.setKey("testo");

         item.setVal("testodataset");                

         itemListDataSet.add(3,item);                

 

         item = new Item();

         item.setKey("decimale");

         item.setVal(new BigDecimal(1.22));

         itemListDataSet.add(4,item);        

         

         item = new Item();

         item.setKey("intero");

         item.setVal(new Long(10) );

         itemListDataSet.add(5,item);                

                 

         fields.getItem().addAll(itemListDataSet);        

   

         DataSetValue dataSet = new DataSetValue();                

         dataSet.setFields(fields);                                        

         itemList=new ArrayList<Fields.Item>();

         

         item = new Item();

         item.setKey("campo stringa");

         item.setVal("abcd") ;                

         itemList.add(0,item);                

 

         item = new Item();

         item.setKey("campo numerico");

         item.setVal(2);

         itemList.add(1,item);                

 

         item = new Item();

         item.setKey("campo booleano");

         item.setVal(true);

         itemList.add(2,item);                

 

         item = new Item();

         item.setKey("campo data");

         item.setVal(dateNow);

         itemList.add(3,item);        

         

         item=new Item();

         item.setKey("campo dataset");

         item.setVal(dataSet);

         itemList.add(4,item);

         

         fields=new Fields();                

         fields.getItem().addAll(itemList);                

         

         eventToPublish.setFields(fields) ;

 

         //invocazione del servizio

         ServiceResultOfboolean eventResult = eventManagement.publishEvent(dataRepoID, eventToPublish, info);

         if (!eventResult.isError())

         {

                 System.out.println("PublishEvent: OK");

         }

         else

         {

                 System.out.println("PublishEvent: KO. " + eventResult.getResultInfoList().getResultInfo().get(0).getMessage());

         }

         System.out.println("Logout...");                

         return eventResult.isError();

 }

 

 private void checkServiceResultError(ServiceResult response) throws Exception {

         // Verifica dell'errore

         if (response.isError()) {

                 StringBuffer buf = new StringBuffer();

                 // Ogni elemento di tipo ResultInfo contiene le informazioni del server relative all'evento verificatosi

                 for (ResultInfo resultInfo : response.getResultInfoList().getResultInfo()) {

                         buf.append(resultInfo.getMessage()).append(System.getProperty("line.separator"));

                 }

         throw new Exception("Service Exception: " + buf.toString());

         }

 }

 

 public static void main(String[] args) {

         TestEventDataSet jamio = new TestEventDataSet();

         RequestInfo info = null;

 

         try {

                 info = jamio.login();

                 if(!jamio.sendEvent(info)){

                         System.out.println("Send ok!");

                 } else{

                         System.out.println("Error send....");

                 }

         } catch (Exception e) {

                 e.printStackTrace();

         } finally {

                 try {

                         jamio.logout(info);

                 } catch (Exception e) {

                         e.printStackTrace();

                 }

         }

 }

}

 

Classe TestEventArrays.java

 

package jamio.client;

 

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.Date;

 

import javax.xml.ws.BindingProvider;

 

import com.openworkbpm.schema.ArrayValue;

import com.openworkbpm.schema.CustomEvent;

import com.openworkbpm.schema.DataSetValue;

import com.openworkbpm.schema.Fields;

import com.openworkbpm.schema.Fields.Item;

import com.openworkbpm.schema.NamedReference;

import com.openworkbpm.schema.ObjectFactory;

import com.openworkbpm.schema.RequestInfo;

import com.openworkbpm.schema.ResultInfo;

import com.openworkbpm.schema.SerializableListOfanyType;

import com.openworkbpm.schema.ServiceResult;

import com.openworkbpm.schema.ServiceResultOfLoginInfo;

import com.openworkbpm.schema.ServiceResultOfboolean;

import com.openworkbpm.schema.Types;

import com.openworkbpm.schema.event_application.IEventManagement;

import com.openworkbpm.schema.event_application.IEventManagementbasicHttpBindingGateway;

import com.openworkbpm.schema.session_application.ISessionManagement;

import com.openworkbpm.schema.session_application.ISessionManagementbasicHttpBindingGateway;

public class TestEventArrays {

 

 // Factory per l'inizializzazione degli oggetti

 private ObjectFactory factory = new ObjectFactory();

 

 // Proxy per l'applicazione di gestione dell'autenticazione

 private ISessionManagement sessionManagement;

 

 // Proxy per l'applicazione di gestione degli eventi

 private IEventManagement eventManagement;

 

 /****************** PARAMETRI DI CONFIGURAZIONE *****************/

 

 // Host o indirizzo ip del server Jamio

 private String host = "paas.jamio.com";

 

 // URL dell'applicazione di gestione dell'autenticazione

 private String sessionUrl = "http://" + host + "/Gateway/Gateway/ISessionManagement";

 

 // URL dell'applicazione Event

 private String eventUrl = "http://" + host + "/Gateway/Gateway/IEventManagement";

 

 // Username di autenticazione

 private String userName = "";

 

 // Password di autenticazione

 private String password = "";

 

 //Nome del repository di autenticazione

 private String identityRepository = "";

 private static String dataRepoID = "";

 //private static String eventModelURL= "";

 private static String eventModelURL= "";        

 private static String eventModelNAME= "TestEventArrays";

 

 /****************** FINE PARAMETRI DI CONFIGURAZIONE *****************/

 

 /**

  * Inizializza i proxy.

  */

 public TestEventArrays() {

         ISessionManagementbasicHttpBindingGateway sessionGateway = new ISessionManagementbasicHttpBindingGateway();

         sessionManagement = sessionGateway.getBasicHttpBindingGatewayISessionManagement();

         ((BindingProvider) sessionManagement).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, sessionUrl);

 

         IEventManagementbasicHttpBindingGateway eventGateway = new IEventManagementbasicHttpBindingGateway();

         eventManagement = eventGateway.getBasicHttpBindingGatewayIEventManagement();

         ((BindingProvider) eventManagement).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, eventUrl);                

 }

 

 private RequestInfo login() throws Exception {

         // Autenticazione

         ServiceResultOfLoginInfo loginInfo = sessionManagement.login(identityRepository, userName, password, false,        "");

         checkServiceResultError(loginInfo);

 

         RequestInfo info = factory.createRequestInfo();                

         String token = loginInfo.getValue().getToken();

         info.setToken(token);

         System.out.println("Token:" + token);

         return info;

 }

 

 

 private void logout(RequestInfo info) throws Exception {

         if (sessionManagement != null && info != null) {

                 ServiceResult response = sessionManagement.closeSession(info);

                 checkServiceResultError(response);

         }

 }

 

 /*public boolean sendMessage(RequestInfo info) throws Exception {

 

         ServiceResultOfData dataResponse = dataManagement.read(dataRepoID, dataID, info);

 

         Data dataobj = new Data();

 

         for(int i = 0; i < dataResponse.getResultInfoList().getResultInfo().size(); i++) {

 

 

                 dataobj.setCreated(dataResponse.getValue().getCreated());

                 dataobj.setDescription(dataResponse.getValue().getDescription());

                 dataobj.setId(dataResponse.getValue().getId());

                 dataobj.setModelReference(dataResponse.getValue().getModelReference());

                 dataobj.setName(dataResponse.getValue().getName());

                 dataobj.setRepositoryId(dataResponse.getValue().getRepositoryId());

 

                 dataResponse.setValue(dataobj);

 

                 System.out.println("Data " + dataobj.getDescription() + dataobj.getId() + dataobj.getName() + dataobj.getRepositoryId());                                

         }                

         return dataResponse.isError();                

 }*/

 

 public boolean sendEvent(RequestInfo info) throws Exception {

 

         //creazione dell’oggetto Evento

         CustomEvent eventToPublish = new CustomEvent();

         Types types;                

         eventToPublish.setModelReference(new NamedReference());

         Date dateNow = new Date();                

 

         //i valori del name e del url rappresentano il modello di Evento Jamio che deve essere pubblicato

         eventToPublish.getModelReference().setUrl(eventModelURL);

         eventToPublish.getModelReference().setName(eventModelNAME);

         eventToPublish.getModelReference().setType(Types.CUSTOM_EVENT);

 

         //valorizzazione dei campi custom dell’evento                

         Fields fields = new Fields();                

         Item item = new Item();                        

         ArrayList<Item> itemList= new ArrayList<Item>(4);

         ArrayList<Item> itemListdataSet = new ArrayList<Item>(6);

         

         item = new Item();

         item.setKey("booleano");

         item.setVal(true);

         itemListdataSet.add(0,item);

         

         item = new Item();

         item.setKey("float");

         item.setVal(1.2);

         itemListdataSet.add(1,item);

         

         item = new Item();

         item.setKey("dataeora");

         item.setVal(dateNow);

         itemListdataSet.add(2,item);

         

         item = new Item();

         item.setKey("testo");

         item.setVal("testodataset");                

         itemListdataSet.add(3,item);                

 

         item = new Item();

         item.setKey("decimale");

         item.setVal(new BigDecimal(1.22));

         itemListdataSet.add(4,item);        

         

         item = new Item();

         item.setKey("intero");

         item.setVal(new Long(10) );

         itemListdataSet.add(5,item);                

                 

         fields.getItem().addAll(itemListdataSet);          

         DataSetValue dataSet = new DataSetValue();        

                 

       SerializableListOfanyType listString = new SerializableListOfanyType();        

       SerializableListOfanyType listObjDataSet = new SerializableListOfanyType();

       SerializableListOfanyType listInteger = new SerializableListOfanyType();        

       SerializableListOfanyType listBoolean = new SerializableListOfanyType();        

       SerializableListOfanyType listDate = new SerializableListOfanyType();

     

       ArrayValue datasetArrayValue = new ArrayValue();

         ArrayValue stringArrayValue = new ArrayValue();

         ArrayValue boolArrayValue = new ArrayValue();

         ArrayValue dateArrayValue = new ArrayValue();

         ArrayValue intArrayValue = new ArrayValue();

         

         

         dataSet.setFields(fields);                

         

         listString.getItem().add("acde");

         listObjDataSet.getItem().add(dataSet);

         listInteger.getItem().add(10);

         listBoolean.getItem().add(true);

         listDate.getItem().add(dateNow);                

                         

         datasetArrayValue.setElements(listObjDataSet);        

         stringArrayValue.setElements(listString);

         boolArrayValue.setElements(listBoolean);

         dateArrayValue.setElements(listDate);

         intArrayValue.setElements(listInteger);

         

         item = new Item();

         item.setKey("campo stringa");

         item.setVal(stringArrayValue) ;                

         itemList.add(0,item);        

 

         item = new Item();

         item.setKey("campo numerico");

         item.setVal(intArrayValue);

         itemList.add(1,item);                

 

         item = new Item();

         item.setKey("campo booleano");

         item.setVal(boolArrayValue);

         itemList.add(2,item);                

 

         item = new Item();

         item.setKey("campo data");

         item.setVal(dateArrayValue);

         itemList.add(3,item);        

         

         item=new Item();

         item.setKey("campo dataset");

         item.setVal(datasetArrayValue);

         itemList.add(4,item);

         

         fields=new Fields();                

         fields.getItem().addAll(itemList);                

         

         eventToPublish.setFields(fields) ;

 

         //invocazione del servizio

         ServiceResultOfboolean eventResult = eventManagement.publishEvent(dataRepoID, eventToPublish, info);

         if (!eventResult.isError())

         {

                 System.out.println("PublishEvent: OK");

         }

         else

         {

                 System.out.println("PublishEvent: KO. " + eventResult.getResultInfoList().getResultInfo().get(0).getMessage());

         }

         System.out.println("Logout...");                

         return eventResult.isError();

 }

 

 private void checkServiceResultError(ServiceResult response) throws Exception {

         // Verifica dell'errore

         if (response.isError()) {

                 StringBuffer buf = new StringBuffer();

                 // Ogni elemento di tipo ResultInfo contiene le informazioni del server relative all'evento verificatosi

                 for (ResultInfo resultInfo : response.getResultInfoList().getResultInfo()) {

                         buf.append(resultInfo.getMessage()).append(System.getProperty("line.separator"));

                 }

         throw new Exception("Service Exception: " + buf.toString());

         }

 }

 

 public static void main(String[] args) {

         TestEventArrays jamio = new TestEventArrays();

         RequestInfo info = null;

 

         try {

                 info = jamio.login();

                 if(!jamio.sendEvent(info)){

                         System.out.println("Send ok!");

                 } else{

                         System.out.println("Error send....");

                 }

         } catch (Exception e) {

                 e.printStackTrace();

         } finally {

                 try {

                         jamio.logout(info);

                 } catch (Exception e) {

                         e.printStackTrace();

                 }

         }

 }

}

 

Classe TestEventReference.java

 

package jamio.client;

 

import java.util.ArrayList;

import java.util.Date;

 

import javax.xml.ws.BindingProvider;

 

import com.openworkbpm.schema.CatalogItemValue;

import com.openworkbpm.schema.CustomEvent;

import com.openworkbpm.schema.DataSetValue;

import com.openworkbpm.schema.Fields;

import com.openworkbpm.schema.Fields.Item;

import com.openworkbpm.schema.NamedReference;

import com.openworkbpm.schema.ObjectFactory;

import com.openworkbpm.schema.RequestInfo;

import com.openworkbpm.schema.ResultInfo;

import com.openworkbpm.schema.ServiceResult;

import com.openworkbpm.schema.ServiceResultOfLoginInfo;

import com.openworkbpm.schema.ServiceResultOfboolean;

import com.openworkbpm.schema.Types;

import com.openworkbpm.schema.event_application.IEventManagement;

import com.openworkbpm.schema.event_application.IEventManagementbasicHttpBindingGateway;

import com.openworkbpm.schema.session_application.ISessionManagement;

import com.openworkbpm.schema.session_application.ISessionManagementbasicHttpBindingGateway;

public class TestEventReference {

 

 // Factory per l'inizializzazione degli oggetti

 private ObjectFactory factory = new ObjectFactory();

 

 // Proxy per l'applicazione di gestione dell'autenticazione

 private ISessionManagement sessionManagement;

 

 // Proxy per l'applicazione di gestione degli eventi

 private IEventManagement eventManagement;

 

 /****************** PARAMETRI DI CONFIGURAZIONE *****************/

 

 // Host o indirizzo ip del server Jamio

 private String host = " paas.jamio.com ";

 

 // URL dell'applicazione di gestione dell'autenticazione

 private String sessionUrl = "http://" + host + "/Gateway/Gateway/ISessionManagement";

 

 // URL dell'applicazione Event

 private String eventUrl = "http://" + host + "/Gateway/Gateway/IEventManagement";

 

 // Username di autenticazione

 private String userName = "";

 

 // Password di autenticazione

 private String password = "";

 

 //Nome del repository di autenticazione

 private String identityRepository = "";

 private static String dataRepoID = "";        

 private static String eventModelURL= "";        

 private static String eventModelNAME= "TestEventReference";

 

 /****************** FINE PARAMETRI DI CONFIGURAZIONE *****************/

 

 /**

  * Inizializza i proxy.

  */

 public TestEventReference() {

         ISessionManagementbasicHttpBindingGateway sessionGateway = new ISessionManagementbasicHttpBindingGateway();

         sessionManagement = sessionGateway.getBasicHttpBindingGatewayISessionManagement();

         ((BindingProvider) sessionManagement).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, sessionUrl);

 

         IEventManagementbasicHttpBindingGateway eventGateway = new IEventManagementbasicHttpBindingGateway();

         eventManagement = eventGateway.getBasicHttpBindingGatewayIEventManagement();

         ((BindingProvider) eventManagement).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, eventUrl);                

 }

 

 private RequestInfo login() throws Exception {

         // Autenticazione

         ServiceResultOfLoginInfo loginInfo = sessionManagement.login(identityRepository, userName, password, false,        "");

         checkServiceResultError(loginInfo);

 

         RequestInfo info = factory.createRequestInfo();                

         String token = loginInfo.getValue().getToken();

         info.setToken(token);

         System.out.println("Token:" + token);

         return info;

 }

 

 

 private void logout(RequestInfo info) throws Exception {

         if (sessionManagement != null && info != null) {

                 ServiceResult response = sessionManagement.closeSession(info);

                 checkServiceResultError(response);

         }

 }

 

 /*public boolean sendMessage(RequestInfo info) throws Exception {

 

         ServiceResultOfData dataResponse = dataManagement.read(dataRepoID, dataID, info);

 

         Data dataobj = new Data();

 

         for(int i = 0; i < dataResponse.getResultInfoList().getResultInfo().size(); i++) {

 

 

                 dataobj.setCreated(dataResponse.getValue().getCreated());

                 dataobj.setDescription(dataResponse.getValue().getDescription());

                 dataobj.setId(dataResponse.getValue().getId());

                 dataobj.setModelReference(dataResponse.getValue().getModelReference());

                 dataobj.setName(dataResponse.getValue().getName());

                 dataobj.setRepositoryId(dataResponse.getValue().getRepositoryId());

 

                 dataResponse.setValue(dataobj);

 

                 System.out.println("Data " + dataobj.getDescription() + dataobj.getId() + dataobj.getName() + dataobj.getRepositoryId());                                

         }                

         return dataResponse.isError();                

 }*/

 

 public boolean sendEvent(RequestInfo info) throws Exception {

 

         //creazione dell’oggetto Evento

         CustomEvent eventToPublish = new CustomEvent();

         Types types;                

         eventToPublish.setModelReference(new NamedReference());

         Date dateNow = new Date();                

 

         //i valori del name e del url rappresentano il modello di Evento Jamio che deve essere pubblicato

         eventToPublish.getModelReference().setUrl(eventModelURL);

         eventToPublish.getModelReference().setName(eventModelNAME);

         eventToPublish.getModelReference().setType(Types.CUSTOM_EVENT);

 

         //valorizzazione dei campi custom dell’evento                

         Fields fields = new Fields();                

         Item item = new Item();                        

         ArrayList<Item> itemList= new ArrayList<Item>(4);

         ArrayList<Item> itemListExt = new ArrayList<Item>(6);

         

         item = new Item();

         item.setKey("booleano");

         item.setVal(true);

         itemListExt.add(0,item);                        

                 

         fields.getItem().addAll(itemListExt);  

         

         DataSetValue dataSet = new DataSetValue();                

         NamedReference ref = new NamedReference();

         CatalogItemValue extRef = new CatalogItemValue();

         

         ref.setName("Collegamento");

         extRef.setFields(fields);                

         dataSet.setFields(fields);

         

         item = new Item();

         item.setKey("campo collegamento");

         item.setVal(ref) ;                

         itemList.add(0,item);        

 

         item = new Item();

         item.setKey("campo esteso");

         item.setVal(extRef);

         itemList.add(1,item);        

         

         fields=new Fields();                

         fields.getItem().addAll(itemList);                

         eventToPublish.setFields(fields) ;

 

         //invocazione del servizio

         ServiceResultOfboolean eventResult = eventManagement.publishEvent(dataRepoID, eventToPublish, info);

         if (!eventResult.isError())

         {

                 System.out.println("PublishEvent: OK");

         }

         else

         {

                 System.out.println("PublishEvent: KO. " + eventResult.getResultInfoList().getResultInfo().get(0).getMessage());

         }

         System.out.println("Logout...");                

         return eventResult.isError();

 }

 

 private void checkServiceResultError(ServiceResult response) throws Exception {

         // Verifica dell'errore

         if (response.isError()) {

                 StringBuffer buf = new StringBuffer();

                 // Ogni elemento di tipo ResultInfo contiene le informazioni del server relative all'evento verificatosi

                 for (ResultInfo resultInfo : response.getResultInfoList().getResultInfo()) {

                         buf.append(resultInfo.getMessage()).append(System.getProperty("line.separator"));

                 }

         throw new Exception("Service Exception: " + buf.toString());

         }

 }

 

 public static void main(String[] args) {

         TestEventReference jamio = new TestEventReference();

         RequestInfo info = null;

 

         try {

                 info = jamio.login();

                 if(!jamio.sendEvent(info)){

                         System.out.println("Send ok!");

                 } else{

                         System.out.println("Error send....");

                 }

         } catch (Exception e) {

                 e.printStackTrace();

         } finally {

                 try {

                         jamio.logout(info);

                 } catch (Exception e) {

                         e.printStackTrace();

                 }

         }

 }

}