In 2009, when I first studied computer science in Australia after obtaining an undergraduate degree in telecommunications engineering, I felt a bit uneasy as the summer holiday was approaching. The summer holiday in Australia was too long, and it would be too boring if I couldn't find something interesting to do.
Paul asked me whether I would like to continue a project about microphone arrays in his lab. I refused, and accepted Marcello's invitation to develop the process configuration component in YAWL — Yet Another Workflow Language.
Marcello was a young lecturer in the Enterprise Software Architecture unit, which taught component software and service-oriented architecture (SOA).
"Let me introduce you to my team." He led me to an office on Margrete Street. "Our team is called the Business Process Management Group, focusing on process-centric services. It is the largest team in this area in Australia."
I had read quite a lot in this area, but this was the only time a teacher had linked Business Process Management with process-centric services in SOA, which was quite innovative.
He introduced me to members there, such as Michael, Moe and Chun, and finally led me to meet Arthur, who led the group.
He gave me some documents and explained the basic concepts. "Please be aware that these documents include chapters from books that are ready to be published. Please do not share them with others."
A few days later, when I arrived at the office, he asked me about my understanding of process configuration.
"I think it is about generating simpler process models from a big model that includes everything, by blocking some gates," I said.
"Basically correct," he said. "Yeah, I had some friends in China investigating how to strip driver components from a Linux operating system, and select only the driver software components that are required. I think the concept is quite similar!"
After I set up the development platform in Java, Marcello told me he would be traveling to Italy.
"No worries if you encounter problems. Arthur and Michael will support you."
The first big problem I encountered was to find out which paths were affected when a user blocked a gate in YAWL. For each activity, it has input and output ports, and arcs connect output ports to input ports of the next activities. So to find the affected path, I had to trace the flow.
Then I started thinking: if I blocked an output port, the arc that stretched from this port would be blocked, and it would not reach the input port it was connected to in the next activity.
This pattern was familiar to me — it was the problem of finding dependencies in database design!
An output arc was always dependent on an output port, whereas an input port was always dependent on an input arc. The output arc for one port was always the input arc for another.
"Ah, I see. I should use the closure set algorithm from database design," I said to myself.
In the following weekly meeting of the research group, I consulted Arthur about this idea.
"Yes. This is a way to solve the problem," Arthur responded immediately. "There are many similar applications. Some people call it the bounding box theory."
After Arthur confirmed it, I gained the confidence to start the development. Michael shared the YAWL architecture documents with me. Almost every day, I stayed in the office until 9 pm.
After the Christmas and New Year break, Marcello came back to Brisbane. I cheerfully showed him my work.
"No. The OR-split should not be implemented like that." He corrected some of my mistakes, and I adjusted those errors in the source code.
After seeing that I had finished everything we discussed at the start of the project, Marcello asked me, "Do you want to co-author a paper with us?"
"A paper?" I couldn't believe I would have the opportunity to write a paper.
"Yes!" I said firmly.
Then he printed out a draft of an article explaining that after configuration, a process model could contain deadlocks and livelocks, so we had to verify its correctness. He taught me the concept of Petri nets and explained what the idea in the paper was and what I should do.
Three weeks later, I gave a presentation to the team. When I finished, everyone kept silent. This continued for about a minute. Then one of them clapped. Soon all members were clapping loudly.
"Your presentation is almost perfect!" Marcello said to me.
"I'm surprised that you've done so well!" Arthur walked to my desk and congratulated me. "Do you want to do another project in the coming semester?" he asked.
"No," I told him. "I'm applying for a scholarship in the Faculty of Built Environment and Engineering, so I will be taking some subjects there."
"Our faculty has scholarships too!" Arthur said.
"No. I tried before, but they said my undergraduate degree wasn't in computer science, so I can't qualify for a scholarship," I replied.
"I'm surprised you weren't studying computer science before. What you've done in two months is equivalent to what an average PhD student does in two years, and the quality is even higher!" Arthur said.
No comments:
Post a Comment