I often find myself researching something I know nothing about. And I usually don’t have much time to find out what I need to know. I have a fairly simple process through which I find out information which I thought was a pretty weird way to do it, until I asked a friend with similiar research needs and found out he did it the same way. Go figure. Anyhoo, here is my process.
Define what you need to know
This can be done with the simple question: what do I need to do to get where I want to go.
Get a good webpage on it
I and about 50/50 on wikipedia. I usually need a great deal more depths and more instructions than wikipedia will give me.
Look up *every single term* which you don’t know
Many will be hyperlinked out, just click on the hyper link. Don’t feel a need to read the content at the end of the link unless that terms comes up multiple times.
Keep records
It could be an NeoOffice Spreadsheet, a bookmark list, heck, an index card. But find a dynamic way to keeping track of where you’ve been. I like the spread sheet because I can put a link, a description of the webpage that links takes me to and a brief reason why I care about that web page.
Keep learning
If you realize 3/4s of the way through a project you have no idea how you got there, go back to your first good web page and your resource list and refresh yourself. Odds are you’ll find you understand a great deal more about the subject than when you started.
Here’s an example using the process outlined above.
Define what you need to know
I need to get mail functionality on my jbpm workflow.
Get a good webpage on it
The official jbpm user guide gives basics and code.
Look up *every single term* which you don’t know
However it does not give me nearly enough information. Having narrowed what I want to an email sent off by an AAction as part of a State Node, I put the following code into my Process Definition (the actual nodes names have been changed for their own protection. My nodes are too young to have a web presence :-D):
Then I tried running my code to see if anything different happened. Ok, I knew it wouldn’t work, but I wanted to see if it would.
<end-state name=”Sucess”>
<event type=”node-enter”>
<action name=”Bake Muffins”>
<name-mail to=’MyEmailAddress’ subject=’urgent’ text=’Put in the Muffins’ />
</action>
</event>
</end-state>
It didn’t do anything.
Going back and reading the User doc more carefully I found the following statement:
“16.7. Mail server
If you need a mailserver that is easy to install, checkout JBossMail Server or Apache James”
Ok, so I need a mailserver. Apache has some of the nicest intro docs I have seen in a long time. I fell a little bit in love.
But before I went and set up a mail server, I wanted to make sure I could make my workflow communicate in some way. Therefore I put in the code (again, the anonymity of my nodes are protected by false identities):
<state name=”Baking Muffins”>
<action name=”OpenOvenDoor” class=”com.OpenOvenDoor”>
<message>Don’t Touch Hot Oven!</message>
</action>
<transition to=”Run Ingest”></transition>
</state>
com.OpenOvenDoor reads:
package com;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
public class OpenOvenDoor implements ActionHandler {
private static final long serialVersionUID = 1L;
String message;
public void execute(ExecutionContext context) throws Exception {
context.getContextInstance().setVariable(“Don’t Touch Hot Oven!”, message);
}
}
Now this code worked. It is definitely not the most elegant way I could have done this (Don’t Touch Hot Oven shows up in two places–I will need to figure out which one actually is forcing the display of that message) but I did figure out that I could make my jbpm run java.
Keep records
I have a spreadsheet I keep updated with every website I have found which was relevant to my jbpm searchings. I go back through it sometimes when I’m stuck to see if there’s a resource I’m neglecting. It is a very nice way to keep organized.
Keep learning
Now I just have to figure out how to set up a mailserver. It should be fun! When I get it to work I’ll post. This would be me learning. 😀
Inspirational Quote:
“Gravitation cannot be held responsible for people falling in love.” Albert Einstein
1 Comment