YAWL工作流引擎启动流程实例过程详录

来源:互联网 发布:虚拟代理软件 编辑:程序博客网 时间:2024/04/30 18:25

本来是打算了解一下启动流程时传入流程数据的XML格式,顺便把整个引擎的流程启动过程跟踪了一下,其中包含了引擎运转最核心的算法continue if possible,并记录了所有引擎内部DEBUG的输出。

 

1---引擎服务端接收到post请求,开始启动流程
InterfaceB_EngineBasedServer::doPost() request.parameters =
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(caseParams) =<Root><inputString>my

test</inputString><inputBoolean>true</inputBoolean></Root>
这里是流程启动时传入case data的格式:<Root><name>value</name>...</Root>
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(version) = 0.1
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(completionObserverURI) =http://localhost:8080/resourceService/ib
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(specID) = testData
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(action) = launchCase
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(sessionHandle) = 6199579670708073268
[DEBUG] org.yawlfoundation.yawl.engine.YEngine._launchCase - --> launchCase
2-----------创建新的NET RUNNER 由CaseNbrStore获取case identifier
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache:Type=org.yawlfoundation.yawl.engine.YCaseNbrStore ID=11/2
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.YCaseNbrStore Key=11/2 Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.commit - --> commit
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.commit - <-- commit
3---------保存identifier
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.storeObject - Addingto insert cache: Type=org.yawlfoundation.yawl.engine.P_YIdentifierID=1/2
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.P_YIdentifier Key=1/2 Mode=Create
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
4--------初始化数据存储
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.storeObject - Addingto insert cache: Type=org.yawlfoundation.yawl.engine.YCaseData ID=2
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction: Object=org.yawlfoundation.yawl.engine.YCaseDataKey=2 Mode=Create
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
5--------在prepare中将case设置到初始节点InputCondition
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache:Type=org.yawlfoundation.yawl.engine.P_YIdentifier ID=1/2
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.P_YIdentifier Key=1/2 Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
6-------super.initialise(pmgr);如果net有local变量,设置初始值
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache: Type=org.yawlfoundation.yawl.engine.YCaseDataID=2
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction: Object=org.yawlfoundation.yawl.engine.YCaseDataKey=2 Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache: Type=org.yawlfoundation.yawl.engine.YCaseDataID=2
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction: Object=org.yawlfoundation.yawl.engine.YCaseDataKey=2 Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
7-------将输入数据IncomingData保存
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache: Type=org.yawlfoundation.yawl.engine.YCaseDataID=2
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction: Object=org.yawlfoundation.yawl.engine.YCaseDataKey=2 Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache: Type=org.yawlfoundation.yawl.engine.YCaseDataID=2
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction: Object=org.yawlfoundation.yawl.engine.YCaseDataKey=2 Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction

8--------设置observer后,更新case
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.storeObject - Addingto insert cache: Type=org.yawlfoundation.yawl.engine.YNetRunner ID=5/2
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.YNetRunner Key=5/2 Mode=Create
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction

9---------_yawllog.logCaseCreated(pmgr, runnerCaseID.toString(), username, specID);
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.storeObject - Addingto insert cache: Type=org.yawlfoundation.yawl.logging.YCaseEvent ID=2
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.logging.YCaseEvent Key=2 Mode=Create
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction

10------runner.continueIfPossible
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.continueIfPossible - --> continueIfPossible
在这里寻找被激活的task,如果有,进行fire
11------atomic task (无decomposition)的fire,得到fire后的child identifiers
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache:Type=org.yawlfoundation.yawl.engine.P_YIdentifier ID=1/2
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.P_YIdentifier Key=1/2 Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.storeObject - Addingto insert cache: Type=org.yawlfoundation.yawl.engine.P_YIdentifierID=1/2.1
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.P_YIdentifier Key=1/2.1Mode=Create
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache:Type=org.yawlfoundation.yawl.engine.P_YIdentifier ID=1/2
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.P_YIdentifier Key=1/2 Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache:Type=org.yawlfoundation.yawl.engine.P_YIdentifier ID=1/2.1
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.P_YIdentifier Key=1/2.1Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache:Type=org.yawlfoundation.yawl.engine.P_YIdentifier ID=1/2.1
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.P_YIdentifier Key=1/2.1Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
[DEBUG] org.yawlfoundation.yawl.elements.YTask.prepareDataForInstanceStarting - --> prepareDataForInstanceStarting2.1
12-------start one:_mi_entered.removeOne(pmgr, id);_mi_executing.add(pmgr, id);
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache:Type=org.yawlfoundation.yawl.engine.P_YIdentifier ID=1/2.1
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.P_YIdentifier Key=1/2.1Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction

13-----complete:  _mi_executing.removeOne(pmgr, childID);_mi_complete.add(pmgr, childID);
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache:Type=org.yawlfoundation.yawl.engine.P_YIdentifier ID=1/2.1
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.P_YIdentifier Key=1/2.1Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction

14----exit
14.1----performDataAssignmentsAccordingToOutputExpressions
14.2----_mi_active.removeAll(pmgr);_mi_complete.removeAll(pmgr);_mi_entered.removeAll(pmgr);_mi_executing.removeAll(pmgr);
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache:Type=org.yawlfoundation.yawl.engine.P_YIdentifier ID=1/3.1
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.P_YIdentifier Key=1/3.1Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache:Type=org.yawlfoundation.yawl.engine.P_YIdentifier ID=1/3.1
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.P_YIdentifier Key=1/3.1Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
14.3-----doXORSplit
[DEBUG]org.yawlfoundation.yawl.elements.YTask.doXORSplit - Evaluating XQueriesagainst Net: <?xml version="1.0" encoding="UTF-8"?>
<Root>
  <inputString>siwejsjdfix</inputString>
  <inputBoolean>false</inputBoolean>
</Root>
14.3.1----获取所有FLOW,若flow不是default,需要验证条件
14.3.2----SaxonUtil.evaluateQuery(xquery, _net.getInternalDataDocument());这里直接访问net的data:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
  <inputString>my test</inputString>
  <inputBoolean>true</inputBoolean>
</Root>
[DEBUG] org.yawlfoundation.yawl.elements.YTask.doXORSplit - Evaluating XQuery: boolean(/Root/inputBoolean/text()='true')
[DEBUG] org.yawlfoundation.yawl.elements.YTask.doXORSplit - XQuery evaluated FALSE.
14.3.3----当到了default flow时
[DEBUG] org.yawlfoundation.yawl.elements.YTask.doXORSplit - Following default path.
14.3.4----将token移动到找到的flow对应的post conditions。((YCondition) flow.getNextElement()).add(pmgr, tokenToSend);
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache:Type=org.yawlfoundation.yawl.engine.P_YIdentifier ID=1/3
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.P_YIdentifier Key=1/3 Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
14.4----将token从当前占用task移除
i.removeLocation(pmgr, this);
14.5----exit完毕
[DEBUG]org.yawlfoundation.yawl.elements.YTask.t_exit - YTask::null_3.exit()caseID(3) _parentDecomposition.getInternalDataDocument() = <?xmlversion="1.0" encoding="UTF-8"?>
<Root>
  <inputString>siwejsjdfix</inputString>
  <inputBoolean>false</inputBoolean>
</Root>


15----一个task complete后,再continue if possible
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.continueIfPossible - --> continueIfPossible
15.1----对有decomposition的task,创建workitem
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.createEnabledWorkItem - --> createEnabledWorkItem: Case=2 Task=Task_1_4
15.1.1---生成workitem
[DEBUG] org.yawlfoundation.yawl.engine.YWorkItem.<init> - Spec =testData - version 0.1 WorkItem =Task_1_4
15.1.2---添加到缓存 _workItemRepository.addNewWorkItem(this);
[DEBUG] org.yawlfoundation.yawl.engine.YWorkItemRepository.addNewWorkItem - --> addNewWorkItem: 2:Task_1_4
15.1.3---记录enablement time
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.storeObject - Addingto insert cache:Type=org.yawlfoundation.yawl.logging.YParentWorkItemEventID=98b6004e-69c9-42e2-a401-4b90778c38a3
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.logging.YParentWorkItemEventKey=98b6004e-69c9-42e2-a401-4b90778c38a3

Mode=Create
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
15.1.4---保存workitem
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.storeObject - Addingto insert cache: Type=org.yawlfoundation.yawl.engine.YWorkItemID=7/2:Task_1_4!0000000000000000000000001
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction: Object=org.yawlfoundation.yawl.engine.YWorkItemKey=7/2:Task_1_4!0000000000000000000000001 Mode=Create
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
15.2---设置workitem属性后更新
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache: Type=org.yawlfoundation.yawl.engine.YWorkItemID=7/2:Task_1_4!0000000000000000000000001
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction: Object=org.yawlfoundation.yawl.engine.YWorkItemKey=7/2:Task_1_4!0000000000000000000000001 Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
15.3---通知ResourceService
[DEBUG]org.yawlfoundation.yawl.engine.YEngine.announceEnabledTaskToResourceService- Announcing enabled task 2:Task_1_4 on servicehttp://localhost:8080/resourceService/ib
15.4---更新case
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.updateObject -Adding to update cache: Type=org.yawlfoundation.yawl.engine.YNetRunnerID=5/2
[DEBUG]org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction ---> doPersistAction:Object=org.yawlfoundation.yawl.engine.YNetRunner Key=5/2 Mode=Update
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.doPersistAction - <-- doPersistAction
15.5---退出continue if possible
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.continueIfPossible - <-- continueIfPossible

16-
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.completeTask - NOTIFYING RUNNER
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.kick - --> YNetRunner.kick
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.continueIfPossible - --> continueIfPossible
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.continueIfPossible - <-- continueIfPossible
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.kick - <-- YNetRunner.kick

17-----
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.completeTask - <-- completeTask: Exited=true
至此complete task 结束
18-----net的continue if possible结束
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.continueIfPossible - <-- continueIfPossible

19------Start时kick,在kick中又进行continue if possible的查找
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.kick - --> YNetRunner.kick
20------进入continue if possible
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.continueIfPossible - --> continueIfPossible
21-----此时无enabled task 退出continue if possible
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.continueIfPossible - <-- continueIfPossible

22-----kick结束
[DEBUG] org.yawlfoundation.yawl.engine.YNetRunner.kick - <-- YNetRunner.kick
23-----更新case, launch case结束
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.commit - --> commit
[DEBUG] org.yawlfoundation.yawl.engine.YPersistenceManager.commit - <-- commit
[DEBUG] org.yawlfoundation.yawl.engine.YEngine._launchCase - <-- launchCase

24-----resourceService的case mgt界面刷新列表
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.processPostQuery- InterfaceB_EngineBasedServer::doPost() result = 2

[DEBUG] org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug -
InterfaceB_EngineBasedServer::doPost() request.getRequestURL = http://localhost:8080/yawl/ib
[DEBUG] org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug -
InterfaceB_EngineBasedServer::doPost() request.parameters =
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(sessionHandle) = 6199579670708073268
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(action) = getSpecificationPrototypesList
[DEBUG] org.yawlfoundation.yawl.engine.YEngine.getSpecification - --> getSpecification: ID=testData - version 0.1
[DEBUG] org.yawlfoundation.yawl.engine.YEngine.getSpecification - <-- getSpecification: Loaded spec
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.processPostQuery- InterfaceB_EngineBasedServer::doPost() result =

<specificationData><id>testData</id><documentation>Nodescription has beengiven.</documentation><params><inputParam>
  <name>inputString</name>
  <ordering>0</ordering>
  <type>string</type>
  <namespace>http://www.w3.org/2001/XMLSchema</namespace>
</inputParam><inputParam>
  <name>inputBoolean</name>
  <ordering>1</ordering>
  <type>boolean</type>
  <namespace>http://www.w3.org/2001/XMLSchema</namespace>
</inputParam></params><rootNetID>Root</rootNetID><version>2.0</version><specversion>0.1</specversion><status>loaded</status></specificationData>

[DEBUG] org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug -
InterfaceB_EngineBasedServer::doPost() request.getRequestURL = http://localhost:8080/yawl/ib
[DEBUG] org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug -
InterfaceB_EngineBasedServer::doPost() request.parameters =
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(version) = 0.1
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(specID) = testData
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(action) = getCasesForSpecification
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(sessionHandle) = 6199579670708073268
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.processPostQuery- InterfaceB_EngineBasedServer::doPost() result =<caseID>2</caseID><caseID>1</caseID>

[DEBUG] org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug -
InterfaceB_EngineBasedServer::doPost() request.getRequestURL = http://localhost:8080/yawl/ib
[DEBUG] org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug -
InterfaceB_EngineBasedServer::doPost() request.parameters =
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(action) = getSpecificationPrototypesList
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(sessionHandle) = 6199579670708073268
[DEBUG] org.yawlfoundation.yawl.engine.YEngine.getSpecification - --> getSpecification: ID=testData - version 0.1
[DEBUG] org.yawlfoundation.yawl.engine.YEngine.getSpecification - <-- getSpecification: Loaded spec
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.processPostQuery- InterfaceB_EngineBasedServer::doPost() result =

<specificationData><id>testData</id><documentation>Nodescription has beengiven.</documentation><params><inputParam>
  <name>inputString</name>
  <ordering>0</ordering>
  <type>string</type>
  <namespace>http://www.w3.org/2001/XMLSchema</namespace>
</inputParam><inputParam>
  <name>inputBoolean</name>
  <ordering>1</ordering>
  <type>boolean</type>
  <namespace>http://www.w3.org/2001/XMLSchema</namespace>
</inputParam></params><rootNetID>Root</rootNetID><version>2.0</version><specversion>0.1</specversion><status>loaded</status></specificationData>

[DEBUG] org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug -
InterfaceB_EngineBasedServer::doPost() request.getRequestURL = http://localhost:8080/yawl/ib
[DEBUG] org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug -
InterfaceB_EngineBasedServer::doPost() request.parameters =
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(version) = 0.1
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(specID) = testData
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(sessionHandle) = 6199579670708073268
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(action) = getCasesForSpecification
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.processPostQuery- InterfaceB_EngineBasedServer::doPost() result =<caseID>2</caseID><caseID>1</caseID>

[DEBUG] org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug -
InterfaceB_EngineBasedServer::doPost() request.getRequestURL = http://localhost:8080/yawl/ib
[DEBUG] org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug -
InterfaceB_EngineBasedServer::doPost() request.parameters =
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(action) = getSpecificationPrototypesList
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.debug-     request.getParameter(sessionHandle) = 6199579670708073268
[DEBUG] org.yawlfoundation.yawl.engine.YEngine.getSpecification - --> getSpecification: ID=testData - version 0.1
[DEBUG] org.yawlfoundation.yawl.engine.YEngine.getSpecification - <-- getSpecification: Loaded spec
[DEBUG]org.yawlfoundation.yawl.engine.interfce.interfaceB.InterfaceB_EngineBasedServer.processPostQuery- InterfaceB_EngineBasedServer::doPost() result =

<specificationData><id>testData</id><documentation>Nodescription has beengiven.</documentation><params><inputParam>
  <name>inputString</name>
  <ordering>0</ordering>
  <type>string</type>
  <namespace>http://www.w3.org/2001/XMLSchema</namespace>
</inputParam><inputParam>
  <name>inputBoolean</name>
  <ordering>1</ordering>
  <type>boolean</type>
  <namespace>http://www.w3.org/2001/XMLSchema</namespace>
</inputParam></params><rootNetID>Root</rootNetID><version>2.0</version><specversion>0.1</specversion><status>loaded</status></specificationData>
附测试流程定义:

<?xml version="1.0" encoding="UTF-8"?>
<specificationSetxmlns="http://www.yawlfoundation.org/yawlschema"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"xsi:schemaLocation="http://www.yawlfoundation.org/yawlschemahttp://www.yawlfoundation.org/yawlschema/YAWL_Schema2.0.xsd">
  <specification uri="testData">
    <metaData>
      <creator>nhc</creator>
      <description>No description has been given.</description>
      <version>0.1</version>
      <identifier>UID_f1f277f0-d916-4c5b-94dd-474c09067251</identifier>
    </metaData>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" />
    <decomposition id="Root" isRootNet="true" xsi:type="NetFactsType">
      <inputParam>
        <name>inputString</name>
        <type>string</type>
        <namespace>http://www.w3.org/2001/XMLSchema</namespace>
      </inputParam>
      <inputParam>
        <name>inputBoolean</name>
        <type>boolean</type>
        <namespace>http://www.w3.org/2001/XMLSchema</namespace>
      </inputParam>
      <processControlElements>
        <inputCondition id="InputCondition_1">
          <flowsInto>
            <nextElementRef id="null_3" />
          </flowsInto>
        </inputCondition>
        <task id="null_3">
          <flowsInto>
            <nextElementRef id="Task_2_5" />
            <isDefaultFlow />
          </flowsInto>
          <flowsInto>
            <nextElementRef id="Task_1_4" />
            <predicate ordering="0">/Root/inputBoolean/text()='true'</predicate>
          </flowsInto>
          <join code="xor" />
          <split code="xor" />
        </task>
        <task id="Task_1_4">
          <name>Task 1</name>
          <flowsInto>
            <nextElementRef id="OutputCondition_2" />
          </flowsInto>
          <join code="xor" />
          <split code="and" />
          <startingMappings>
            <mapping>
             <expressionquery="&lt;showInputString&gt;{/Root/inputString/text()}&lt;/showInputString&gt;"/>
              <mapsTo>showInputString</mapsTo>
            </mapping>
          </startingMappings>
          <resourcing>
            <offer initiator="user" />
            <allocate initiator="user" />
            <start initiator="user" />
          </resourcing>
          <decomposesTo id="Reflection" />
        </task>
        <task id="Task_2_5">
          <name>Task 2</name>
          <flowsInto>
            <nextElementRef id="OutputCondition_2" />
          </flowsInto>
          <join code="xor" />
          <split code="and" />
          <startingMappings>
            <mapping>
             <expressionquery="&lt;showInputString&gt;{/Root/inputString/text()}&lt;/showInputString&gt;"/>
              <mapsTo>showInputString</mapsTo>
            </mapping>
          </startingMappings>
          <resourcing>
            <offer initiator="user" />
            <allocate initiator="user" />
            <start initiator="user" />
          </resourcing>
          <decomposesTo id="Reflection" />
        </task>
        <outputCondition id="OutputCondition_2" />
      </processControlElements>
    </decomposition>
    <decomposition id="Reflection" xsi:type="WebServiceGatewayFactsType">
      <inputParam>
        <name>showInputString</name>
        <type>string</type>
        <namespace>http://www.w3.org/2001/XMLSchema</namespace>
      </inputParam>
      <externalInteraction>manual</externalInteraction>
    </decomposition>
  </specification>
  <layout>
    <locale language="zh" country="CN" />
    <specification id="testData">
      <size w="72" h="30" />
      <net id="Root">
        <bounds x="0" y="0" w="1516" h="839" />
        <frame x="2" y="27" w="1519" h="842" />
        <viewport x="0" y="0" w="1519" h="842" />
        <vertex id="InputCondition_1">
          <attributes>
            <bounds x="36.0" y="412.0" w="32.0" h="32.0" />
          </attributes>
        </vertex>
        <vertex id="OutputCondition_2">
          <attributes>
            <bounds x="592.0" y="404.0" w="32.0" h="32.0" />
          </attributes>
        </vertex>
        <container id="null_3">
          <vertex>
            <attributes>
              <bounds x="140.0" y="408.0" w="32.0" h="32.0" />
            </attributes>
          </vertex>
          <decorator type="XOR_split">
            <position>13</position>
            <attributes>
              <bounds x="171.0" y="408.0" w="11.0" h="32.0" />
              <size w="11" h="32" />
            </attributes>
          </decorator>
        </container>
        <container id="Task_1_4">
          <vertex>
            <attributes>
              <bounds x="280.0" y="360.0" w="32.0" h="32.0" />
            </attributes>
          </vertex>
          <label>
            <attributes>
              <bounds x="248.0" y="392.0" w="96.0" h="18.0" />
            </attributes>
          </label>
        </container>
        <container id="Task_2_5">
          <vertex>
            <attributes>
              <bounds x="280.0" y="456.0" w="32.0" h="32.0" />
            </attributes>
          </vertex>
          <label>
            <attributes>
              <bounds x="248.0" y="488.0" w="96.0" h="22.0" />
            </attributes>
          </label>
        </container>
        <flow source="InputCondition_1" target="null_3">
          <ports in="13" out="12" />
          <attributes>
            <lineStyle>11</lineStyle>
          </attributes>
        </flow>
        <flow source="null_3" target="Task_1_4">
          <ports in="2" out="12" />
          <attributes>
            <lineStyle>11</lineStyle>
          </attributes>
        </flow>
        <flow source="null_3" target="Task_2_5">
          <ports in="2" out="12" />
          <attributes>
            <lineStyle>11</lineStyle>
          </attributes>
        </flow>
        <flow source="Task_1_4" target="OutputCondition_2">
          <ports in="13" out="12" />
          <attributes>
            <lineStyle>11</lineStyle>
          </attributes>
        </flow>
        <flow source="Task_2_5" target="OutputCondition_2">
          <ports in="13" out="12" />
          <attributes>
            <lineStyle>11</lineStyle>
          </attributes>
        </flow>
      </net>
    </specification>
  </layout>
</specificationSet>

流程定义图

原创粉丝点击