?? bpel2remarkpi.java
字號(hào):
}
str = "t.(*start_switch#" + switchStr + "#*)" + "(" + redeem(targetStr)
+ "(" + str + ")" + ")" + "(*end_switch#" + switchStr + "#*)";
agent.setAction(str);
return agent;
}
public Agent ParseFlow(Node node, Agent agent, String afterInfo) {
flowTimes++;
String flowStr = String.valueOf(flowTimes);
int childsNum = getValidChildsNum(node);
String str = "";
String sourceStr = "";
String targetStr = "";
for (Node child = node.getFirstChild(); child != null; child = child
.getNextSibling()) {
if (child.getNodeName().equalsIgnoreCase("source")) {
sourceStr += ParseLinkSource(child, agent);
}
if (child.getNodeName().equalsIgnoreCase("target")) {
targetStr += ParseLinkTarget(child, agent);
}
}
String sourceRear[] = new String[childsNum]; // ,從0----childsNum-1開(kāi)始存儲(chǔ)!
String tempSourceTotal = "";
if (!sourceStr.equals("")) { // 如果這不為空,則臨時(shí)構(gòu)造多個(gè)后置名,分別添加到該節(jié)點(diǎn)的每個(gè)子節(jié)點(diǎn),然后再并發(fā)并發(fā)一個(gè)添加的進(jìn)程!
String linkSouStr = String.valueOf(linkSourceTimes);
for (int i = 0; i < childsNum; i++) {
String inputAct = "fl_s" + linkSouStr + String.valueOf(i);
String inputValue = "ifl_s" + linkSouStr + String.valueOf(i);
String outputValue = "ofl_s" + linkSouStr + String.valueOf(i);
String outputAct = "'" + inputAct;
String outputName = outputAct + "<" + outputValue + ">";
sourceRear[i] = outputName;
tempSourceTotal += inputAct + "(" + inputValue + ")" + ".";
agent.setBoundName(outputValue);
agent.setBoundName(inputAct + "&" + inputValue);
}
tempSourceTotal = reduce(tempSourceTotal);
}
int tokenCount = 0;
StringTokenizer stringTokenizer = new StringTokenizer(afterInfo, "&");
tokenCount = stringTokenizer.countTokens();
String array[][] = new String[tokenCount][childsNum]; // 每行儲(chǔ)存一個(gè)后置名字分裂的名字!
for (int i = 0; i < tokenCount; i++) { // 做兩層嵌套循環(huán),對(duì)每個(gè)afterName的分量做分裂!
String token = stringTokenizer.nextToken();
StringTokenizer stringTokenizer1 = new StringTokenizer(token, "<");
String outAct = stringTokenizer1.nextToken();
String inAct = "";
if (outAct.charAt(0) != '\'')
System.out.println("in__flow: Name has error!");
else
inAct = outAct.substring(1);
String tempNames = "";
for (int j = 0; j < childsNum; j++) {
String tempOutputAction = outAct + "$" + String.valueOf(i)
+ String.valueOf(j);
String tempOutputValue = "ofl" + "$" + String.valueOf(i)
+ String.valueOf(j);
String tempInputAction = inAct + "$" + String.valueOf(i)
+ String.valueOf(j);
String tempInputValue = "ifl" + "$" + String.valueOf(i)
+ String.valueOf(j);
agent.setBoundName(tempOutputValue);
agent.setBoundName(tempInputAction + "&" + tempInputValue);
array[i][j] = tempOutputAction + "<" + tempOutputValue + ">";
array1.add(listIndex, new String(tempInputAction));
array2.add(listIndex, new String(""));
listIndex++;
tempNames += tempInputAction + "(" + tempInputValue + ")" + ".";
}
int location = array1.indexOf((String) inAct); // 對(duì)分裂的名字進(jìn)行記錄,方便查找和替換!對(duì)應(yīng)sequence
// 活動(dòng)中的前置條件的處理!
if (location > -1)
array2.add(location, (String) (reduce(tempNames)));
}
int j = 0; // 記錄當(dāng)前分析的是第幾個(gè)孩子!從0開(kāi)始!
for (Node child = node.getFirstChild(); child != null; child = child
.getNextSibling()) {
int childType = activityMap.getType(child.getNodeName()
.toLowerCase());
if (childType != 99 && childType != 11) { // 注意下面結(jié)構(gòu)的邏輯關(guān)系!
String tempAfterInfo = "";
if (tokenCount > 0) {
for (int i = 0; i < tokenCount; i++)
tempAfterInfo += array[i][j] + ".";
tempAfterInfo = reduce(tempAfterInfo);
}
if (!sourceStr.equals("")) { // 將由于linkSource構(gòu)造的臨時(shí)后置名字加入到afterInfo中!
String addAfterInfo = sourceRear[j];
tempAfterInfo += "&" + addAfterInfo;
}
Agent tempAgent = new Agent();
tempAgent = ParseNode(child, tempAgent, tempAfterInfo);
agent.setFreeName(tempAgent.freeName);
agent.setBoundName(tempAgent.boundName);
String tempStr = tempAgent.getAction();
if (!isLastValidNode(child))
str += tempStr + " | ";
else
str += tempStr;
j++;
}
}
if (!sourceStr.equals("") && !tempSourceTotal.equals("")) {
str += " | " + redeem(tempSourceTotal) + reduce(sourceStr) + ".0";
}
str = "(*start_flow#" + flowStr + "#*)" + "(" + redeem(targetStr) + "("
+ str + ")" + ")" + "(*end_flow#" + flowStr + "#*)";
// 這里不用加sourcelink,因?yàn)樗呀?jīng)發(fā)散到各個(gè)子節(jié)點(diǎn)中去了!
agent.setAction(str);
return agent;
}
public Agent ParseInvoke(Node node, Agent agent, String afterInfo) {
invokeTimes++;
String invokeStr = String.valueOf(invokeTimes);
String strin = "";
String strout = "";
String str = "";
String partnerLinkValue = "";
String portTypeValueTemp = "";
String portTypeValue = "";
String operationValue = "";
String inputVariableValue = "";
String outputVariableValue = "";
String sourceStr = "";
String targetStr = "";
for (Node child = node.getFirstChild(); child != null; child = child
.getNextSibling()) {
if (child.getNodeName().equalsIgnoreCase("source")) {
sourceStr += ParseLinkSource(child, agent);
}
if (child.getNodeName().equalsIgnoreCase("target")) {
targetStr += ParseLinkTarget(child, agent);
}
}
/*
* if (!targetStr.equals( "")) { targetStr = redeem(targetStr) + "t." ; }
*/
NamedNodeMap attrs = node.getAttributes();
Node partnerLink = getNamedItemIgnoreCase(attrs, "partnerLink");
if (partnerLink != null) {
partnerLinkValue = ((Attr) partnerLink).getValue().trim()
.toLowerCase();
}
Node portType = getNamedItemIgnoreCase(attrs, "portType");
if (portType != null) {
portTypeValueTemp = ((Attr) portType).getValue().trim()
.toLowerCase();
}
if (portTypeValueTemp != null && !portTypeValueTemp.equals("")) {
int index = portTypeValueTemp.indexOf(":");
portTypeValue = portTypeValueTemp.substring(index + 1);
}
Node operation = getNamedItemIgnoreCase(attrs, "operation");
if (operation != null) {
operationValue = ((Attr) operation).getValue().trim().toLowerCase();
}
Node inputVariable = getNamedItemIgnoreCase(attrs, "inputVariable");
if (inputVariable != null) {
inputVariableValue = ((Attr) inputVariable).getValue().trim()
.toLowerCase();
}
Node outputVariable = getNamedItemIgnoreCase(attrs, "outputVariable");
if (outputVariable != null) {
outputVariableValue = ((Attr) outputVariable).getValue().trim()
.toLowerCase();
}
if (inputVariable != null && !inputVariableValue.equals(""))
strin = partnerLinkValue + "$" + portTypeValue + "$"
+ operationValue + "$" + inputVariableValue + "("
+ inputVariableValue + ")";
else if (inputVariable != null && inputVariableValue.equals(""))
strin = "'" + partnerLinkValue + "$" + portTypeValue + "$"
+ operationValue + "$";
if (inputVariableValue != null)
agent.setFreeName((String) inputVariableValue);
if (outputVariable != null && !outputVariable.equals(""))
strout = "'" + partnerLinkValue + "$" + portTypeValue + "$"
+ operationValue + "$" + outputVariableValue + "<"
+ outputVariableValue + ">";
else if (outputVariable != null && outputVariableValue.equals(""))
strout = partnerLinkValue + "$" + portTypeValue + "$"
+ operationValue + "$";
agent.setFreeName(partnerLinkValue + "$" + portTypeValue + "$"
+ operationValue + "$" + inputVariableValue);// 添加自由名和輸入名!
agent.setFreeName(partnerLinkValue + "$" + portTypeValue + "$"
+ operationValue + "$" + outputVariableValue);
agent.setFreeName(outputVariableValue);
agent.setBoundName(inputVariableValue);
if (!strin.equals("") && !strout.equals(""))
str = strin + "." + strout;
else if (!strin.equals("") && strout.equals(""))
str = strin;
else if (strin.equals("") && !strout.equals(""))
str = strout;
if (!afterInfo.equals("")) {
}
String rearName = blackBox(afterInfo);
str = "(*start_invoke#" + invokeStr + "#*)" + redeem(targetStr)
+ "(*start_action*)" + reduce(str) + "(*end_action*)";
if (!sourceStr.equals(""))
str += "." + reduce(sourceStr) + "(*end_invoke#" + invokeStr
+ "#*)";
else
str += "(*end_invoke#" + invokeStr + "#*)";
if (!rearName.equals(""))
str += "." + reduce(rearName) + ".0";
else
str += ".0";
str = "(" + str + ")";
agent.setAction(str);
return agent;
}
public Agent ParseReceive(Node node, Agent agent, String afterInfo) {
receiveTimes++;
String receiveStr = String.valueOf(receiveTimes);
String str = "";
String partnerLinkValue = "";
String portTypeValueTemp = "";
String portTypeValue = "";
String operationValue = "";
String variableValue = "";
String sourceStr = "";
String targetStr = "";
for (Node child = node.getFirstChild(); child != null; child = child
.getNextSibling()) {
if (child.getNodeName().equalsIgnoreCase("source")) {
sourceStr += ParseLinkSource(child, agent);
}
if (child.getNodeName().equalsIgnoreCase("target")) {
targetStr += ParseLinkTarget(child, agent);
}
}
/*
* if (!targetStr.equals( "")) { targetStr = redeem(targetStr) + "t." ; }
*/
NamedNodeMap attrs = node.getAttributes();
Node partnerLink = getNamedItemIgnoreCase(attrs, "partnerLink");
if (partnerLink != null) {
partnerLinkValue = ((Attr) partnerLink).getValue().trim()
.toLowerCase();
}
Node portType = getNamedItemIgnoreCase(attrs, "portType");
if (portType != null) {
portTypeValueTemp = ((Attr) portType).getValue().trim()
.toLowerCase();
}
if (portTypeValueTemp != null && !portTypeValueTemp.equals("")) {
int index = portTypeValueTemp.indexOf(":");
portTypeValue = portTypeValueTemp.substring(index + 1);
}
Node operation = getNamedItemIgnoreCase(attrs, "operation");
if (operation != null) {
operationValue = ((Attr) operation).getValue().trim().toLowerCase();
}
Node variable = getNamedItemIgnoreCase(attrs, "variable");
if (variable != null) {
variableValue = ((Attr) variable).getValue().trim().toLowerCase();
}
str = partnerLinkValue + "$" + portTypeValue + "$" + operationValue
+ "$" + variableValue;
str += "(" + variableValue + ")";
agent.setFreeName(partnerLinkValue + "$" + portTypeValue + "$"
+ operationValue + "$" + variableValue);
agent.setFreeName(variableValue); // 設(shè)置自由名和約束名
String rearName = "";
rearName = blackBox(afterInfo);
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -