Currently:    from Twitter.
Living in a World of Connected Systems

Answering James' workflow question...

Friday, August 17 2007 - WF

I was reading James McGovern's blog today and ran across the following question -

I am still awaiting a perspective from Marc Mercuri on his thoughts of when someone presents a personal card to a relying party and it requires a workflow (Kim Cameron's blog requires a lightweight email confirmation) should the relying party integrate into BPEL or SPML and what is the best way for folks to think about this?

Before I answer the question, I want to establish two assumptions I've made, based on my interpretation of the question. The first is that 'personal cards' here is synonymous  to 'self-issued cards', the second is that when referring to workflows, we're discussing workflows whose focus is to perform some process that will validate that the claims presented are accurate and the individual presenting the claims is indeed the person he/she/it claims to be.

If you've seen any of the videos I've done on information cards, you may have picked up on the fact that I'm a big fan of self-issued cards, as they allow an individual to readily share details about him/herself to recieve a a much more pleasant experience on a website or when accessing a web service. Many sites today ask you to sign up with a username and password and ask you to populate forms. With a self-issued information card, the key claims are already on the card, so it makes signing up for a site fast and painless.  Then there's the personalization benefits. You could have a government site that read your postal code and provided a personalized view of "your government" - complete with data ranging from when trash is picked up on your street to legislation that may be impacting your area.  You can log onto the website of an electronics store and present your card to easily get to the details for current sales in your area. There are plenty of great scenarios where a site or service can take an information card and use it - without the need for validation - to provide a better experience.

But 'plenty of great scenarios' does not translate to every scenario.  There are circumstances where you will want to validate the claims that are on the card. Those scenarios are all tied to risk.  And this is typically tied to risk of financial loss or an potential impact to reputation. In these cases, you'll want to take the information provided and evaluate it using a workflow.

Real World Examples

In the real world, I may call a local restaurant to deliver a pizza to my house.  They take my order, my address, and my phone number. For orders below a certain dollar threshold, they'll typically just make the order and deliver it.  However, if I ordered 12 pizzas, there's now more risk. And because there's financial risk that they'll waste time and resources creating 12 pizzas for what could be a prank, they'll undoubtedly call the phone number I provided to confirm that I placed the order.

If you want to publish a letter to the editor in a newspaper, you typically need to provide some evidence that can be used to prove you are who you say are. The New York Times requires that any such letter "must include the writer's address and phone numbers.". Why? Because there's risk to their reputation - as well as to the reputation of the people letter writers could claim to be - if the identity of the writer can not be determined.

Online Examples

If you've ever used Paypal, then you've taken part in a workflow where information that you've self-asserted has been validated. In this case, when you open an account they place a very small deposit (pennies) in a financial account you claim to hold. To validate your identity, you examine your account and provide the amount of the deposit.  This is a very clever workflow, because it leverages an account that you have with an existing financial institution, an account that likely required your identitiy being authenticated in person, using a drivers license, passport, etc.

From a risk of reputation perspective, James pointed out what will become one of the more key scenarios, validating the identity of someone who posts to a blog. To avoid both spam and anonymous comments that could range from libelous to threatening, the owner of the blog will want to make sure you are who you say are. This is really almost identical to the New York Times' Letter to the Editor requirements.

Using Workflow

Once you've assed the nature of the risk is financial or reputation related and the specific valuation of that risk, you'll want to identify the type of  workflow that will mitigate that risk for you.

Sometimes, that will be a sequential workflow, and that is typically where you will invoke one or more automated services to validate the claims in real time. For example, given my name, birthdate, home phone number, and website, you might be able to tie into some back end systems to validate the information I provided. In some cases, a workflow may retrieve additional data, which can then be used to challenge the user. This type of interaction happens synchronously and my identity can be validated during my same online session.

In other circumstances, you'll want to use a state machine workflow. This workflow is longer running than it's sequential counterpart. Once information is presented at a site or service, a communication could be made to one of the modes specified in your contact details - this is typically an email, but could just as easily by an automated speech-based service (IVR).  When contacted, the workflow will deliver a code to the user. The user will then go back to the website and provide that code. This is typically accepted as a proof of identity for providing blog comments. Other examples of state machines could include a site performing related checks, for example a dating website could validate your information and then perform a check with other systems to validate that you're not married. In these circumstances, the process could be completed quickly - I could get the email right away and respond in minutes, or it could complete in hours, days, weeks, months even. If John Smith signs up for a site before he goes on vacation, and the validation email doesn't arrive until after he's left, that process could remain in the 'waiting for response from user' state for several weeks.

Back to James' question

So now, back to James' question, "should the relying party integrate into BPEL or SPML and what is the best way for folks to think about this"

I couldn't in good faith tell everyone they should implement this in BPEL. If the whole REST vs WS-* debate has taught me anything, it's that while there is tremendous value in having well thought out standards that are implemented by Enterprises, ISVs, and Infrastructure companies, there is a large segment of folks that won't use it for any number of reasons (learning curve, implementation complexity, required tools/infrastructure, time to implement, etc.).

What I'd do first is identify the workflow itself, specifically what business rules need to be validated and what integration points need to be in place to feel comfortable that the risk has been mitigated. Before we talk technology, what is the type of interactions that need to happen. Do you need to send an email and then wait for a response? Do you need to tie into back end systems to validate the information? If the workflow is based on identity validation, identify what should happen when identity validation is successful, when it is not successful (identity could not be validated) or when it fails (system exception).

Then, look at technology and determine what works best for you.  For some folks this could be Windows Workflow Foundation, for others this could be BPEL, for others it could be BizTalk, and others still it could be C#, Java, Ruby, or PHP libraries that implemented the workflows directly in code. If you're writing this yourself, I'd typically advise taking whatever code you build and make it available with it's own service(s).  This has benefits on a number of fronts.

I will add that there is an opportunity for someone/some group to identify some of the more common patterns (similiar to what was done with the document referenced in my last post) and then to implement and make available those patterns in the form of binaries or services.

I'm just finishing up another project at the moment, once that's out the door, I'll take a look at coding up one or more examples and then throwing the bits over onto CodePlex for people to have at it.

Tagged as: ,

#1 Answering James' workflow question...

Answering James' workflow question...




#2 Answering James' workflow question...

Answering James' workflow question...




#3 Answering James' workflow question...

Answering James' workflow question...




#4 Answering James' workflow question...

Answering James' workflow question...




#5 Answering James' workflow question...

Answering James' workflow question...




#6 Answering James' workflow question...

Answering James' workflow question...




#7 Answering James' workflow question...

Answering James' workflow question...




#8 Answering James' workflow question...

Answering James' workflow question...




#9 Answering James' workflow question...

Answering James' workflow question...




#10 Answering James' workflow question...

Answering James' workflow question...




#11 Answering James' workflow question...

Answering James' workflow question...




#12 Answering James' workflow question...

Answering James' workflow question...




#13 Answering James' workflow question...

Answering James' workflow question...




#14 Answering James' workflow question...

Answering James' workflow question...




#15 Answering James' workflow question...

Answering James' workflow question...




#16 Answering James' workflow question...

Answering James' workflow question...




#17 Answering James' workflow question...

Answering James' workflow question...




#18 Answering James' workflow question...

Answering James' workflow question...




#19 Answering James' workflow question...

Answering James' workflow question...




#20 Answering James' workflow question...

Answering James' workflow question...




#21 Answering James' workflow question...

Answering James' workflow question...




#22 Answering James' workflow question...

Answering James' workflow question...




#23 Answering James' workflow question...

Answering James' workflow question...




#24 Answering James' workflow question...

Answering James' workflow question...




#25 Answering James' workflow question...

Answering James' workflow question...




#26 Answering James' workflow question...

Answering James' workflow question...




#27 Answering James' workflow question...

Answering James' workflow question...




#28 Answering James' workflow question...

Answering James' workflow question...




#29 Answering James' workflow question...

Answering James' workflow question...




#30 Answering James' workflow question...

Answering James' workflow question...




#31 Answering James' workflow question...

Answering James' workflow question...




#32 Answering James' workflow question...

Answering James' workflow question...




#33 Answering James' workflow question...

Answering James' workflow question...




#34 Answering James' workflow question...

Answering James' workflow question...




#35 Answering James' workflow question...

Answering James' workflow question...




#36 Answering James' workflow question...

Answering James' workflow question...




#37 Answering James' workflow question...

Answering James' workflow question...




#38 Answering James' workflow question...

Answering James' workflow question...




#39 Answering James' workflow question...

Answering James' workflow question...




#40 Answering James' workflow question...

Answering James' workflow question...




#41 Answering James' workflow question...

Answering James' workflow question...




#42 Answering James' workflow question...

Answering James' workflow question...




#43 Answering James' workflow question...

Answering James' workflow question...




#44 Answering James' workflow question...

Answering James' workflow question...




#45 Answering James' workflow question...

Answering James' workflow question...




#46 Answering James' workflow question...

Answering James' workflow question...




#47 Answering James' workflow question...

Answering James' workflow question...




#48 Answering James' workflow question...

Answering James' workflow question...




#49 Answering James' workflow question...

Answering James' workflow question...




#50 Answering James' workflow question...

Answering James' workflow question...




#51 Answering James' workflow question...

Answering James' workflow question...




#52 Answering James' workflow question...

Answering James' workflow question...




#53 Answering James' workflow question...

Answering James' workflow question...




#54 Answering James' workflow question...

Answering James' workflow question...




#55 Answering James' workflow question...

Answering James' workflow question...




#56 Answering James' workflow question...

Answering James' workflow question...




#57 Answering James' workflow question...

Answering James' workflow question...




#58 Answering James' workflow question...

Answering James' workflow question...




#59 Answering James' workflow question...

Answering James' workflow question...




#60 Answering James' workflow question...

Answering James' workflow question...




#61 Answering James' workflow question...

Answering James' workflow question...




#62 Answering James' workflow question...

Answering James' workflow question...




#63 Answering James' workflow question...

Answering James' workflow question...




#64 Answering James' workflow question...

Answering James' workflow question...




#65 Answering James' workflow question...

Answering James' workflow question...




#66 Answering James' workflow question...

Answering James' workflow question...




#67 Answering James' workflow question...

Answering James' workflow question...




#68 Answering James' workflow question...

Answering James' workflow question...




#69 Answering James' workflow question...

Answering James' workflow question...




#70 Answering James' workflow question...

Answering James' workflow question...




#71 Answering James' workflow question...

Answering James' workflow question...




#72 Answering James' workflow question...

Answering James' workflow question...




#73 Answering James' workflow question...

Answering James' workflow question...




#74 Answering James' workflow question...

Answering James' workflow question...




#75 Answering James' workflow question...

Answering James' workflow question...




#76 Answering James' workflow question...

Answering James' workflow question...




#77 Answering James' workflow question...

Answering James' workflow question...




#78 Answering James' workflow question...

Answering James' workflow question...




#79 Answering James' workflow question...

Answering James' workflow question...




#80 Answering James' workflow question...

Answering James' workflow question...




#81 Answering James' workflow question...

Answering James' workflow question...




#82 Answering James' workflow question...

Answering James' workflow question...




#83 Answering James' workflow question...

Answering James' workflow question...




#84 Answering James' workflow question...

Answering James' workflow question...




#85 Answering James' workflow question...

Answering James' workflow question...




#86 Answering James' workflow question...

Answering James' workflow question...




#87 Answering James' workflow question...

Answering James' workflow question...




#88 Answering James' workflow question...

Answering James' workflow question...




#89 Answering James' workflow question...

Answering James' workflow question...




#90 Answering James' workflow question...

Answering James' workflow question...




#91 Answering James' workflow question...

Answering James' workflow question...




#92 Answering James' workflow question...

Answering James' workflow question...




#93 Answering James' workflow question...

Answering James' workflow question...




#94 Answering James' workflow question...

Answering James' workflow question...




#95 Answering James' workflow question...

Answering James' workflow question...




#96 Answering James' workflow question...

Answering James' workflow question...




#97 Answering James' workflow question...

Answering James' workflow question...




#98 Answering James' workflow question...

Answering James' workflow question...




#99 Answering James' workflow question...

Answering James' workflow question...




#100 Answering James' workflow question...

Answering James' workflow question...




#101 Answering James' workflow question...

Answering James' workflow question...




#102 Answering James' workflow question...

Answering James' workflow question...




#103 Answering James' workflow question...

Answering James' workflow question...




#104 Answering James' workflow question...

Answering James' workflow question...




#105 Answering James' workflow question...

Answering James' workflow question...




#106 Answering James' workflow question...

Answering James' workflow question...




#107 Answering James' workflow question...

Answering James' workflow question...




#108 Answering James' workflow question...

Answering James' workflow question...




#109 Answering James' workflow question...

Answering James' workflow question...




#110 Answering James' workflow question...

Answering James' workflow question...




#111 Answering James' workflow question...

Answering James' workflow question...




#112 Answering James' workflow question...

Answering James' workflow question...




#113 Answering James' workflow question...

Answering James' workflow question...




#114 Answering James' workflow question...

Answering James' workflow question...




#115 Answering James' workflow question...

Answering James' workflow question...




#116 Answering James' workflow question...

Answering James' workflow question...




#117 Answering James' workflow question...

Answering James' workflow question...




#118 Answering James' workflow question...

Answering James' workflow question...




#119 Answering James' workflow question...

Answering James' workflow question...




#120 Answering James' workflow question...

Answering James' workflow question...




#121 Answering James' workflow question...

Answering James' workflow question...




#122 Answering James' workflow question...

Answering James' workflow question...




#123 Answering James' workflow question...

Answering James' workflow question...




#124 Answering James' workflow question...

Answering James' workflow question...




#125 Answering James' workflow question...

Answering James' workflow question...




#126 Answering James' workflow question...

Answering James' workflow question...




#127 Answering James' workflow question...

Answering James' workflow question...




#128 Answering James' workflow question...

Answering James' workflow question...




#129 Answering James' workflow question...

Answering James' workflow question...




#130 Answering James' workflow question...

Answering James' workflow question...




#131 Answering James' workflow question...

Answering James' workflow question...




#132 Answering James' workflow question...

Answering James' workflow question...




#133 Answering James' workflow question...

Answering James' workflow question...




#134 Answering James' workflow question...

Answering James' workflow question...




#135 Answering James' workflow question...

Answering James' workflow question...




#136 Answering James' workflow question...

Answering James' workflow question...




#137 Answering James' workflow question...

Answering James' workflow question...




#138 Answering James' workflow question...

Answering James' workflow question...




#139 Answering James' workflow question...

Answering James' workflow question...




#140 Answering James' workflow question...

Answering James' workflow question...




#141 Answering James' workflow question...

Answering James' workflow question...




#142 Answering James' workflow question...

Answering James' workflow question...




#143 Answering James' workflow question...

Answering James' workflow question...




#144 Answering James' workflow question...

Answering James' workflow question...




#145 Answering James' workflow question...

Answering James' workflow question...




#146 Answering James' workflow question...

Answering James' workflow question...




#147 Answering James' workflow question...

Answering James' workflow question...




#148 Answering James' workflow question...

Answering James' workflow question...




#149 Answering James' workflow question...

Answering James' workflow question...




#150 Answering James' workflow question...

Answering James' workflow question...




#151 Answering James' workflow question...

Answering James' workflow question...




#152 Answering James' workflow question...

Answering James' workflow question...




#153 Answering James' workflow question...

Answering James' workflow question...




#154 Answering James' workflow question...

Answering James' workflow question...




#155 Answering James' workflow question...

Answering James' workflow question...




#156 Answering James' workflow question...

Answering James' workflow question...




#157 Answering James' workflow question...

Answering James' workflow question...




#158 Answering James' workflow question...

Answering James' workflow question...




#159 Answering James' workflow question...

Answering James' workflow question...




#160 Answering James' workflow question...

Answering James' workflow question...




#161 Answering James' workflow question...

Answering James' workflow question...




#162 Answering James' workflow question...

Answering James' workflow question...




#163 Answering James' workflow question...

Answering James' workflow question...




#164 Answering James' workflow question...

Answering James' workflow question...




#165 Answering James' workflow question...

Answering James' workflow question...




#166 Answering James' workflow question...

Answering James' workflow question...




#167 Answering James' workflow question...

Answering James' workflow question...




#168 Answering James' workflow question...

Answering James' workflow question...




#169 Answering James' workflow question...

Answering James' workflow question...




#170 Answering James' workflow question...

Answering James' workflow question...




#171 Answering James' workflow question...

Answering James' workflow question...




#172 Answering James' workflow question...

Answering James' workflow question...




#173 Answering James' workflow question...

Answering James' workflow question...




#174 Answering James' workflow question...

Answering James' workflow question...




#175 Answering James' workflow question...

Answering James' workflow question...




#176 Answering James' workflow question...

Answering James' workflow question...




#177 Answering James' workflow question...

Answering James' workflow question...




#178 Answering James' workflow question...

Answering James' workflow question...




#179 Answering James' workflow question...

Answering James' workflow question...




#180 Answering James' workflow question...

Answering James' workflow question...




#181 Answering James' workflow question...

Answering James' workflow question...




#182 Answering James' workflow question...

Answering James' workflow question...




#183 Answering James' workflow question...

Answering James' workflow question...




#184 Answering James' workflow question...

Answering James' workflow question...




#185 Answering James' workflow question...

Answering James' workflow question...




#186 Answering James' workflow question...

Answering James' workflow question...




#187 Answering James' workflow question...

Answering James' workflow question...




#188 Answering James' workflow question...

Answering James' workflow question...




#189 Answering James' workflow question...

Answering James' workflow question...




#190 Answering James' workflow question...

Answering James' workflow question...




#191 Answering James' workflow question...

Answering James' workflow question...




#192 Answering James' workflow question...

Answering James' workflow question...




#193 Answering James' workflow question...

Answering James' workflow question...




#194 Answering James' workflow question...

Answering James' workflow question...




#195 Answering James' workflow question...

Answering James' workflow question...




#196 Answering James' workflow question...

Answering James' workflow question...




#197 Answering James' workflow question...

Answering James' workflow question...




#198 Answering James' workflow question...

Answering James' workflow question...




#199 Answering James' workflow question...

Answering James' workflow question...




#200 Answering James' workflow question...

Answering James' workflow question...




#201 Answering James' workflow question...

Answering James' workflow question...




#202 Answering James' workflow question...

Answering James' workflow question...




#203 Answering James' workflow question...

Answering James' workflow question...




#204 Answering James' workflow question...

Answering James' workflow question...




#205 Answering James' workflow question...

Answering James' workflow question...




#206 Answering James' workflow question...

Answering James' workflow question...




#207 Answering James' workflow question...

Answering James' workflow question...




#208 Answering James' workflow question...

Answering James' workflow question...




#209 Answering James' workflow question...

Answering James' workflow question...




#210 Answering James' workflow question...

Answering James' workflow question...




#211 Answering James' workflow question...

Answering James' workflow question...




#212 Answering James' workflow question...

Answering James' workflow question...




#213 Answering James' workflow question...

Answering James' workflow question...




#214 Answering James' workflow question...

Answering James' workflow question...




#215 Answering James' workflow question...

Answering James' workflow question...




#216 Answering James' workflow question...

Answering James' workflow question...




#217 Answering James' workflow question...

Answering James' workflow question...




#218 Answering James' workflow question...

Answering James' workflow question...




#219 Answering James' workflow question...

Answering James' workflow question...




#220 Answering James' workflow question...

Answering James' workflow question...




#221 Answering James' workflow question...

Answering James' workflow question...




#222 Answering James' workflow question...

Answering James' workflow question...




#223 Answering James' workflow question...

Answering James' workflow question...




#224 Answering James' workflow question...

Answering James' workflow question...




#225 Answering James' workflow question...

Answering James' workflow question...




#226 Answering James' workflow question...

Answering James' workflow question...




#227 Answering James' workflow question...

Answering James' workflow question...




#228 Answering James' workflow question...

Answering James' workflow question...




#229 Answering James' workflow question...

Answering James' workflow question...




#230 Answering James' workflow question...

Answering James' workflow question...




#231 Answering James' workflow question...

Answering James' workflow question...




#232 Answering James' workflow question...

Answering James' workflow question...




#233 Answering James' workflow question...

Answering James' workflow question...




#234 Answering James' workflow question...

Answering James' workflow question...




#235 Answering James' workflow question...

Answering James' workflow question...




#236 Answering James' workflow question...

Answering James' workflow question...




#237 Answering James' workflow question...

Answering James' workflow question...




#238 Answering James' workflow question...

Answering James' workflow question...




#239 Answering James' workflow question...

Answering James' workflow question...




#240 Answering James' workflow question...

Answering James' workflow question...




#241 Answering James' workflow question...

Answering James' workflow question...




#242 Answering James' workflow question...

Answering James' workflow question...




#243 Answering James' workflow question...

Answering James' workflow question...




#244 Answering James' workflow question...

Answering James' workflow question...




#245 Arizona Tours on Friday, November 02 2007 at 5:09 AM

Great post man. Thanks for the information they are very useful.




sex cams sex cam show live sex cams