Thursday, August 31, 2006

BizTalk Server and Code Generation

BizTalk Orchestrations are visual descriptions of processes, models of behaviour and interactions. These models are the basis for a code generation step, during which BizTalk converts the orchestrations into C#. The resulting C# files are then compiled, and afterwards deleted. The models/orchestrations themselves are text files you can open in Notepad, and this holds true for all the BizTalk-specific project files, such as Maps, Schemas or Pipelines.


I am a firm believer in automation and Code Generation, and these strategies have been very helpful in BizTalk projects, which is maybe not the most obvious candidate for the use of code generation.
Everything that is done twice, the saying goes, is worth scripting. :-) As to code generation itself, I resort to it as much as possible, being it based on Domain Specific models (such as BizTalk Orchestrations), or simple Template-based generation, using tools like the excelent CodeSmith.


Typical figures state that Code Generation can be used to produce up to 60-80% of a solution's code, especially in components such as the data access layer. What if we try to apply Code Generation to BizTalk? Here are some ideas.


- Project files: typically we do "Add > New Project > Empty BizTalk Project", select the target folder, later on configure the project with the key, fill in copyright configuration, etc. This can be quick, no doubt, but if you have a lot of projects, generation is definetly quicker, and the result is uniform. These project files can also include references to other projects or components you know you need.


- Sample schemas: if you know that each integration point demands, for example, 3 schemas (source schema, canonical schema, target schema), you can generate starting schemas for these messages. If you can know in advance some characteristics of the schemas (ex: xml vs delimited) you can take this in consideration, and also fill in the appropriate schema namespaces, and other attributes.


One step further would be to generate schemas, or at least initial versions of schemas, based on a meta-description stored, for example, in an Excel file. With only 4 columns: Field name, Field type, Max Occurs and Min Occurs, you can generate very interesting base implementations.


- Sample maps: in the example above, you could generate four map files between the different formats, empty but for the selection of the correct maps as target and destination.


Again, a more ambitious step would be to describe the maps themselves using Excel, even if only with direct links. One line of metadata such as:


"name, string, 1, 1, MyName, string, 1, 0"


Could result in 2 schemas, the first with a single element "name" of type xs:string and max/min occurs 1, the second with an element "MyName", string, maxoccurs 1, min occurs 0. Plus, you could generate 2 maps, mapping the values together, from the source to the target schema, and vice-versa.


- Sample orchestrations: apart from generating empty orchestration (.odx) files, you can also do stuff such as automatically add a Receive Shape with Activate=True at the top and Long Running transaccionality turned on, or simply include common code refering to other generated schemas and/or maps.


- Deploy scripts: especially when using BizTalk Server 2004, deploy/undeploy scripts are almost critical to automate operational tasks and aid in the development cycle. These can be easily generated in a scenario such as the ones described above.


 


In a recent project, and from a single input parameter (the name of the "Concept" being integrated), we generated combinations of all of the elements described above, in a total of about 25 files, with an obvious productivity gain. It's much easier to delete the excess than to create just the needed files from scratch.


If you have any other ideas for code generation over BizTalk, please let me know. :-)


[Cross-Posted de http://www.arquitecturadesoftware.org/blogs/joaomartins]

Monday, August 28, 2006

Mail merge a partir de uma lista de SharePoint

Alguma vez pensaram como seria interessante fazer mail merge no Word usando como base uma lista de SharePoint?


 


Se sim, e se já experimentaram, provavelmente chegaram à conclusão que não é possível, porque o Word nem sequer permite escolher uma lista de SharePoint como Data Source para o Merge.


Existem duas alternativas:


1)    exportar a lista para Excel e usar o Excel como data source; ou


2)    criar uma base de dados Access e fazer uma linked table para a lista de SharePoint , usando esse Access como data source.


 


A primeira é chata porque obriga a fazer sempre a exportação para Excel (ou a abrir o Excel e fazer refresh dos dados) antes do mail merge.


A segunda não funciona porque o Word diz que a data source não possui tabelas visíveis.


 


No entanto, podemos fazer a segunda alternativa funcionar através dos seguintes passos:


1)    Ele mostra o erro: The data source contains no visible tables. Pressionamos OK.


2)    Ele mostra a mensagem: Could not find ‘C:\Contactos.mdb’. Pressionamos OK.


3)    Aparece uma janela de login para a ligação à BD Access. Pressionamos o botão Database...


4)    Aparece uma janela para selecção do ficheiro MDB. Seleccionamos o ficheiro Access e pressionamos OK.


5)    Volta ao ecrã de login. Pressionamos OK.


6)    Aparece uma janela para seleccionar a tabela de onde queremos importar a informação para o merge. No entanto não aparece nenhuma tabela. Pressionamos o botão Options...


7)    Aparece uma caixa de opções. Activamos a opção Synonims e pressionamos OK.


8)    Aparece a dita tabela na lista de tabelas da BD :-D


9)    Daqui para a frente segue-se o processo normal.


 


Estes passos foram realizados em Word 2007, mas este procedimento deve ser semelhante em Word 2003 e SharePoint 2003 (já que foi descrito com resposta a um pedido de ajuda referente à versão 2003).


 


André Vala

?>

Friday, August 25, 2006

Criar temas para o SharePoint 2007 com o SharePoint Designer 2007

Os temas, em Sharepoint 2007, permitem mudar o aspecto gráfico de um site com uma só acção. Ou seja, tudo o que seja cores e imagens é manipulado pelo tema associado ao site.


Isto significa, porém, que um tema não tem qualquer influência no layout das páginas.


 


NOTA: as descrições seguintes referem-se apenas à versão Beta 2.


 


Instalação de um Tema


 


O tema é uma pasta composta por ficheiros CSS, um ficheiro INF e vários ficheiros de imagem (GIF, JPG...). A instalação de um tema compreende dois passos:


1) colocar a pasta em C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\THEMES


2) alterar o ficheiro C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033\SPTHEMES.XML acrescentando uma entrada para o novo tema:


 


<Templates>


            <TemplateID>MyTheme</TemplateID>


            <DisplayName>My Theme</DisplayName>


            <Description>O My Theme tem um fundo branco com áreas de controlo vermelhas e highlights amarelos</Description>


            <Thumbnail>images\MyTheme.png</Thumbnail>


            <Preview>images\MyTheme.gif</Preview>


</Templates>


 


O TemplateID corresponde ao nome da pasta do tema.


O DisplayName é o nome que aparece na listas dos temas, na página de selecção, no Sharepoint.


O Description é a descrição que aparece associada ao tema, nessa mesma página, no Sharepoint.


O Thumbnail e Preview são as imagens de exemplo usadas, na página de selecção de tema do site Sharepoint, para mostrar o look final.


 


Ao fazer estas alterações, o tema fica imediatamente disponível no SharePoint, sem necessidade de reiniciar o IIS.


 


Edição de um Tema


 


Depois de aplicado um tema a um site, alterar as CSS ou as imagens na pasta dos temas não surtirá qualquer efeito nesse site.


Mesmo que se aplique um Tema B ao site, alterando em seguida a CSS do Tema A, para depois o voltar a aplicar... o site ficará com o aspecto do Tema A inicial.


 


Explicação: ao editar o site com Sharepoint Designer 2007, podemos constatar que, ao aplicar um determinado tema, o Sharepoint faz um merge de todas as CSS do tema e copia tudo para a pasta (virtual) _themes dentro do site. Nessa pasta passam a estar todos os CSS, imagens e o ficheiro INF, e um novo ficheiro CSS (por exemplo CAP1011-65001.CSS) que é o ficheiro realmente utilizado pelo Sharepoint. O nome do ficheiro é criado com base no nome do tema (CAP, no exemplo) e a codepage (65001, no exemplo) que está definida no ficheiro INF do tema.


 


Portanto, para editar o tema e ver as implicações das alterações, deve ser alterado este ficheiro no SharePoint Designer.


As classes (estilos) que não forem redefinidos ficarão com as definições do tema original do SharePoint.


 


André Vala

?>