segunda-feira, 30 de novembro de 2009

Applying Agile and Lean Principles to the Governance of Software and Systems Development

Reading a couple DeveloperWorks articles at IBM portal, I've found this very interesting Scott Ambler work that talks about agile and lean methods applied to IT governance. For those that work day by day on a IT environment trying to maintain projects aligned to the business and delivering value at every project milestone, it's a good reference.

The article is freely available to download at the following link:

ftp://ftp.software.ibm.com/software/rational/web/whitepapers/Lean_Development_Governance.pdf

Enjoy It!

quinta-feira, 19 de novembro de 2009

Plugin de Governança SOA para o RMC

Já está disponível (a um certo tempo) um plugin de governança SOA para o Rational Method Composer (aka RMC). O plugin oferece um conteúdo bem interessante para a composição de métodos de entrega baseados nas melhores práticas da Rational sobre governança em SOA.

Você precisa ter instalado o RMC 7.1 ou superior para instalar este plugin. Dentre as features encontradas, existe uma bilbioteca densa sobre cenários de governo e empresas de telco (minha área) que envolvem a aplicação de CoE's e corpos de governança. Através do modelo de framework, é simples usando o RMC a criação do seu próprio método de governança baseado nas melhores práticas. Fiz uma PoC com este plugin e criei, para um cenário fictício, um método em apenas uma semana. Vale a pena conferir!

Problemas com o NotifyFTP do JBoss ESB

Estou fazendo uma prova de conceito para um cliente estes últimos dias, e me deparei com uma situação que merece um blog, por se tratar de um problema daqueles que não adianta ler documentação, acessar google, nem tentativa de erro.

Usando o componente Notifier do JBoss ESB para enviar uma mensagem do barramento para um diretório FTP remoto, vi que mesmo fazendo tudo certo, o arquivo não é enviado de forma alguma. Este tipo de situação te faz revisar coisas bem atípicas como regras de firewall, configuração do servidor FTP, parâmetros do Apache entre outros. A listagem abaixo mostra como, de acordo com a documentação, deve ser utilizado o Notifier para envio de mensagens a um FTP:

A chave para resolver o problema é utilizar o atributo "passive" na declaração do notificador. A configuração então ficaria assim:

Ai você me pergunta? - "Mas Ricardo, como você achou este parâmetro?" E a resposta é simples: Conversei com os desenvolvedores do ESB e eles me explicaram detalhadamente sobre este parâmetro. Este é um benefício de trabalhar numa empresa como a Red Hat, benefício este que, pessoas que contratam uma subscrição também têm. O acesso as informações se torna muito mais eficiente, e a resolução de problemas é feita de uma forma confortável para seu orçamento e prazos.

E ainda têm gente que acha isso caro ... dizendo que têm que ser de graça. Pois então, sendo de graça, você pode ainda mandar um e-mail para os core-developers dos produtos e rezar para que eles leiam, e se lerem, que eles respondam. Ou espere por blogs que nem este, que também dependem da boa vontade e paciência das pessoas. Como exemplo do que estou falando, não explicarei no post qual é a razão do parâmetro "passive", mande um e-mail que eu explico ... se eu puder ;-)

Boas Integrações!

quinta-feira, 12 de novembro de 2009

Criando Variáveis de Contexto no JNDI do JBoss

Este post é pra deixar registrado uma dica que acredito ser interessante pra quem desenvolve aplicações em JBoss. Um amigo me perguntou sobre isso e tendo esse tipo de coisa registrada em blog me pouca alguns minutos de pesquisa nas docs do JBoss. Vamos lá ...

Imagine que você têm uma aplicação rodando em JBoss, mas gostaria de ter parâmetros gerais definidos num arquivo externo ao módulo da aplicação. Estes parâmetros informam coisas como por exemplo, a língua e idioma que a aplicação deverá carregar nos arquivos de bundle. Uma forma simples de se fazer isso, é usando arquivos de properties. Criando um arquivo de properties num diretório qualquer, você pode carregá-lo junto com o JBoss usando a seguinte linha de comando ao iniciar o servidor:

O problema disso é que os parâmetros não podem ser atualizados. Se você alterar o arquivo, somente na próxima inicialização do JBoss que ele verá as alterações. Outra forma de se fazer isso, é usando variáveis de contexto do arquivo web.xml (No caso de aplicações baseadas em Servlets). Através das seções "context-param" você pode criar variáveis acessíveis via JNDI. Mas para isso, você deverá ter uma ferramenta que possa instrumentar o arquivo e refazer o deployment do módulo em tempo de execução, cenário este que, em alguns casos de aplicações críticas, não é adequado, pois você não pode tirar a aplicação do ar nem que seja 1 segundo!

A solução: Usando binding de variáveis no JNDI do JBoss usando MBeans

Se você quer criar váriaveis no contexto do JNDI, usando JBoss, você pode usar o MBean "JNDIBindingServiceMgr". Este é um MBean que é capaz de criar objetos de qualquer tipo no contexto do JNDI e assinalá-lo a uma variável de binding. Vamos a um exemplo. Crie um arquivo XML. Chame-o de "custom-params-service.xml" e nele coloque o conteúdo abaixo:

Repare no arquivo que ele define uma seção chamada "jndi:bindings". Você pode criar uma ou mais entradas do tipo "jndi:binding" neste seção, sendo possível então a definição de vários parâmetros num único arquivo XML. Repare também que criamos um parâmetro chamado "springFileLocation". A idéia é fazer com que qualquer componente do JBoss em tempo de execução possa, via JNDI, recuperar o valor desta variável e carregar o contexto do Spring.

Copie este arquivo para a pasta deploy do JBoss. A partir deste ponto, você pode acessar as variáveis no contexto do JNDI da seguinte forma:

Como a variável está no contexto do JNDI, se você estiver usando EJBs ou outro componente gerenciado do JEE 5, você pode injetar este parâmetro da seguinte forma:

A parte mais interessante desta abordagem é que, como se trata de um objeto gerenciado pelo JBoss, ou seja, um MBean, você pode a qualquer momento alterar o arquivo XML que as variáveis serão atualizadas no contexto do JNDI, desde que você deixe o HotDeploy do JBoss ativo ;-)

Bons Códigos!

quinta-feira, 5 de novembro de 2009

JBoss no The Developers Conference 2009

Confirmando presença no evento The Developers Conference 2009 da GlobalCode, a JBoss estará além de patrocinando o evento, disponibilizando palestras bem interessantes sobre nossas tecnologias. Em especial, estamos trazendo o Alejandro Guizar, Core Developer sênior dos projetos JBoss Web Services, jBPM e Riftsaw. O Alejandro além de ser uma excelente pessoa, é commiter da especificação de BPEL 2.0 no OASIS, e estará no evento falando justamente sobre a tecnologia BPEL, tendências e nossa implementação dentro e fora do ESB.

Além do Alejandro, teremos mini-talks (apresentações curtas de 20 minutos) ministrados pelos experts da JBoss Brasil como o Bruno Rosseto e o Alessandro Lazarotti. Falaremos sobre JOPR, Web Beans, Weid, JBoss AS 5, Guvnor, Drools Fusion e muito mais! Estarei apresentando também uma aplicação integrando Drools + ESB + jBPM + Guvnor + HornetQ pra demonstrar como as tecnologias JBoss podem ser aplicadas a cenários críticos, usando as melhores práticas de desenvolvimento de software.

O evento promete, e espero encontrá-los por lá, Até!

quinta-feira, 22 de outubro de 2009

Ten of the Best Practices to BPM

Let's talk about BPM again, taking a look at some useful things that could make your BPM initiative works or at least, get better. Apply BPM at a organizational level can offer you the opportunity to undertake some challenges. Those challenges can be very hard to deal if you do not pay attention at certain things that happens when you're engaged at processes definition, people management and process monitoring. Hopefully, those things happens at every company regardless it's scenario.

I'm going to share with you some tips that I've learned from the hard way, but today, had became useful knowledge. I'll put this knowledge in the form of simple tips. If you assist more
attention at BPM adoption or implementation, I suggest you that take a look at Six Sigma or Theory of Constraints methods. Otherwise, give a call to Red Hat and ask us for a subscription + consulting services about BPM ;-)

1 - Think Process; be Process

Set a cross-functional organization in place to drive and sustain your process orientation. Process teams and process owners should plan together, meet regularly, and work collaboratively. Be certain that the main stakeholder is directly involved.

2 - Get Smart!

BPM is a new discipline and the skills can be hard to come by. But the people around you have most of what you need. They may not have the job titles, but they’ll have the right understanding of your business, the people, the processes, and the right raw skills to be successful. Train them! Appeal to service providers for help, especially in the short term as you gear up. And, believe it or not, you’re not going to learn quite everything from this post! Get out and see what people are doing. Attend a conference, visit Web sites, read blogs. Seek out companies that have done this before — and created real business value.

3 - Adopt an Executive

Find the senior-most individuals whose responsibility is to solve the big problems and enlist them as sponsors, advocates, and evangelists. Get them excited and educated about what BPM can do for them. Show them a demonstration of what’s possible and they’ll jump on board.

4 - Great Expectations

BPM programs involve many stakeholders, and each will naturally form his own perspectives and definitions of success. Be clear about the value proposition of your programs and projects. Repeat these often, and deliver on them directly, avoiding “expectation creep.”

5 - Pick a Methodology

Do you already have a process improvement program like Lean or Six Sigma in your company? If so, these are an effective foundation for BPM. If not, pick something. Select the process improvement and management methodology that’s right for you, and set this in place as a cornerstone of your process architecture.

6 - The Right Technology

Do your homework and choose technology that best fills your needs and requirements. The technology varies considerably from vendor to vendor. After finding a technology set that fits your architecture, be sure to run it through its paces: ask for custom demonstrations and make sure the vendor shows you what it can do.

7 - Hear the Voice of the Customer

The point of BPM is to create customer value. Use BPM to see your business the way your customers do. Your customers don’t care how things get done, they only care that they experience exceptional service and receive what they ordered — at the best price, and when they wanted it. Remember that everything you’re doing should ultimately create more value for your customers.

8 - Pick a Project

So many processes, so little time! How do you choose? Select the project that provides the greatest return to your business and can be completed in three months or less. And remember, you don’t have to improve entire processes all at once.

9 - Measure First

Don’t start designing new processes until you understand what’s happening with your current ones. You wouldn’t let a doctor administer treatment without a thorough diagnosis would you? So don’t start implementing process change until you have diagnosed their current state. Using BAM, establish the baseline metrics. Only then are you operating from a position of knowledge.

10 - Plan to Change

BPM is a change system. It’s designed to help you identify where change is needed and for you to make changes quickly and get to the next level of operational performance. With such a powerful toolset, you need to surround BPM with support for change. Manage change, implement policies for making changes, articulate change approvals, recognize change events, measure change, reward change.

Hope that those tips could be useful for you ;-)

quinta-feira, 15 de outubro de 2009

Red Hat Brasil na Futurecom 2009

Está acontecendo esta semana em São Paulo o maior evento de telecomunicações da américa latina, a Futurecom. A Red Hat do Brasil está participando do evento como patrocinador e com um estande para demonstrações das nossas soluções e serviços, bem como com uma palestra que eu proferi sobre tecnologia aplicada, onde mostramos como usar as tecnologias da Red Hat e JBoss em cenários de Telco 2.0 e ambientes de SDP (Service Delivery Platform) voltadas para VAS. Deixo aqui disponível o link da apresentação, para aqueles que não puderam estar no evento.
Durante a palestra, mostrei uma solução completa de SMS a Cobrar totalmente implementada usando tecnologias da JBoss, entre elas: JBoss SOA Platform, Enterprise BRMS e o JBoss ON. Segue alguns screenshots da solução:



JBoss SOA Platform (ESB + BPM)



JBoss ON (Operations Network)




Para efetuar o envio do SMS propriamente dito, usei meu próprio celular como gateway SMS, para simular a platforma SMSC. Para isso, usei o projeto Gnokii como software de envio SMS e o meu cabo USB do meu celular. No SOA Platform, apenas escrevi uma action customizada do pipeline para invocar a API do Gnokii. Quem quiser aprender mais sobre o Gnokii, meu amigo Edgar Silva escreveu um bom post sobre ele. Thanks Edgar!

Espero que gostem ;-)

terça-feira, 6 de outubro de 2009

The Three Dimensions of BPM

1 - Business: The value dimension

The business dimension is the dimension of value, and of the creation of value for both customers and stakeholders. BPM directly facilitates the goals and objectives of the business enterprise: sustained top-line growth and improved bottomline performance; increased innovation; improved productivity; enhanced customer loyalty and satisfaction; and elevated levels of staff effectiveness.

BPM brings more capability than ever before to align operational activities with goals and strategies. It focuses enterprise resources and effort on the creation of customer value. BPM also enables a much faster response to change, fostering the agility needed for continuous adaptation.

2 - Process: The transformation dimension

The process dimension creates value through structured activities called processes. Operational processes transform resources and materials into products or services for customers and end consumers. This “transformation” is how a business works; it’s the magic elixir of the enterprise. The more effective this transformation, the more successfully you create value.

The applied science of processes and transformation spans the history of modern industrial management From the quality gurus like Deming, Juran, Shingo, Crosby, and Peters and recently the practices of Lean and Six Sigma. BPM fully incorporates these methodologies, and accelerates them with dramatically enhanced systems of definition, measurement, analysis, and control. Through BPM, business processes are more effective, more transparent, and more agile. Problems are solved before they become issues. Processes produce fewer errors, and those errors surface faster and are fixed sooner.

[Process Effectiveness]

Effective processes are more consistent, generate less waste, and create greater net value for customers and stakeholders. BPM directly promotes increased process effectiveness through the adaptive automation and coordination of people, information, and systems.

Unlike methods and tools of the past, BPM doesn’t impose effectiveness through rigid and unyielding systems of control focused on functional domains. Instead, BPM enables the continuous response and adaptation to real-world and real-time events and conditions.

[Process Transparency]

Transparency is the property of openness and visualization — and it’s critical to effective operations. Transparency has long eluded businesses, whose processes are often codified into arcane systems, unintelligible to mere mortals. BPM opens these black boxes and reveals the inner workings of business processes. With BPM, you can directly see all the elements of a process design, including the model, workflows, rules, systems, and participants, as well as its real-time performance, including events and trends. BPM enables business people to directly manipulate the structure and flow of processes and track the outcomes as well as the causes.

[Process Agility]

Of all demands on business operations, perhaps the most pressing is the need for change — the ability to adapt to changing events and circumstances while still maintaining overall productivity and performance. BPM delivers process agility, minimizing the time and effort needed to translate business needs and ideas into action. BPM enables business people to define processes quickly and accurately through process models. It enables them to perform what-if analysis on business scenarios. It empowers them to configure, customize, and change transaction flows by modifying business rules. It directly translates process designs into execution — integrating systems and building applications codelessly and seamlessly. Moreover, the BPM platform comes equipped with technology components that make codeless development and integration fast and easy.

3 - Management: The enabling dimension

Management is the enabling dimension. Management sets people and systems into motion and prods processes into action, in pursuit of the business goals and objectives. For management, processes are the tools with which they forge business success. Before BPM, constructing and applying these tools spawned an unwieldy mix of enterprise-class automation, many isolated desktop tools, manual methods and techniques, and brute force. With BPM, you can bring together all the systems, methods, tools, and techniques of process development and process management into an architected system, complete with the visibility and controls necessary for steering and tuning. How could you not want that?

See U ;-)

segunda-feira, 21 de setembro de 2009

JBoss SOA: Suporte Enterprise a BPEL

Já está disponivel para download, o mais novo projeto da JBoss como foco especial em BPEL. Trata-se do projeto RiftSaw. Ele se baseia num motor de runtime para executar processos BPEL compatíveis com a versão 2.0. Para controle e desenho de orquestrações, já está disponivel também um BPEL Designer, encontrado junto com o projeto JBoss Tools.

Seguem alguns screenshots de um exemplo que fiz para o evento Ju
st Java, sobre um cenário de uma consulta de saldo para celulares de pré-pago. O projeto, foi integralmente feito usando tecnologias JBoss (JBoss AS 5.1 + BPEL Server + BPEL Designer + JBoss Web Services).









Em breve, todas estas tecnologias estarão presentes no JBoss SOA Platform e suporte enterprise a estas tecnologias estará disponivel. Assim que tiver um tempo livre, posto aqui o passo a passo de como criei este projeto. Mas quem conhece BPEL e um pouco de tecnologias JBoss, não terá dificuldades de criar um cenário nestas tecnologias.

JBoss Rocks ;-)

Orquestração de Serviços SOA com Soluções Abertas

Olá pessoal. Deixo disponível aqui o link da palestra que proferi semana passada no evento Just Java 2009, em conjunto com o Edgar Silva. Na ocasião, falamos bastante sobre orquestração de serviços focando na prática, citando alguns cases de cenários de orquestração usando BPEL e tecnologias de processos persistentes.
Boa Leitura!