Archive: May, 2008
Posted on 2:57pm 5/22/2008 by Bruno Silva in
Programming
During the last couple of days I’ve been exploring BizTalk 2006 Business Rules Engine for a college assignment.
The objective is calculating the total cost of a travel. The input is the number of days the customer was staying in the destination, and the number of touristic spots he wanted to visit. The business rules defined the price per night of the stay and the price per visit. These values added to the flight cost gives us the total cost of the travel.
There is a nice tutorial about the BizTalk 2004 version of the rule composer which is quite similar to the 2006 version (at least in the UI). After some search I was unable to find an answer to my particular problem (was it that obvious?… read further and tell me).
I wanted to calculate the cost per visit and cost per night within the policy (I wanted to set these values) and I also wanted to calculate the total cost of the travel based on those variables (by getting their values).
(I am using an XML file as input which has the elements I talked about before)
When you create a definition in your vocabulary (which you use do define rules in your policy) you must select the operation you want to do over the element: Get or Set. You can choose only one of them…

So, what’s the trick to perform both actions? Create two definitions of the same element, one as Get and the other as Set.
When a rule uses the Set definition of the element, all the rules that use the Get definition of that XML element read the updated value.
Works great! Just be careful about rules priority. Make sure that rules that read the element value are called after a rule that sets it’s value.

O evento foi ontem, mas as novidades continuam. Agora estão disponíveis no canal do Sapo Vídeos as entrevistas realizadas durante o dia de ontem alguns concorrentes, jurados, oradores e organizadores do evento.
Sempre a assapar em http://videos.sapo.pt/CqfL74tYhhjRDnOdb8Z6.
O meus mais sinceros parabéns a todos os envolvidos na organização e dinamização do evento. Valeu a pena.
Deixo referência a um relato mais alargado do evento feito pelo Gonçalo Chaves no seu blog.
Hoje assisti no âmbito do dia da inovação a 7 apresentações de projectos concorrentes ao Imagine Cup 2008 na categoria de Software Design. Foi uma manhã muito rica em projectos onde existia o cunho pessoal de cada equipa. Que projectos foram apresentados?
GestGarden (ISEL)
Sistema de Gestão de Regas com um engine de workflow de controlo alimentado com dados meteorológicos provenientes de webservices, dados de sensores colocados nos jardins e imediações, e dos próprias pessoas da gestão e manutenção dos jardins. Este projecto dava o controlo do prolongamento e paragem da rega, detecção de falhas e controlo dos aspersores. Incluia uma aplicação web, uma aplicação mobile e o servidor central.
CarFree (UBI)
Este projecto tinha duas componentes: a inclusão de dispositivos multimédia nos transportes públicos como autocarros, de forma a cativar as pessoas a utilizá-los, e um assistente de viagem para os condutores de transportes particulares, com o objectivo de informar das melhores alternativas que incluem transportes públicos.
EcoShopping (Univ. Minho)
A ideia deste projecto é a utilização de dispositivos com Windows Mobile para a construção de listas de compras baseadas numa base de dados dos produtos e lojas existentes no país. Existem duas variáveis disponíveis para o utilizador: o preço e a classificação ecológica do produto, dando assim a oportunidade às pessoas de fazer as escolhas acertadas no seu dia-a-dia.
Smart Containers (UTAD)
O problema abordado foi a recolha de óleos utilizados nas cozinhas. Consistia na utilização em nossas casas de um recipiente equipado com um sistema capaz de detectar o nível de ocupação. Dado 80% de líquido no recipiente, é enviada uma mensagem por GSM para o servidor central que indica aquela casa como um local onde é necessária a recolha. Existiria assim uma minimização dos custos de recolha, e uma maior comodidade para o utilizador. O projecto abarcava ainda o sistema de informação da recolha incluindo o backoffice de administração e as aplicações Windows Mobile para as pessoas a realizar a recolha no terreno.
Lifts4All (Univ. Minho)
O software proposto por esta equipa consistia num portal web acompanhado de uma aplicação para Windows Mobile com os quais era possível gerir, propor, requisitar e classificar boleias dadas pelos membros da comunidade. Estando eu a sair de casa, posso introduzir no sistema a minha origem e destino, e em real-time pessoas que estão no trajecto teriam uma proposta de cedência de lugar no veículo. O conceito novo proposto é o conceito de tempo real. O sistema baseia-se em reputação e no feedback dos envolvidos.
r-Ecycled (ISEP)
Uma rede social de reportação de problemas ambientais foi a proposta desta equipa do norte. A colocação de fotos e comentários referentes a problemas como um contentor com lixo espalhado no chão, que seria informação utilizada pelas autarquias que teriam acesso ao sistema são a base do projecto. (http://www.r-ecycled.com)
3rd Block (Univ. Aveiro)
Ainda na onda das redes sociais chega este projecto de Aveiro. O conceito é semelhante à da equipa do ISEP (e vice-versa!! Realço-o pois esta equipa acabou por não ter tanto impacto por ter apresentado depois do ISEP). Visitem o site em http://www.3rdblock.net.
E o vencedor é… Smart Containers da UTAD!!
Serão os nossos representantes na final mundial em Paris, a disputar no início de Julho. Confesso que foram os meus preferidos, e por isso mesmo fiquei muito contente pela sua vitória. Mereceram. Deixo também os parabéns às restantes equipas. Tanto esta equipa como a que ficou em segundo lugar (r-Ecycled, do ISEP) receberam a proposta de um estágio no Sapo, de forma a poderem dar asas às suas ideias! Será sempre a assapar!).
It’s time for us to decide the next year Imagine Cup design graphics!
There are several choices.
CREATE

A celebration of imagination and technology! This bold and colorful design dazzles the viewer with rich color, energy, and motion.
LIGHTBURST

Imagination, motion and the idea of creating something powerful from nothing. Time freezes as we see figures dramatically emerge from cascades of moving light.
EMERGE

Inspirational elements emerge from colorful bite-sized nuggets! Fun characters playfully make their way into the design.
FLOW

Creativity, motion and inspiration.
TEXTILE

With its color pallet, stitch patterns and color overlay, this design evokes a sense of hand wrought do it yourself design that resonates with youth culture. Earth themes are echoed throughout with elements like rain and plants, animals and clouds.
EXPLOSIVO

Vinyl Toys, Spray Paint and Felt Tip Markers. Vibrant colors and high contrast hand drawn patterns evoke an energetic street pop art aesthetic.
Cast your vote at http://www.mondorobot.com/microsoft/IC2009/!

Amanhã na Culturgest - Lisboa pelas 9h00. Prevejo grandes projectos nesta final.
A agenda do dia está disponível para download.
Para quem não puder estar presente, pode sempre acompanhar a emissão em directo no Sapo Vídeos. Basta clicar na emissão ou seguir este link directo.
Amanhã lá estarei. E mais tarde sobre o evento “blogarei”.
Hoje em dia cada vez temos mais Javascript nos sites que produzimos. Existem “milhentas” bibliotecas giras que usamos para produzir experiências teoricamente mais ricas para os visitantes dos web sites. Vê-se de tudo, desde bibliotecas para efeitos visuais, até frameworks de AJAX incluindo também os nosso próprios ficheiros de script.
O download destes ficheiros corresponde a um overhead considerável, e por isso mesmo enquanto estava, recentemente, a trabalhar num site recorrendo à framework Adobe Spry, pesquisei sobre formas de minimar este peso extra no download. Encontrei uma entrada de um blog bastante interessante. Compara algumas abordagens.
A redução do tamanho de um ficheiro de código Javascript pode ser realizada removendo todos os caracteres dispensáveis: comentários, quebras de linha, espaços, etc. O código continua a ser válido, e correctamente interpretado, perdendo apenas a legibilidade. Encontra-se “na moda” haver versões de debug e release para bibliotecas Javascript por esta razão.
Pode-se ainda aproveitar a capacidade de compressão no protocolo HTTP e reduzir ainda mais o tamanho dos ficheiros, tendo sempre em consideração que vai implicar processamento extra no lado do cliente, pois o que foi comprimido tem de ser descomprimido, de forma a poder ser interpretado.
Deixo a comparação entre 2 métodos distintos de redução de tamanho de ficheiros javascript, que dá bem a ideia do compromisso que está em causa.

Para utilizar ficheiros em Javascript “gzipped” basta utilizar uma ferramenta que comprima neste formato, compactar o ficheiro e colocar o ficheiro gzip no atributo src da tag script.
Exemplo: <script type=”text/javascritpt” src=”mylib.js.gz”/>