Async Channels
Creación y configuración de un nuevo Channel
Para crear un nuevo channel por medio del menu de configuración de Async > Channels lo hacemos a través del botón “create new channel”:
- Name: nombre con el cual se referencia el channel.
- Description: descripción del channel.
- Message Type: el mensaje que se envía a través de un channel es la representación en formato JSON de un modelo, el cual debe estar previamente definido en tu app utilizando matr script.
- Mappings: autocompleta todos los modelos y atributos que intervienen en el mapeo. En el campo de la derecha, se puede cambiar el nombre de propiedad a la cual se desea mapear dicho atributo, o resetear el mismo al valor por defecto.
Operaciones con canales
- Edición: Se puede editar la información del canal haciendo click en el nombre del mismo.
- Borrado: Se puede borrar un canal haciendo click en el ícono de tachito de basura, del canal correspondiente.
- Ver info de conexión: Al hacer click en el ícono de información, podemos acceder a información de conexión, como lo son la URL y puerto del servidor, nombre interno del canal, etc.
- Actualización automática de mapeos: Si modificamos un modelo que está siendo utilizado por un canal, dicho canal mostrará un ícono de alerta. Al hacer click en dicho ícono, se actualizará el mapeo incluyendo los cambios realizados al modelo.
Experience Main {
// Add your attributes here
String userName label("Username")
String msg label("Mensage")
Decision r2 action("MainContext.ruleSubscribe") label("subscribe")
Decision r3 action("MainContext.ruleUnsubscribe") label("unsubscribe")
Decision r4 action("MainContext.rulePublish") label("publish")
Decision r5 action("MainContext.ruleDisconnect") label("disconnect")
Array<String> messages value([]) as List
}
Application{
String topicName
OnInit{
topicName = "mensajeria"// nombre del canal creado anteriormente
broker.async.initialize()
broker.async.connect()
broker.async.subscribe(topicName, @function(Subscriptors.handler))
}
}
RuleContext MainContext {
Rule ruleSubscribe{
Main m = broker.ui.getDataSource()
broker.async.subscribe(topicName, @function(Subscriptors.handler))
}
Rule rulePublish{
Main main = broker.ui.getDataSource()
User u = User(name:main.userName)
Message m = Message(user:u, msg:main.msg)
broker.async.publish(topicName, m)
}
Rule ruleUnsubscribe{
Main m = broker.ui.getDataSource()
broker.async.unsubscribe(topicName)
}
Rule ruleDisconnect{
broker.async.disconnect()
}
}
Model Message{
String msg
User user
}
Model User{
String name
}
Module Subscriptors{
void handler(Message message){
Main m = broker.ui.getDataSource()
m.messages.add("De " + message.user.name + ": " + message.msg)
}
}