sexta-feira, janeiro 30, 2009

Automation of BizTalk Installation Package Build

BizTalk solutions include numerous interdependent components and managing those during build/un-deploy/deploy cycles can be very tedious and time consuming. Fortunately BizTalk 2006 greatly simplifies deployment tasks with the new Application concept and improved BTSTask tool which replaces BTSDeploy. You can further simplify life by scripting package building process. I'd like to demonstrate some features of BTSTask and show how it can be used for installation package build automation.

There are some assumptions in the example provided about how solution is structured and naming conventions. These are not anything new and based on best practices for .net solutions development as well as some common sense rules specific for BizTalk development. For instance, VS.NET projects are structured by BizTalk functions like: Schemas, Maps, Pipelines, Orchestrations, BRE Vocabularies and so on, and have common solution namespace: i.e. CompanyName.ApplicationName.Maps.

Typically, BizTalk package build would include following stages:

  • Build projects
  • Deploy assemblies to global assembly cache (may not be necessary if application is not intended to run on the build server)
  • Deploy artifacts to the BizTalk management database
  • Import application bindings
  • Export installation package (MSI)

Let's consider scripts. First, I have a master build script that calls all task specific scripts for the corresponding solution:

@REM ----------------------------------------------------------
@REM Master script. Builds solution and deploys all artifacts
@REM of BizTalk application and packages resources into the MSI.
@REM -----------------------------------------------------------

@ECHO
OFF
SETLOCAL
SET AppName=%1
SET BuildMode=%2

 
 

IF %BuildMode%==Debug (SET BtsBuildMode=Development) ELSE (SET BtsBuildMode=Deployment)

CALL %AppName%_set_build_environment.bat
CALL %AppName%_buid_projects.bat
CALL %AppName%_gac_assemblies.bat
CALL %AppName%_biztalk_deploy.bat
CALL %AppName%_start_orchestrations.bat

ECHO.
ECHO Exporting installation package...
btstask ExportApp /A:%AppName% /P:"%MsiFolder%/%AppName%.msi" /ResourceSpec:" :"%MsiFolder%/%AppName%.ResourceSpec.xml"

ENDLOCAL
PAUSE


 

Note how it accepts command line argument defining which application to build. Every script is prefixed with the application name. This application name is assigned to the variable AppName and is used in other scripts. Entire process is broken down into task specific scripts so they can be run standalone (if I need to GAC only, for instance). The same reason is behind the fact that every script makes a call to the set_build_environment. Let's look at what's in this file:

 
 

@REM ------------------------------------------------------------

@REM Sets environment variables for building BizTalk application
@REM ------------------------------------------------------------

@ECHO
OFF

IF DEFINED BUILD_ENV_SET GOTO
end

ECHO Setting build environment...

CALL "%VS80COMNTOOLS%vsvars32.bat"

SET AppDescription="My BizTalk Application"
SET SolutionNamespace=CompanyName.ProjectName
SET SolutionName=..\..\CompanyName.ProjectName.sln
SET AssemblyKeyFile=..\..\key.snk

SET MsiFolder=..\..\MSI

SET BindingFile="..\Bindings\%AppName%.BindingInfo.xml"
SET BindingFileDev="..\Bindings\%AppName%.BindingInfo.DEV.xml"
SET BindingFileTest="..\Bindings\%AppName%.BindingInfo.TEST.xml"
SET BindingFileProd="..\Bindings\%AppName%.BindingInfo.PROD.xml"

SET OrchestrationName="ProcessRequest"

SET SqlPortName=SaveRequest_SQL
SET ApprovalPortName=SendApprove_FILE
SET LogPortName=Log_FILE

SET WebPortName=WebPort_ReceivePort
SET WebPortReceiveLocationName=Services/ProcessRequest

SET BUILD_ENV_SET=1

ECHO Build environment has been set.

:end

 
 

The script makes call to the vsvars32.bat and sets all required variables used in corresponding scripts.


 

Next step is to build Visual Studio projects and is pretty simple:


 

@REM ------------------------
@REM Builds solution projects
@REM ------------------------

@ECHO
OFF

CALL %AppName%_set_build_environment.bat

ECHO.
ECHO Building solution projects...

DevEnv /Build %BuildMode% /project %SolutionNamespace%.Common %SolutionName% /Out %AppName%_build.log



DevEnv /Build %BuildMode% /project %SolutionNamespace%.Schemas %SolutionName% /Out %AppName%_build.log

 
 

Next script installs compiled assemblies to the global assembly cache using GacUtil tool and I won't quote it here.


 

BizTalk application deployment step is probably the most interesting one as it shows how BTSTask can be used to add different kind of resources to the application.


 

@REM ------------------------------------------
@REM Deploys artifacts to the BizTalk database
@REM ------------------------------------------
@ECHO
OFF

CALL %AppName%_set_build_environment.bat

@ECHO.
@ECHO Creating BizTalk application...

btstask AddApp /ApplicationName:%AppName% -Description:%AppDescription%

ECHO Deploying BizTalk assemblies to BizTalk database...

btstask AddResource /Type
:System.BizTalk:BizTalkAssembly /A:%AppName% /Source:..\..\%SolutionNamespace%.Schemas\bin\%BtsBuildMode%\%SolutionNamespace%.Schemas.dll /Overwrite /Op:GacOnInstall


ECHO Adding non-BizTalk assemblies...

btstask AddResource /Type
:System.BizTalk:Assembly /A:%AppName% /Source:..\..\%SolutionNamespace%.Common\bin\%BuildMode%\%SolutionNamespace%.Common.dll /Overwrite /Op:GacOnInstall

ECHO Importing default bindings...

btstask ImportBindings /Source:%BindingFile% /ApplicationName:%AppName%

ECHO Adding target environment specific bindings...

btstask AddResource /Type
:System.BizTalk:BizTalkBinding /A:%AppName% /Source:%BindingFileDev% /Property:TargetEnvironment=Development /Overwrite

ECHO Adding file resources...

btstask AddResource /A:%AppName% /Type
:System.BizTalk:File /Source:"..\..\%AppName%.config" /Destination:%%BTAD_InstallDir%%\%AppName%.config /Overwrite

ECHO Adding post-processing script file...

btstask AddResource /A:%AppName% /Type
:System.BizTalk:PostProcessingScript /Source:PostInstallScript.vbs
/Property:Args="HKLM\Software\CompanyName\%AppName%\ File_IO File_IO\In" /Overwrite


 

This script creates BizTalk application and then adds all kinds of resources to it. Notice use of BTAD_InstallDir variable when adding file resource (in my case it's app config file). Its value will be set by MSI install package when invoked and file will be copied into the application istallation directory provided at the install time. Also, look at how postprocessing script is added with option /Property. This option allows to pass arguments to the post/pre processing script when it runs and is not available from the BizTalk administration UI. In my case postprocessing script creates some registry entry, directory structure and will not be copied to the installation directory since /Destination option is omited.

 
 

The batch file that enables ports, enlists and starts orchestrations is needed only if you want to start the application on the build box. It calls generic WMI scripts that can be found in the BizTalk SDK.

 
 

The last important thing to call is ExportApp command of BTSTask (called from the master script) which creates MSI package and resource description file.


 


 

In Paul's Petrov Whiteboard http://geekswithblogs.net/paulp/archive/2006/03/07/71644.aspx

segunda-feira, fevereiro 06, 2006

Siemens To Woo Crappy Parallel Parkers - Gizmodo

Ora aqui está mais uma vez as empresas grandes a pegarem no que os "pequemos" com a mania do "DIY" (Do It Yourself), estão a planear à muito. Um conjunto de sensores num carro que permitem verificar e auxiliar no estacionamento.
Passo a explicar, o cruzamento de 4 sensores na traseiro do carro verificam a existência de espaço livre para estacionar o carro e avisa qd a aproximação de obstaculos é iminente(pinos ou os para choques dos outros carros).
Free Image Hosting at www.ImageShack.us
Bom e com mais esta inovação automobilistica me fico por agora.

Prometo em breve ter muitas mais novidades sobre este ramo ... e estejam atentos pq agora vou-me passar para o lado dos GPS e tudo o que for Geolocalização e GeoReferênciação.


Siemens To Woo Crappy Parallel Parkers - Gizmodo

terça-feira, novembro 22, 2005

hauppauge WinTV HVR-900



Ora ai está um aparelhómetro que dá sempre jeito, eu pelo menos sou fanático deste tipo de hardware, um stick que se liga ao USB e ao qual se liga uma convencional "banana" de TV, seja ela proveniente de uma antena interior ou de um qualquer provider de TV por cabo (analógica ou até mesmo DIGITAL), ele permite visualizar na perfeição os canais, assim como gravar ... tanto para DVD como para o disco (um verdadeiro VHS com maior capacidade e qualidade)
hauppauge WinTV HVR-900 Via biosmagazine.co.uk

terça-feira, novembro 08, 2005

1º Skype’s WiFi phone — Accton’s WiFi SkyFone WM1185-T

Ora ai está um boa novidade ...
um telefone skype que não precisa de um PC...
baicamente liga-se a uma rede Wirelless e telefona-se via skype ...
mais tarde os twailandeses da Accton irão lançar uma versão GSM/WiFi que permitirá ter um telefone "hibrido" com o qual se pode optar em ligar via GSM (a actual rede de comunicação com maior expressão) ou via Skype (Borla ....) o que faz com que possamos telefonar de borla em casa com o mesmo equipamento com que andamos o dia todo do bolso .... ai sim ... bye bye PT fixa ....

quinta-feira, outubro 27, 2005

GM - e o futuro que vos tenho falado....

No inicio da semana a GM apresentou o seu novo protótipo o vehicle-to-vehicle (V2V), uma forma do carro comunicar com outros carros.
com esta tecnologia o carro poderá evitar colisões por falta de visibilidade (angulos mortos) ou até mesmo avisar caso a velocidade e tragectória dos carros prevejam acidente ....

fonte Autoblog

PC no carro ou carro com PC ?!!? Introdução

Estou à procura do melhor material para montar no meu CarPC, o qual estou a pensar chamar de PêCêRolla, em homenagem ao magnifico carro que conduzo.

Para começar .. deixem-me vos explicar o porquê de eu querer um pc no carro para vocês não fiquem a pensar que eu sou doido ... o verdadeiro Geek ..seja lá isso o que for ...

Tive a ideia de montar um PC no carro quando comecei a pensar comprá-lo, pois pediam-me mais 1500€ por um GPS de origem ....o que era sem dúvida uma roubalheira.

Bom o Pc no carro tem as suas admais vantagens ... como o ter acesso a Video e Audio em formatos comuns na internet (MP3,DivX,MPG4,etc) ... podendo depois ter alguns programas adicionais como simulação de alta voz (com o auxilio de um adaptador de bluetooth e um microfone) ou até mesmo acessórios que me sairiam muito caros se viessem de origem ou mandasse por como cameras de estacionamento e esse género de coisas ....

Isto sim é um computador de bordo ...com potencialidades infinitas .... há pessoal que vê as câmeras de transito de manhã quando entra no carro e assim pode decidir o seu rumo mais rápido no seu GPS, de forma a ser avisado onde tem de virar ...
Ideias não faltam ....

quarta-feira, outubro 26, 2005

pc no Carro Ou Carro com pc ?!!? - motherBoard part

estas são algumas das solução para o meu carpc (PCRolla)
DFI 945G-TMGF
principais features:

  • P4 775 HT prescott CPU up to 3.8+GHz
  • FSB 1066MTps/Dual-channel DDR2-677
  • Built-in 3D VGA function~Intel GMA950 Graphic core
  • 4 x SATAII ports/ 10 USB2.0 ports/ gigabit LAN


Gigabyte 8S661FXM
principais features:

  • LGA 775 for Intel® Pentium® 4 processor
  • North bridge: SiS661FX 2. South bridge: SiS964 MuTIOL® Media I/O
  • Realtek ALC655 Codec chip 4. ICS1883 LAN PHY chip
  • 800/533 MHz FSB
  • DDR400/DDR333/DDR266 2GB 3. DIMM
  • 2 Internal I/O Connectors 1. 2 x Serial ATA ports 2. 2 x USB2.0 connectors (4 ports by cable) 3. S/P DIF input/output connector (by optional cable) 4. 2 x UDMA ATA 133/100/66 Bus Master IDE ports 5. 1 x FDD port 6. CD in connector 7. 1 x COM port Expansion Slots 1. 1 x AGP 8X/4X slot 2. 3 x PCI slots (PCI 2.2 compliant) Rear Panel I/O 1. 1 x VGA port 2. 4 x USB 2.0 ports 3. 1 x RJ45 LAN port 4. 1 x LPT port 5. 3 x Audio ports (Line-in/Line-out/MIC) 6. 1 x COM port 7. 2 x PS/2 ports (Keyboard/Mouse)
  • Micro ATX 2. 23.0 x 24.4 cm
  • H/W Monitoring 1. System health status auto-detect and report by BIOS 2. Hardware detecting and reporting for Case open and CPU and System fan speed
  • BIOS 1. 2M bit flash ROM

ASUS P5LD2-VM

especificações aqui .-.

  • Chipset 945G da Intel
  • CPU Pentium 4 LGA775 daIntel
  • Suporta CPU Dual-Core e de 64-bit
  • Intel Graphics Media Accelerator 950
  • DDR2 667/533/400
  • Intel Gb LAN

terça-feira, setembro 06, 2005

As minhas Paixões - Parte 1


Vou falar-vos de duas das minhas paixões nesta área da inovação...
Toda paixão comeca por uma tentativa de conhecimento mais profundo. As minhas paixões começaram assim também.

A primeira, foi um projecto que me passou pela cabeça para a minha casa nova (a casa da noiva ... mas ...), uma sala cinematograficamente muito evoluida e com poucos fios.
Eu sei que isto parece uma contradição ... bom material e ausência de fios são duas coisas que não combinam. Cedo me apercebi disso, mas sendo eu duma área tecnológica ... sei também que tudo é uma questão de timing ... porque basta tu teres uma ideia, começas a investigar e descobres que muita gente tem as mesmas necessidades que tu ... e logo logo vês uma empresa a mostrar-se interessada no teu interesse (passo a redundância)... e assim nasce um novo produto prontinho para tu usares ... assim foi aquando do watercooling (refrigeração a água para os PC's) .. assim está a ser com o HTPC (Home Theather PC).

Bom passando às necessidades para uma sala cinéfola, tinha a agravante de ter de ser uma coisa esticamente aceitavel para os olhos da muito critica noiva, alem de ter ser uma qualidade boa mesmo quando a sala estava iluminada (sala um pouco solarenta):
uma caixa para o pc (o mais pequena possivel)
uma board para processadores intel ou AMD, nada de SiS e coisas assim, com wirelless,
Placa tv
100Gb de disco
512Mb de memória
placa gráfica com boa qualidade de saida de s-video
placa de som Audigity ...
Gravador DVD+/-RW Double layer 8x.
projector de video (este terá a sua própria secção no Blog)
muita calha técnica .. .algumas ferramentas e muita pacência ... mas afinal faltou-me o ultimo ingrediente.....

Este projecto ainda não passou do "papel", mas fez com que o meu bichinho pelas novidades tecnológicas fosse alimentado.

Deixo-vos aqui uma caixa que apesar de ainda ser muito desktop para o meu gosto.... já é uma boa soluçao para quem não se importa de não ter performance nas sua máquina de sala ... isto das microatx ... os processadores não são muito potentes ainda ...

Artigo:aqui
Site: Gizmodo

Criação do Blog

Bom para começar na vida de blogger vou-me lançar com este pequeno contributo na lingua oficial de Camões.

Após muitas pesquisas, muitas horas a ver os RSS's todos ... muita Sites com as novidades, decidi-me em escrever o meu proprio blog ... desta feita somente a mostrar o que os outros podem já hoje ter e o que nós temos por cá ... dentro de meses ....
será portanto, um site de futurismos e utilitários uteis e interessantes ... mas acima de tudo modernos e inovadores QB.

Espero que gostem do que tenho para vos escrever ... e não se esqueçam ... um blog está na blogosfera para ser lido e comentado ;)

Dêm tambem noticias vossas ... isto é para ser um espaço, que acima de tudo, preserva a lingua de Camões.

Um abraço
a gerência agradece
ToMoS