In questo esempio viene creata un'attività di runtime che utilizza tipi complessi nella relativa interfaccia. I tipi complessi sono già definiti, ovvero il file system locale sul client dispone di file XSD contenenti la descrizione dei tipi complessi.
Perché e quando effettuare questa attività
L'esempio viene eseguito solo all'interno del contesto dell'applicazione aziendale chiamante, per cui vengono caricate le risorse.
Procedura di questa attività
- Accedere a ClientTaskFactory, quindi creare una serie di risorse che contenga le definizioni del nuovo modello di attività.
ClientTaskFactory factory = ClientTaskFactory.newInstance();
ResourceSet resourceSet = factory.createResourceSet();
- Aggiungere le definizioni XSD dei tipi complessi alla serie di risorse in modo che siano disponibili quando si definiscono le operazioni.
I file si trovano nella posizione in cui viene eseguito il codice.
factory.loadXSDSchema( resourceSet, "InputBO.xsd" );
factory.loadXSDSchema( resourceSet, "OutputBO.xsd" );
- Creare la definizione WSDL, quindi aggiungere le descrizioni delle operazioni.
// creare l'interfaccia WSDL
Definition definition = factory.createWSDLDefinition
( resourceSet, new QName( "http://www.ibm.com/task/test/", "test" ) );
// creare un tipo di porta
PortType portType = factory.createPortType( definition, "doItPT" );
// creare un'operazione, il messaggio di input è un InputBO e
// il messaggio di output è un OutputBO;
// un messaggio di errore non è specificato
Operation operation = factory.createOperation
( definition, portType, "doIt",
new QName( "http://Input", "InputBO" ),
new QName( "http://Output", "OutputBO" ),
(Map)null );
- Creare il modello EMF del nuovo human task.
Se si sta creando un'istanza di attività, non è richiesta una data Valido da (UTCDate).
TTask humanTask = factory.createTTask( resourceSet,
TTaskKinds.HTASK_LITERAL,
"TestTask",
new UTCDate( "2005-01-01T00:00:00" ),
"http://www.ibm.com/task/test/",
portType,
operation );
Questo passo inizializza le proprietà del modello di attività con i valori predefiniti.
- Modificare le proprietà del modello human task.
// utilizzare i metodi dal pacchetto com.ibm.wbit.tel, ad esempio,
humanTask.setBusinessRelevance( TBoolean, YES_LITERAL );
// richiamare la produzione attività per creare o modificare gli elementi
dell'attività compositi
TaskFactory taskFactory = factory.getTaskFactory();
// specificare le impostazioni di escalation
TVerb verb = taskFactory.createTVerb();
verb.setName("John");
// creare escalationReceiver, quindi aggiungere il verbo
TEscalationReceiver escalationReceiver =
taskFactory.createTEscalationReceiver();
escalationReceiver.setVerb(verb);
// creare l'escalation, quindi aggiungere il destinatario dell'escalation
TEscalation escalation = taskFactory.createTEscalation();
escalation.setEscalationReceiver(escalationReceiver);
- Creare il modello dell'attività che contiene tutte le definizioni della risorsa.
TaskModel taskModel = ClientTaskFactory.createTaskModel( resourceSet );
- Convalidare il modello dell'attività, quindi correggere eventuali problemi di convalida che vengono trovati.
ValidationProblem[] validationProblems = taskModel.validate();
- Creare l'istanza o la maschera di attività di runtime.
Utilizzare l'interfaccia HumanTaskManagerService per creare l'istanza o la maschera dell'attività. È necessario fornire un nome dell'applicazione contenente le definizioni del tipo di dati, in modo che sia possibile accedervi. Inoltre, l'applicazione deve contenere un'attività o un processo fittizio, in modo che l'applicazione sia caricata da Business Process
Choreographer.
- Il frammento di seguito riportato crea un'istanza dell'attività:
task.createTask( taskModel, "BOapplication", "HTM" );
- Il frammento di seguito riportato crea una maschera dell'attività:
task.createTaskTemplate( taskModel, "BOapplication" );
Risultato
Se viene creata un'istanza di attività di runtime, ora può essere avviata. Se viene creata una maschera di attività di runtime, ora è possibile creare istanze di attività dalla maschera.