1/12/2010 23:27
El Bruno
[VS2010] Utilizando DGML para mostrar información de Twitter

Buenas,
hace unos días, mientras analizaba las posibles soluciones para mostrar información de un sistema XYZ; se me ocurrió que era posible utilizar Directed Graph Markup Language (DGML), para crear un gráfico de relaciones entre los elementos del sistema XYZ. Si bien la idea era atrayente, la prueba de concepto fué algo completamente diferente:
Crear un diagrama con Tweets de Twitter, y mostrar la relación de los mismos con los usuarios utilizando DGML.
Lo bueno de la prueba de concepto, es que la codificación fueron 10 minutos, ya que el modelo de objetos es muy natural (see Microsoft.VisualStudio.Progression.GraphModel). No voy a explicar el proyecto completo, ya que lo puedes descargar desde aquí, pero si un par de líneas de código que son las que dan vida al proyecto.
En primer lugar, la búsqueda de ínformación en Twitter. Ya sé, debería ser asíncrono, pero … no me dieron ganas
.
1: public static IEnumerable<TweetElement> Search(string criteria = @"@elbruno")
2: {
3: // search criteria
4: var uriString = @"http://search.twitter.com/search.atom?rpp=5&q=" + criteria;
5: var searchUri = new Uri(uriString);
6: var twitter = new WebClient();
7: var res = twitter.DownloadString(searchUri);
8: return ConvertXDocumentToTweetCollection(res);
9: }
En segundo lugar, la creación de un Nodo para DGML, como pueden ver, es bastante simple
1: static Node CreateTweetNode(TweetElement tweetElement)
2: {
3: if (_graph.Nodes[tweetElement.Id] == null)
4: {
5: var id = tweetElement.Id;
6: var node = new Node(id);
7: node.SetValue(_gpLabel, tweetElement.Message);
8: node.SetValue(_gpUser, tweetElement.User);
9: _graph.Nodes.Add(node);
10: return node;
11: }
12: return null;
13: }
El resultado en el xml del DGML es similar al siguiente:
1: <Node Id="@elbruno" Background="#FFFFA500" Label="@elbruno" />
Y finalmente, la capacidad de agregar relaciones entre nodos
1: var link = new Link(_graph, node, userNode);
2: _graph.Links.Add(link);
Esto nos brinda la capacida de crear un gráfico DGML, como el de la siguiente imagen.

Aquí el código de ejemplo, obviamente se aceptan sugerencias 
http://cid-bef06dffdb192125.office.live.com/self.aspx/Code%20Samples/2010%2012%2001%20DGMLTwitter.zip
Saludos @ Home
El Bruno

Archivado en: Visual Studio 2010,Code Sample,DGML
Comparte este post: