2012/12/21

Last week in this Cordys project

This is my last week in a Cordys project I did.. It was a high pressure Cordys Case Management project with an Agile approach. The things I learned (again) and in random order:

  1. You need Cordys consultants
  2. Introspection after each iteration
  3. Invest in automatic testing
  4. Invest in setting up your Services
  5. Invest in the Domain Model
  6. Requirement management (user stories)
  7. Consult a scrum master
  8. Assign responsibilities

Cordys consultants

The Cordys (BOP4.1) still contains bugs and this is not remarkable given the young produkt. However this means that you need to know if it is a programming error or a Cordys bug. For this you really need a Cordys  consultant who really knows the core produkt. 

Introspection 

Within each (Agile) project you will have difficulties with the development process. This is not a problem as long as you are open for introspection. This will help the project in what goes wrong and what goes well. If you do not do this then the process will not approve.

Automatic testing

Because we had to implement a lot of requirements in a few iterations, it was advised to invest in automatic testing that could be used for regression testing. However this was acknowledged by the customer too late. This way it was very risky to refactor code. In the beginning it takes some effort but in the end it is very much worth the effort.

Services

Within Cordys you can use WS-AppServer to implement abstraction to your databases and also to implement the Domain Objects. On these Objects you can generate (web)services. The ws-appserver generates a lot of generic services on top of your database and it is easy to use them. However it is not recommended. Please take some time to think about the service architecture so that you put the right business logic at the right place and that you can reuse the services. Think about the granularity of the services because they have direct impact on the performance of your application.

Domain Model

Before you can Model your BPMs, Case Management Models and UIs, it is good to model the Domain Model. This is not the technical database model, but the Common Data Model that is used within the BPMs. In fact these are the business objects that the business knows.
It also important to model your database good, of course because this can have direct performance consequences.

Requirement Management

What the customer wants is not always (actually almost always) clear. In the beginning the high level requirements are clear and they are planned within the iterations. Then these requirements must be detailed out (and User Stories can be used to describe it). Also it is good practice to group these requirements so that they can be used for testing. This is a big job but must be done especially for large projects. Otherwise it will not be clear what is tested and what is actually finished.

Scrum Master

Sometime a customer has no experience with Agile way of working. In this case it is advised to consult a Scrum Master that can explain and guide the process.

Responsibilities

When responsibilities with its duties and rights are not clear, it is difficult to work. It must be clear who is responsble for architecture, quality, etc. Otherwise no one takes responsibilities and the project is doomed for failure.

I could also have mentioned risk management, but all these practices seem so evident, but are not in practice.

2012/11/15

CDATA within the BPM ??

Today i saw a CDATA text within the BPM i used with the file poller.

With the file poller you can trigger a webservice. In this case i triggered a executeProcess. Below a small part of the configuration of this polling mechanism.

2012/11/01

Cordys UI title caption

Today I wanted to change the title of a UI, but could not find where the current title was set. I looked into the properties and settings of the XForms, but no succes.
In the runtime the title I saw was: "Aanvraag Documenten" but the fields i saw were not:

  • Name
  • Description
  • Caption
I also looked at the corresponding JScript of the XForms and searched for setCaption. But also no success.



Finally thanks to a tip of a colleague i found it. It was at the calling XForm that used the following construction:



I would recommend to use the Caption field of the XForm itself, so that the title is always the same and in one place, unless of course you want the caption to be dynamic.

2012/10/29

Creating KPI with Cordys BAM

Introduction

In a previous Blog I showed how to create a Dashboard from a Business Measure. In this Blog I will show how to create a KPI (Key Performance Indicator). As can be seen from the picture, a KPI is based on a Business Measure. A Business Measure measures parts of a process or data and a KPI monitors whether the measured part reaches a particular value. So:
KPI helps to monitor and capture critical information pertaining to Business Process or Activity.


Step 1 - Create Business Measure for KPI

First you have to create a Business Measure on which the KPI will be based. In this example we take a Webservice as the source for the business measure.
  • Create Business Measure
  • Fill in the following details, and choose the correct Webservice
  • Click Next and Select New to create a new webservice
  • Click Finish
The Business Measure and its corresponding webservice is generated.


The UnitsinstocksMeasure can be used in a Dashboard.

Step 2 - Create KPI

  • Create a KPI
  • Fill in the details of the KPI:
    Name - The name of the KPI
    Description - The description of the KPI
    Goal - Describe the goal of the KPI, in this case the units in stock may not be too low
    Unit of measure - This is the unit in which the value is measured
    Target Value - The value for the enterprise against which is measured
    Ranges - Here you can define several ranges for the KPI
    Select source type - The source of the KPI. In this case it is a webservice, which can not be selected yet in BOP4.0 and must be left empty.

  • Click Next
  • Now you select the Business Measure on which the KPI is based (Select '+') and fill in the parameters



  • Click Next

Now you have to select the value (XPath expression) on which you want to build your KPI. Do not forget to  check "Define Schedule". The schedule is used to call the measure within the defined timeframe within the schedule.


  • Click Next
  • In this screen you can enter the schedule times. DO not forget to check "Define Actions". These actions are triggered when the KPI is reached.


  • Click Next
  • In this screen you can define the Actions, For each action you have the following possibilities:
    - Notification
    - Invoke BPM
    - Call Webservice

Note that the Condition is the Range you have defined in the KPI definition previously.

This concludes the definition of this KPI. The Schedule can be activated by going to the Schedule Manager and execute the schedule for this KPI.



2012/10/26

Your first Cordys Dashboard

Monitoring

Within an enterprise and on your processes you want monitoring. Monitoring is used to for example:
  • View the number of ongoing processes and its status
  • If certain KPI's are met
  • Triggering other processes when a certain event takes place
Cordys supports this in the form of BAM and uses certain constructs for this. In this Blog i will describe a small example on how to set up BAM and how to create Dashboards. It gives an idea on how this can be done in Cordys. I use the following picture in which the created Cordys artifacts are displayed.


Step 1 - Create a webservice

This step is not described here, but a webservice can be generated from a BPM, database or an external service can be used for example. Next i will use this webservice to create a Business Measure artifact.

Step 2 - Create a Business Measure

A Business Measure helps in measuring a particular aspect of a business process or any external data. The Business Measure provides a view on the selected attributes, contained in a Process Monitoring Object, a webservice or the external data source. In this case we use a webservice as the basis.

  • Create a new Business Measure
  • Fill in name and description
  • Select Graph because we will use it to show on a dashboard.
  • Create Measure From: Web Service
  • Select Object Source: GetProductsObjects
  • In this case we will show the products and ho much is in stock

  • Click Next
  • Select New and click Finish
A webservice is generated and a component is generated that can be used within a dashboard. 

Step 3 - Create a dashboard

Now we are creating an interface for the monitoring of the produkts in stock.
  • Create an XForm artifact
  • Drag-and-drop the Producktsinstock component (as shown in the previous step) on the UI
  • Click on Properties of this component

In the properties you can choose how the data should be displayed.
View - The type of dashboard used. In this case i choose for Bar Chart. There are a couple more possibilities
Business Object - Here you select the data that is to be used from the webservice. In this case the Old tuples  contain the products. 
X-Axis fields - Here you select the attribute that is used for the X-axis. In this case the ProductName.
Y-Axis - Here we choose the UnitsInStock attribute.

Because the webservice requires two input parameters, these are given in the Input Parameters properties.

  • Select Preview and you will see you first Dashboard with Cordys BAM

Next time i will show how to create a KPI (Key Performance Indicator) that triggers another process.




2012/10/23

Cordys Fundamentals Certification

Previous week I got my Cordys Fundamentals Certification and I will explain how to prepare for this exam.
Of course it depends on the number of years/months experience you already have with the produkt. In my case i have done several projects already and i have almost three years experience.

The certification has three parts:

  1. Multiple choice questions
  2. Handson
  3. Interview
The most difficult part is the Multiple choice questions. This requires some study and this can be found on the Wiki. This gives a good overview of the questions you can expect.

In the handson part you get a couple of questions which you must make. You have 5 days for the questions and these are relatively easy. I suggest you do the Fundamentals training online which is available on the Wiki. In case you already have project experience then even this is not needed.


Within the interview you need to explain your solution of the handson and this is also easy if you made the questions yourself of course. The only problem i had was that the Indian persons were hard to understand. The interview is done with WebEx so I used the chat to repeat the questions.

More information can be found on the Cordys Wiki: https://wiki.cordys.com/display/cordyscert/Home

2012/10/11

Cordys IE9 problems?

When i use IE9 to run Cordys 4.1 i run into a white screen. This can be avoided by running the explorer in IE8 mode. This can be done in the following way.


  1. Start IE9
  2. Press F12
  3. Go to Menu Document Mode and select the IE8 mode
  4. Close the window again and reload the Cordys page



Cordial 2012



This year's Cordial was held on the 9th and 10th October in Putten. The yearly event is getting more popular because it was packed. Some of the highlights for me:


  • A couple of very entertaining presentations with content. Must see:
    Freek Vermeulen on why organisations find it so difficult to change.
    Magnus Lindkvist  on the present and future trends
  • Meeting a lot of interesting people in the BPM field
  • Partner dinner with excellent food
  • Nice to hear that integration and BPM skills are still very much needed in the future :-)
  • See the CEO of Cordys in person
  • Presentation of CIZ of a project with Cordys Case Management. With Ciber i also participated within that project. So it was nice to hear of the succes
  • The partnership of Cordys and Aquima. A business rule engine that can be used seeming less with Cordys

And of course more can be found on http://www.cordys.com/resources


Looking forward to it again next year!

2012/09/20

Packt publishes its 1000th and wants to celebrate with you


Packt Publishing reaches 1000 IT titles and celebrates with an open invitation

Birmingham-based IT publisher Packt Publishing is about to publish its 1000th title. Packt books are renowned among developers for being uniquely practical and focused.  Packt books cover highly specific tools and technologies which IT professionals might not expect to see a high quality book on.
Packt would like you to join them in celebrating this milestone with a surprise gift – to get involved you just need to have already registered, or sign up for a free Packt account before 30th September 2012.
Packt published their first book in April 2004. One of the most prolific and fastest growing tech book publishers in the world, they now have books on everything from web development to web graphics, e-learning to e-commerce, IT architecture to games, and app development.
Packt supports many of the Open Source projects covered by its books through a project royalty donation, which has contributed over £300,000 to Open Source projects up to now. As part of the celebration Packt is allocating $30,000 to share between projects and authors in a genuinely unique way, soon to be disclosed on their website.
Dave Maclean, founder of Packt Publishing explains, “At Packt we set out 8 years ago to bring practical, up to date and easy to use technical books to the specialist tools and technologies that had been largely overlooked by IT publishers. Today, I am really proud that with our authors and partners we have been able to make useful books available on over 1000 topics and make our contribution to the development community.”
For more information about Packt, the kind of books they publish, and to sign-up for a free account before the 30th of September, 2012, please visit their website: www.PacktPub.com.

Enjoy !!

2012/09/17

Book: Oracle SOA Suite 11g Administrators's handbook

My next project is probably a Oracle SOA Suite 11g project, so start reading the following book. A review of the book will follow (http://www.packtpub.com/oracle-soa-suite-11g-administrators-handbook/book)

I hope to read useful information about

  • How to set up Oracle SOA Suite projects
  • How to unit test
  • How to deploy to DTAP
  • How to monitor
  • How to error log
  • How to govern



2012/09/05

Business Process Management



Business process management
 (BPM)
 is a management approach focused on aligning all aspects of an organization with the wants and needs of clients. It is a holistic management approach that promotes business effectiveness and efficiency while striving for innovation, flexibility, and integration with technologyBusiness process management attempts to improve processes continuously. It could therefore be described as a “process optimization process.” It is argued that BPM enables organizations to be more efficient, more effective and more capable of change than a functionally focused, traditional hierarchical management approach.

Overview

business process is a “series or network of value-added activities, performed by their relevant roles or collaborators, to purposefully achieve the common business goal.” These processes are critical to any organization as they generate revenue and often represent a significant proportion of costs. As amanagerial approach, (BPM) considers processes to be strategic assets of an organization that must be understood, managed, and improved to deliver value added products and services to clients. This foundation is very similar to other Total Quality Management or Continuous Improvement Process methodologies or approaches. BPM goes a step further by stating that this approach can be supported, or enabled, through technology to ensure the viability of the managerial approach in times of stress and change. In fact, BPM is an approach to integrate a “change capability” to an organization – both human and technological. As such, many BPM articles and pundits often discuss BPM from one of two viewpoints: people and/or technology.
Roughly speaking, the idea of (business) process is as traditional as concepts of tasks, department, production, outputs. The current management and improvement approach, with formal definitions and technical modeling, has been around since the early 1990s (see business process modeling). Note that in the IT community, the term ‘business process’ is often used as synonymous of management of middleware processes; or integrating application software tasks. This viewpoint may be overly restrictive. This should be kept in mind when reading software engineering papers that refer to ‘business processes’ or ‘business process modeling.’
Although the initial focus of BPM was on the automation of mechanistic business processes, it has since been extended to integrate human-driven processes in which human interaction takes place in series or parallel with the mechanistic processes. For example (in workflow systems), when individual steps in the business process require human intuition or judgment to be performed, these steps are assigned to appropriate members within the organization.
More advanced forms such as human interaction management are in the complex interaction between human workers in performing a workgroup task. In this case, many people and systems interact in structured, ad-hoc, and sometimes completely dynamic ways to complete one to many transactions.
BPM can be used to understand organizations through expanded views that would not otherwise be available to organize and present. These views include the relationships of processes to each other which, when included in the process model, provide for advanced reporting and analysis that would not otherwise be available. BPM is regarded by some as the backbone of enterprise content management.
Because BPM allows organizations to abstract business process from technology infrastructure, it goes far beyond automating business processes (software) or solving business problems (suite). BPM enables business to respond to changing consumer, market, and regulatory demands faster than competitors – creating competitive advantage.
Most recently, technology has allowed the coupling of BPM to other methodologies, such as Six Sigma. BPM tools now allow the user to:
Define - baseline the process or the process improvement
Measure - Simulate the change to the process.
Analyze - Compare the various simulations to determine an optimal improvement
Improve - Select and implement the improvement
Control - Deploy this implementation and by use of User defined dashboards monitor the improvement in real time and feed the performance information back into the simulation model in preparation for the next improvement iteration.
This brings with it the benefit of being able to simulate changes to your business process based on real life data (not assumed knowledge) and also the coupling of BPM to industry methodologies allow the users to continually streamline and optimise the process to ensure it is tuned to its market need.

You can read more on this blog item here

2012/09/01

Still some misunderstanding about User Stories


In projects i often see that there is still a lot of confusion about User Stories and planning. This article of the famous Scott Ambler describes the way you should plan and use User Stories within Agile projects. One common mistake is that a User Story is much smaller than a Use Case.

Introduction to User Stories

A good way to think about a user story is that it is a reminder to have a conversation with your customer (in XP, project stakeholders are called customers), which is another way to say it's a reminder to do some just-in-time analysis.  In short, user stories are very slim and high-level requirements artifacts.

Initial User Stories (Informal)

As you can see in Figure 1 user stories are small, much smaller than other usage requirement artifacts such as use cases or usage scenarios.  It's important to recognize that each of the statements in Figure 1 represents a single user story. 
Figure 1. Example user stories.
  • Students can purchase monthly parking passes online.
  • Parking passes can be paid via credit cards.
  • Parking passes can be paid via PayPal ™.
  • Professors can input student marks.
  • Students can obtain their current seminar schedule.
  • Students can order official transcripts.
  • Students can only enroll in seminars for which they have prerequisites.
  • Transcripts will be available online via a standard browser.

Important considerations for writing user stories:
  1. Stakeholders write user stories.  An important concept is that your project stakeholders write the user stories, not the developers.  User stories are simple enough that people can learn to write them in a few minutes, so it makes sense that the domain experts (the stakeholders) write them.
  2. Use the simplest tool.  User stories are often written on index cards as you see in Figure 2 (at least when your project team is co-located).  Index cards are very easy to work with and are therefore an inclusive modeling technique.
  3. Remember non-functional requirements.  Stories can be used to describe a wide variety of requirements types.  For example in Figure 1 the Students can purchase parking passes online user story is a usage requirement similar to a use case whereas the Transcripts will be available online via a standard browser is closer to a technical requirement.  
  4. Indicate the estimated size.  You can see in Figure 2 that it includes an estimate for the effort to implement the user story.  One way to estimate is to assign user story points to each card, a relative indication of how long it will take a pair of programmers to implement the story.  The team then knows that if it currently takes them on average 2.5 hours per point; therefore the user story in Figure 2 will take around 10 hours to implement. 
  5. Indicate the priority.  Requirements, including defects identified as part of your independent parallel testing activities or by your operations and support efforts, are prioritized by your project stakeholders (or representatives thereof such as product owners) and added to the stack in the appropriate place. You can easily maintain a stack of prioritized requirements by moving the cards around in the stack as appropriate.  You can see that the user story card includes an indication of the priority; I often use a scale of one to ten with one being the highest priority.  Other prioritization approaches are possible – priorities of High/Medium/Low are often used instead of numbers and some people will even assign each card it’s own unique priority order number (e.g. 344, 345, …).  You want to indicate the priority somehow in case you drop the deck of cards, or if you're using more sophisticated electronic tooling.  Pick a strategy that works well for your team. You also see that the priority changed at some point in the past, this is a normal thing, motivating the team to move the card to another point in the stack.  The implication is that your prioritization strategy needs to support this sort of activity.  My advice is to keep it simple.
  6. Optionally include a unique identifier.  The card also includes a unique identifier for the user story, in this case 173.  The only reason to do this would be to do this is if you need to maintain some sort of traceability between the user story and other artifacts, in particular acceptance tests.


    You can read the full article here

Write good unit tests


It is not enough for today’s software developers to know their programming language well. There are further skills, that more and more companies are expecting from there employees. One of the most important is Test Driven Development (TDD). This is not an introduction to TDD. If you want to learn it, I recommend Uncle Bob’s awesome Clean Code Videos (Episode 6 - TDD) or simply ask Google for it. But many developers are writing bad code and applying TDD does not make them writing good code. Instead it makes them also writing bad tests. So this is about writing better test code.

Applying simple rules

To understand why test code can be bad, you should understand, what it should do. It should work as the parachute, that keeps you alive, when refactoring your code. Tests may help you to be sure nothing breaks, when adding new features to your code. But tests may also work as sample code, that documents your APIs better than any other documentaion except the code itself.
But how can you make your tests better? It might help to follow some simple rules, that could be easily applied to every language or test style like BDD or Junit-style.

Tests should be a state machine

Many people do not like BDD at all, but there is a pretty nice idea in it - the given-when-then style some frameworks promote. This style forces you into a way of thinking about tests, that you should adapt. Even if you do not use a BDD framework.
Writing a test this way means there is a start state, something happens and than an end state is reached. If your test is broken, the state machine in it is broken. In BDD frameworks the first part of your test is the given block, where all the setup stuff is done. The second part is the when block, where an action is applied on the test object, created in the given block. At least you have a thenblock, where you assert, that the correct end state is reached.
It is very helpful to have this in mind while writing a new test. Keep these three parts seperated and do not mix them in some way. Do not write code in your test, where an if appears, or even more complex logic. In a test you should only do the above three steps. Do some simple setup, call a method on your test object or invoke the test function and assert the result is correct.
This might also make your code better. If you write messy code, tests written this way are harder to create and maintain. If you have to much of inheritance, dependencies on other objects or resources like IO, you will have to set it up in every test you write and that is no fun. But you should write your tests first and hopefully it makes writing messy code harder, if you have written a well structured tests first.
More on this great article can be read here.

2012/08/27

Test driven development with BPMs

Introduction


I have read a book about Test Driven Development written by Kent Beck. This is a very famous and good book about test driven development with Java. This technique can also be adapted when developing a Service Oriented Architecture or implementing BPMs. For example with Cordys. This blog describes some guidelines.

Some Guidelines

  1. Be sure to write your BPMs with as less context as possible
    This means that the context should be given as a parameter for example. In this case you can use soapUI or SOATester to test the BPM independently of the other BPMs.
  2. Each time there is an error within the BPM, be sure to write a test case for the error that shows the error
    After that solve the error and this way the test set also becomes bigger.
  3. Just like with the technique described within the book, you can start with writing the soapUI scripts first and then implement the BPMs
    This way your test cases should represent the exact requirements for the BPMs.
These are just some guidelines which are easy in theory but of course always hard in practice. But the message is also that you should consider the test fullness of your BPMs and Services. Only this way you can refactor your architecture with confidence. It also emphasizes that testing must be considered as soon as possible within your programs.

Please feel free to react and ask questions.

For completeness i have added a link to the book:   

2012/08/20

Some common BPM mistakes

In a lot of projects i have done for customers there are a few misunderstandings i often see with BPM or Business Process Management.

 1) You are not doing BPM when using a BPM tool
It is often called already BPM because it is hot, but the business is not process oriented at all. This is because a BPM tool is introduced bottom up, but the organization is not process oriented at all. In fact the business is process oriented (by default there is of course always a process), but this is not analysed or controlled.

 2) Flexibility comes not for free
This is maybe in theory but in practice i have rarely seen this. Making a solution flexible requires a lot of future knowledge which is often very difficult of course. You can only make your BPM solutions flexible where you know you need the flexibility.

 3) BPM does not solve it all
As with all new hypes, this is the next magic tool that solves it all. Of course this is not the case and it requires a lot of good thinking and experience to implement a BPM solution. In fact it may be far more difficult because it often expands more business units within the organization.

4) BPM(N) is not a new programming tool
Within a BPM solution there exists a BPMN drawing toolbox. With this tool you should model the business process on certain levels. What i often also see is that Services are also implemented with this tool. However it may be better practice to implement the Service within Java or another platform.

5) Testing BPMs is not something you do afterwards
Testing is often a underestimated effort. I personally think that 1 developer needs 1-3 testers.

And there are probably a lot more ...


Please feel free to react and add more when you like.

2012/06/11

Win a free ecopy of "Oracle SOA Infrastructure Implementation Certification Handbook"


Book Give-away: Hold a chance to win free copy of the 'Oracle SOA Infrastructure Implementation Certification Handbook (1Z0-451)' just by commenting!

For the contest we have two copies of Oracle SOA Infrastructure Implementation Certification Handbook (1Z0-451) to be given away to two lucky winners.

How you can win:

To win your copy of this book, all you need to do is come up with a comment below highlighting the reason "why you would like to win this book”.


Duration of the contest & selection of winners:

The contest is valid for 30 days, and is open to everyone. Winners will be selected on the basis of their comment posted. Also please don't forget to mention your email adres within the comment.


About the book:
http://www.packtpub.com/oracle-soa-infrastructure-implementation-certification-handbook/book
http://www.packtpub.com/oracle-soa-infrastructure-implementation-certification-handbook/book 


Oracle SOA Infrastructure Implementation Certification Handbook (1Z0-451) is written by Kathiravan Udayakumar, who is a key member of the Fusion COE team of a highly reputed IT Consulting Organization has extensive experience in architecting and designing solutions using various Oracle Fusion and PeopleSoft Products. This handbook is a new Oracle learning resource designed to help SOA architects, technical consultants and analysts successfully clear the 1Z0-451 Oracle SOA Foundation Practitioner exam.

Oracle SOA Infrastructure Implementation Certification Handbook (1Z0-451) focuses on the use of a relational data model and takes a deep dive into Technology Adapters while working with Mediator to integrate SCA components and external services. The book highlights topics such as identifying the SOA Suite 11g components, defining a SOA composite application and securing composite application using Security Policies and Web Services Manager.

A wide variety of well explained practice questions will help application developers strengthen and test their learning by solving practice papers modeled. Integrating Human Workflow with advanced BPEL concepts and understanding the various SOA Integration Points including B2B, BAM Service Bus, master the monitoring of Components Runtime execution are also explained in a concise manner using SOA Enterprise Manager Console.

2012/06/07

Cordys projects in the enterprise

Introduction

Cordys is used in small, medium as well as enterprise organisations. Within the Cordys Wiki you can find guidelines and best practices for the Folder structures and CWS environment (see [1]). When you want to use Cordys within the Enterprise I think these best practices are not recommended. In this Blog i will try to explain why.

BPM/SOA 5-layering Architecture

Every enterprise architect knows the 5-layering SOA enterprise architecture pattern:
  1. GUI - In this layer in which thin and thick clients are using the Business Services.
  2. Business Services - In this layer the Composite Services, like the enterprise business processes are implemented.
  3. Services - In this layer the Services are implemented.
  4. Applications - This layer is the integration layer towards the encapsulated applications.
  5. Data - This layer contains the data
Most Cordys projects (at least that i have seen) uses Cordys (solutions and projects) like this:


The solutions and projects are divided vertically, so in fact this way you get Application Silo's again, which you want to avoid with SOA and BPM principles. I understand that WS-AppServer integration is nicely integrated with XForms but i doubt if this is the way to go for the enterprise.

For the enterprise I would recommend:

In this case projects and solutions are defined horizontally. 

GUI
In this layer projects are defined that contain the Portals, Web Clients, Mobile applications etc that can only use the Business Services layer to execute business functionality.

Business Services
In this layer projects are defined that only implement the business processes. This layer will use the Services layer to compose the processes and composite Services.

Services
This layer contains the Domain Services solutions and projects. Note that these Services only use Common Data Model data and not applications specific data.

Applications
This layer contains the projects that actually encapsulate the applications with webservices.

Data
This layer contains the encapsulation of data, i.e. databases or shared files on directories. Here you will see WS-AppServer projects.

Conclusion

For small and medium sized organisations and projects you can use the solution/project constructions mostly described. However within big enterprises this does not suffice.
The question is of course what the consequences are when you are using the projects horizontally.

Are there any Cordys perfomance penalties? Of course because layering always causes overhead.

What are your experiences with large Cordys projects?

References

2012/06/01

Cordys Solution Architect Accelerator Program

On the 30th and 31th of May 2012 the first Cordys Solution Architect Accelerator Program took place at Putten, The Netherlands. A couple of potential Cordys Solution Architects of partners were invited to follow this program. I was one of the "lucky" ones. This program is setup so that more solution architects are trained and can be used in projects, because there is a miss in the field of Cordys projects.
This was a first session and this session will also be held in US, UK and India.
As always Cordys had organized this event very nice. There was also place for discussions and a social event in the evenening with bowling and BBQ.










The program was:

Day1:
* High Level architecture overview of BOP4
* Security Models
* Case Management
* Workflow (part 1)
Evening: Bowling, BBQ and Beers

Day2:
* Workflow (part 2)
* CWS
* Cordys Cloud Provisioning

Next steps:

  • The architecture team will help in developing more architectural patterns and best practices of the Cordys platform. 
  • All member will get certified (Fundamentals, BPMS, Solution Architect)
  • All architects will get a Cordys buddy to help the architects with challenges
  • Next sessions will be organized to discuss more topics




Thanks Cordys for this great initiative and opportunity to become a Solution Architect for the Cordys produkt and help Cordys in moving forward !

Cordys BOP4: Avoid deadlocks !

Problem

Today we went into a deadlock situation in our project. I like to share this case so that other Cordys developers are aware of this potential problem.

Case:
We have defined the following Long Lived Process.


So we have 1 subprocess and a webservice call.
There is 1 BPM Service Container that handles BPMs and Cases.
The problem is with the webservice call. This is also a call that is handled by a BPM container, however NOT on the same thread as the one that started this BPM instance. So in case the long-lived thread pool is full, the webservice can not be handled by the BPM container and all BPM instances are locked.

Solution

Define a separate BPM Service Container for the Case Management handling and in this case the call is handled by a different thread pool.

In general keep aware that in LongLived BPMs it can be dangerous to call BPM Webservices (like BPM generated webservices, case webservices, executeProcess webservice).

Note:
More can be found also on the Cordys Wiki: https://wiki.cordys.com/display/dp/Process+Execution+Modes+and+Thread+Pool+usage

2012/05/16

Cordys BOP4.1: Error when generating a webservice on a Decision Table

You can test a decision table with the test tool of Cordys (see Here).
However sometimes you want to automate tests with for example soapUI. In this case it is advised to generate a webservice from the Decision Table. This is nicely described here.

However I ran into a problem that the prefix of namespaces must be entered when the Decision Table was selected.

After a while I found the problem.
You use Schema files for the input of a Decision Table. Go to the definition of the Schema and double click it:


The you should check the Namespace Prefix in this namespace. This prefix must NOT be empy.

When I filled in the prefix I was able to generate the webservice on the Decision Table again.