Some random gibberish

"Kevin O'Neill" <[email protected]> 17 Mar 2003 18:20:01 +1100
Newsgroups gmane.comp.java.werkflow
Organization rocketred pty ltd
Message-ID <1047885600.16106.188.camel@macbeth>
I've been thinking about how I might like to use werkflow to determine
actions in an application. These are part notes, part conversation
piece, part gibberish (or the more localised version "kevineese").

Here's a use case I would like to support using werkflow.

Create User
-----------

Steps
-----

1. Gather - Get the user login, password and email address.
2. Validate - Ensure that the login and password are compliant with our
rules.
3. Store - Store the users record with an unverified flag
4. Send Confirm - Send a notification to the registered address with a
request for confirmation confirmation
5. Receive Confirm - Update the unverified flag for the user
6a. Send Sys Alert - Notify System admin of new user registration
6b. Index - Add the user to the list of active users
6c. Add the user to the announcements mailing list
7. End Process

Alternatives

2.1 -- Failed Validation
2.1.1 Notify - Notify user of validation errors.
2.1.2 End process

5.1 -- Confirm not received in 48 hours
5.1.1 Remove - Remove user record.
5.1.2 Send alert - Notify sys admin of fail registration
5.1.3 End process.

5.2 -- Receive Confirm after 5.1.1
5.2.1 Notify - Notify expiration of confirmation.
5.2.2 End process

---

Okay so it's a pretty straight forward use case (and I'm not a analyst
so excuse any trespass on use case no-nos) but it does highlight each of
the points I want to make from here.

Now lets talk a little about the implementation of this use case.

Our user environment; the user will interact with the system via a
series of html pages delivered via http(s). Notifications will be sent
via email.

----

Event initiation
----------------

I see four messages (1, 5, 5.1, 5.2).

1 is initiated via a an http request. It would be nice be be able to
call the werkflow engine in a blocking mode to handle the 1,2,2.1
interaction

5.1 is a timed event. 5.2 is probably an error (ie the associated case
has been completed)

5 and 5.2 are initiated by email. James?

A shot at some werkflow bits
----------------------------

<process id="confirm" initiation="call">
  <attributes>
    <attribute id="login" in="true"> 
      <java:attr-type type="java.lang.String"/>
    </attribute>
  </attributes>
    
  <parallel>
    <java:action type="com.example.notify">
      ...
    </java:action>
    <jelly:action>
	...
    </jelly:action>
    <java:action type="com.example.index">
      ...
    </java:action>
  </parallel>
</process>

enough for now. I'm thinking I want to start on a full working example
with web, email interaction etc. User management seems to fit the bill,
what do others think.


-k.

ps: sorry for cutting this short ... have to go and make dinner for
children :). 

-- 
If you don't test then your code is only a collection of bugs which 
apparently behave like a working program. 

Website: http://www.rocketred.com.au/blogs/kevin/