You are on page 1of 27

Himalia

28.02.07 / Architect Forum / Microsoft / Santiago de Chile Leonardo Vernazza


Agenda

• El concepto
• Himalia Guilder
• Himalia DragOn
• Estado
El concepto
Inicio

• ¿Por qué hay lenguajes para DB y no para UI?


SQL existe desde 1970!!!!

• Historia: enfoque bottom-up, desde la plataforma a su


interfaz gráfica.
Hipermedia
Objetivos

• Un lenguaje para construir UI orientadas a servicios.

• Modelo está basado en tres pilares:


– Hipermedia
– Controles (composite)
– Patrones

• Un paso real hacia UI semánticas.


Los modelos
Cultures
User Profiles
(globalization)

Presentation

Controls Layout Behavior Themes

Use Cases Navigation

Accessibility Adaptability
Services
Comparación
Himalia Guilder*
for Visual Studio 2005

* Guild: To build a graphic user interface.


Caracterísitcas

• Guilder
– Add-In para Visual Studio 2005
– Hecho con DSL Tools

• Runtime
– Para WPF
– Back/Forward real
– Undo/Redo
Himalia Guilder

• Demo: Pet Shop


Casos de Uso

Repositorio de
plantillas de
? Casos de Uso
Mapa de
Navegación

Repositorio de
Layout Layouts

Repositorio de Controles /
=
Historia de mapeos Make up

Elección GUI
de controles
El Runtime
Controls
Runtime Session
Services

• Manejar la interfaz .hui


– Sincronizar casos de uso
– Efectuar la navegación
– Sincronizar las areas de la pantalla

• Interactuar con el exterior


– Invocar servicios
– Obtener y cargar los controles

• Proveer los servicios de UI


– Back/Forward
– Undo/Redo
– Status
Al alcance de la mano
• Replay
Ud ha estado inactivo por 30 minutos,
¿desea ver un Replay de lo que estaba haciendo?

• Compartir sesión
A: Cómo hago para llegar a tal lado?
B: Esperá un segundo que te mando mi sesión…

• Anotaciones en todos lados

• Estadísticas
Himalia DragOn
Visión y estrategia

• Aprovechar la base de conocimiento (user-side)

• Interoperabilidad en la UI a nivel semántico

• Asistida por el usuario (no deductiva)

• Sustentada por la Adaptabilidad y la Adaptatividad


El caso de uso
• Dos aplicaciones PetShop y un EmailClient.

• El usuario arrastra el carrito desde el PetShop a un contacto del


EmailClient.

• Himalia pregunta al usuario qué acción tomar.

• Usuario responde:
– Ejecutar “Proceed to Check Out”
– Completar “Delivery Address” con “Contact.Address”

• La siguiente vez que el usuario arrastra el carrito desde el


PetShop a un contacto en el EmailClient, se hace
automáticamente.
Pero hay más
1. Eventualmente (usando adaptabilidad) podría agregar una
acción directamente en el carrito, llamada “regalar a un
amigo”.

2. Los usuario pueden compartir esta información.


Fulano agregó una acción entre dos aplicaciones que usted tiene,
¿desea agregarla Ud también?

3. DragOn como distribuidor de aplicaciones (long tail?)

Las personas que usan PetShop también usan MyDeliverySystem,


¿desea bajarlo y probarlos juntos?
Estado
Versiones
• Versión 0.8 [beta] actual:
– Disponible desde el dic/06

• Versión 1
– Documentación, ejemplos, etc.
– Acciones asincrónicas
– EasyThemes, EasyEffects
– Cultures (básico)
– Templates
– Depurar API’s de integración (controles y servicios)

• DragOn [alfa]
– Luego de la versión 1
Difusión e Integración
• Architect Forum de Montevideo y Santiago.

• Libro de Steve Cook sobre DSL Tools.

• Integrando con productos de terceros.


– DeKlarit
– TangibleArchitect
– d2B
www.himalia.net
Extras on demand
Himalia Controls
[HimaliaManifesto(
HimaliaControlType.NavigationalContent, Himalia Control
Manifesto
typeof(IndexViewer),
typeof(FxControlProxy<IndexViewer>),
typeof(IndexViewerContract), Contract definition
"IndexViewerDescription",
"IndexViewerImg"
)]
public partial class IndexViewer
: UserControl, IFxNavElementContainer
{

public INavElement NavigationalContent { get; set; }
public IFxControlProxy Helper { get; set; }

}
Service Invoker
public partial class ShoppingCartProceedToCheckout
: AbsUndoNotRequiredServiceInvoker
{
protected override AbsServiceInvoker Clone() { … }

public override void invoke() { … }


}

Si se hereda de AbsUndoRequiredServiceInvoker hay que:

• Implementar invokeUndo()
• Guardar el estado necesario en esta clase para poder
deshacer/compensar
Catálogos de patrones

• Comunidad Hipermedia
http://www.designpattern.lu.unisi.ch/index.htm
Ejemplo: Oportunistic Link

• Jenifer Tidwell (HCI)


http://designinginterfaces.com/
Ejemplo: Visual Framework
Hypermedia
• HDM
• RDM
• EORM
• SOHDM
• WSDM
• RNA
• OOHDM
• LoweHall
• UWE
• OO-H
• GuiLayout
• …

Paper comparativo de Nora Koch, creadora de UWE (2000):


http://www.pst.informatik.uni-muenchen.de/personen/kochn/techrep/hypdev.pdf