Here is a video from my presentation at bpmNEXT of March 2014 presenting the idea that in the future we might see a kind of agent, which I call a personal assistant, cloning and synchronizing projects such that the large scale processes actually emerge from the interactions of these agents.
Background
The presentation stands on its own, you can access the slides at slideshare, so I won’t repeat any of that here, but rather to give you some of the context.
bpmNEXT is a meeting of the elite in the process technology world, and it is always a great thrill to meet and debate with everyone all together in one place. Asilomar is a such a nice location to hang out, and the hosts always make sure there is plenty of wine to lubricate the conversation. About 6 months earlier Jim Sinur released a new book talking about agents, and I think a lot of people are rather misinformed about agents. In a certain sense, a BPMSuite is actually just an agent because it is programmable. If programmability and autonomy is the only thing to an agent, then what is the big deal? So to every person attending the conference, I kept asking “what is an agent?” Is this really something new, or just the same old thing with inflated terminology.
I think there is a real use for an agent to help work out the interface between different domains of control. That is a really difficult problem. The SOA people ignored it, and simply said that we would have WSDL interfaces in UDDI repositories. WSDL does not work because it does not define the meaning behind the data values. Data values are defined only by name and type, which really tells you nothing. Different organizations typically use different names for the same thing, so a WSDL interface falls down when the names don’t match.
What if an autonomous agent could work out those details for us? Within my organization it is pretty easy to come to agreement on terms and processes, but when bridging to another organization, there is a whole negotiation that needs to go on. You can easily imagine an interchange something like this:
- Agent A: Hey there! I have some work to be done, could you do it?
- Agent B: Well, yes, I do consulting from time to time, what do you need done?
- Agent A: I can’t really tell you until you sign the non-disclosure.
- Agent B: Well, what kind of work would it be, and I can tell you if I might do it.
- Agent A: it is in the area of helping with a patient. Do you help with skeletial problems on the back?
- Agent B: Yes, I help a lot of people with back problems, it sounds like the sort of thing I might be able to help with. What time frame are we talking about?
- Agent A: Patient is in mild discomfort, so I would expect a consultation in the next two weeks would be acceptable.
- Agent B: Great I have several openings next week. What kind of non-disclosure agreement should be set up?
- Agent A: The normal. Here (passing document) is the standard form. I see we have used this same form in the past.
- Agent B: OK, I have noted that this agreement is in force with this patient. Can I have the name of the patient.
- Agent A: It is ‘Alex Demo’ and here is the task that is assigned: “investigate back problem”. Would you like to take this assignment?
- Agent B: Yes, I automatically accept tasks with that description. Can you give me the pointer to the case folder?
- Agent A: OK, the task has been marked as accepted, and you have been given rights as a ‘attending subspecialist’. Here (passing URL) is the link.
- Agent B: OK, I am downloading the associated files, and I will take it from here. I will update you when I have some results.
- (Agent B notifies Charles about the new case, and at the same time sends a request to Alex for preferred appointment times.)
The dialog is described using the first person pronoun ‘I’ but understand that the agents are speaking on behalf of their owners. The owners have ‘programmed’ in some sense of the word, the agents to take these actions on their behalf. That is why I use the term “personal assistant”.
The point about this exchange is that we programmers aways want to simplify this into a single exchange: (1a) send the job request, and (1b) receive the result back. This exchange makes use of progressive disclosure on both sides. The delegating side does not want to disclose information about the patient until it is clarified that the receiving party is willing and able to help. Similarly, the receiving side may not want to disclose the full laundry list of services that can be performed, especially when different parties describe those tasks using different terms. I have probably grossly oversimplified the exchange over the work to be done, which very well might include identifiers of specific work which comes from standard tables of services. Also, keep in mind that the requester does not really know what actual treatment is needed: part of Charles’ job is to determine that. So the exchange is not really about doing a particular treatment, but rather about taking ownership of the case for a particular aspect of solving the problem.
Agent B might have all sorts of rules that need to be tested or satisfied before accepting the job. Agent A might have rules as well, such as probing for background information on previous patients. It is possible that information is being gathered so that the humans can then make the decision to offer/accept the task before proceeding. The high level takeaway is that there is no simply a WSDL definition on one side, and a call to the service on the other.
In light of all this, I am demonstrating a framework and a protocol that can accomplish this kind of negotiation. Yes, it has to get a lot more elaborate, but we have to start someplace, and that place is in basic referral, replication, and synchronization of case data.
What really drives me is the way that this will cause processes that emerge directly from the rules. Over time, pathways will emerge, from medical centers to supporting specialists, to pharmacies and other service providers. Just like it is in the business world, each party decides the kinds of jobs it will offer and/or accept depending upon the specialization of the person. The processes themselves can form out of those rules without being specified in elaborate detail in advance. The processes that emerge will be resilient and will automatically adapt to environmental changes. It is a whole new world.
Pingback: Business Driven Software | Thinking Matters