bpel2remarkpi.java
来自「这是我们参加06年全国开源软件的竞赛作品」· Java 代码 · 共 1,272 行 · 第 1/4 页
JAVA
1,272 行
str = "(*start_receive#" + receiveStr + "#*)" + redeem(targetStr)
+ "(*start_action*)" + reduce(str) + "(*end_action*)";
if (!sourceStr.equals(""))
str += "." + reduce(sourceStr) + "(*end_receive#" + receiveStr
+ "#*)";
else
str += "(*end_receive#" + receiveStr + "#*)";
if (!rearName.equals(""))
str += "." + reduce(rearName) + ".0";
else
str += ".0";
str = "(" + str + ")";
agent.setAction(str);
return agent;
}
public Agent ParseReply(Node node, Agent agent, String afterInfo) {
replyTimes++;
String replyStr = String.valueOf(replyTimes);
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);
}
}
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();
}
String freeName = null;
if (!partnerLinkValue.equals("") && !portTypeValue.equals("")
&& !operationValue.equals("") && !variableValue.equals("")) {
freeName = partnerLinkValue + "$" + portTypeValue + "$"
+ operationValue + "$" + variableValue;
agent.setFreeName(freeName);
str = "'" + partnerLinkValue + "$" + portTypeValue + "$"
+ operationValue + "$" + variableValue;
str += "<" + variableValue + ">";
agent.setFreeName(partnerLinkValue + "$" + portTypeValue + "$"
+ operationValue + "$" + variableValue);
agent.setFreeName(variableValue);
}
String rearName = blackBox(afterInfo);
str = "(*start_reply#" + replyStr + "#*)" + redeem(targetStr)
+ "(*start_action*)" + reduce(str) + "(*end_action*)";
if (!sourceStr.equals(""))
str += "." + reduce(sourceStr) + "(*end_reply#" + replyStr + "#*)";
else
str += "(*end_reply#" + replyStr + "#*)";
if (!rearName.equals(""))
str += "." + reduce(rearName) + ".0";
else
str += ".0";
str = "(" + str + ")";
agent.setAction(str);
return agent;
}
public Agent ParseAssign(Node node, Agent agent, String afterInfo) {
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 nodeName = "";
nodeName = node.getNodeName();
String actStr = "";
if (nodeName.equals("assign")) {
assignTimes++;
actStr = String.valueOf(assignTimes);
}
if (nodeName.equals("throw")) {
throwTimes++;
actStr = String.valueOf(throwTimes);
}
if (nodeName.equals("terminate")) {
terminateTimes++;
actStr = String.valueOf(terminateTimes);
}
if (nodeName.equals("wait")) {
waitTimes++;
actStr = String.valueOf(waitTimes);
}
if (nodeName.equals("empty")) {
emptyTimes++;
actStr = String.valueOf(emptyTimes);
}
String rearName = blackBox(afterInfo);
str = "(*start_" + nodeName + "#" + actStr + "#*)" + redeem(targetStr);
if (!sourceStr.equals(""))
str += "t." + reduce(sourceStr) + "(*end_" + nodeName + "#"
+ actStr + "#*)";
else
str += "t" + "(*end_" + nodeName + "#" + actStr + "#*)";
if (!rearName.equals(""))
str += "." + reduce(rearName) + ".0";
else
str += ".0";
str = "(" + str + ")";
agent.setAction(str);
return agent;
}
public Agent ParseWait(Node node, Agent agent, String afterInfo) {
String str = "";
String strWait = ""; // 用来存储wait节点的分析内容!
str += "(*start_wait*)";
str += strWait;
str += "(*";
Agent tempAgent = new Agent();
tempAgent = ParseForRemark(node, tempAgent, afterInfo);
str += tempAgent.getAction();
str += "*)";
str += "(*end_wait*)";
return agent;
}
public Agent ParseTerminate(Node node, Agent agent, String afterInfo) {
String str = "";
String strTerminate = "";
// 这里还要补充!
str += "(*start_terminate*)";
str += strTerminate;
str += "(*";
Agent tempAgent = new Agent();
tempAgent = ParseForRemark(node, agent, afterInfo);
str += tempAgent.getAction();
str += "*)";
str += "(*end_terminate*)";
return agent;
}
public Agent ParsePartnerLinks(Node node, Agent agent, String afterInfo) {
String str = "";
str += "(*start_partnerLinks*)";
str += "(*";
Agent tempAgent = new Agent();
tempAgent = ParseForRemark(node, tempAgent, afterInfo);
str += tempAgent.getAction();
str += "*)";
str += "(*end_partnerLinks*)";
agent.setAction(str);
return agent;
}
public Agent ParseVariables(Node node, Agent agent, String afterInfo) {
String str = "";
str += "(*start_variables*)";
str += "(*";
Agent tempAgent = new Agent();
tempAgent = ParseForRemark(node, tempAgent, afterInfo);
str += tempAgent.getAction();
str += "*)";
str += "(*end_variables*)";
agent.setAction(str);
return agent;
}
public Agent ParseFaultHandlers(Node node, Agent agent, String afterInfo) {
String str = "";
str += "(*start_faultHandlers*)";
str += "(*";
Agent tempAgent = new Agent();
tempAgent = ParseForRemark(node, tempAgent, afterInfo);
str += tempAgent.getAction();
str += "*)";
str += "(*end_faultHandlers*)";
agent.setAction(str);
return agent;
}
public Agent ParseForRemark(Node node, Agent agent, String afterInfo) {
String str = "";
for (Node child = node.getFirstChild(); child != null; child = child
.getNextSibling()) {
if (child.getNodeType() == Node.ELEMENT_NODE) {
str += "<" + child.getNodeName();
NamedNodeMap childAttr = child.getAttributes();
for (int i = 0; i < childAttr.getLength(); i++) {
Node attr = childAttr.item(i);
str += " " + attr.getNodeName() + "=";
str += "\"" + attr.getNodeValue() + "\"";
}
str += ">";
Agent tempAgent = new Agent();
tempAgent = ParseForRemark(child, tempAgent, afterInfo);
str += tempAgent.getAction();
str += "</" + child.getNodeName() + ">";
}
}
agent.setAction(str);
return agent;
}
public String ParseLinkSource(Node node, Agent agent) {
// 这里对链接的处理还要再分析!
linkSourceTimes++;
String linkSourceStr = String.valueOf(linkSourceTimes);
String str = "";
NamedNodeMap attrs = node.getAttributes();
Node linkNameNode = null;
int attrsLength = attrs.getLength();
for (int i = 0; i < attrsLength; i++)
if (attrs.item(i).getNodeName().equalsIgnoreCase("linkname")) {
linkNameNode = attrs.item(i);
break;
}
String linkName = null;
if (linkNameNode != null)
linkName = ((Attr) linkNameNode).getValue().trim().toLowerCase();
String linkValue = "links" + linkSourceStr;
String tempLinkName = "als" + linkSourceStr;
str = "'" + tempLinkName + "<" + linkName + "," + linkValue + ">.0 | ";
str += tempLinkName + "(" + linkName + "," + linkValue + ")."
+ "(*start_source#" + linkSourceStr + "#*)" + "'" + linkName
+ "<" + linkValue + ">" + "(*end_source#" + linkSourceStr
+ "#*)" + ".";
agent.setBoundName(linkValue);
agent.setBoundName(linkName + "&" + tempLinkName);
return str;
}
public String ParseLinkTarget(Node node, Agent agent) {
// t.[z=true]还没有加上去!
linkTargetTimes++;
String linkTargetStr = String.valueOf(linkTargetTimes);
String str = "";
NamedNodeMap attrs = node.getAttributes();
Node linkNameNode = null;
int attrsLength = attrs.getLength();
for (int i = 0; i < attrsLength; i++)
if (attrs.item(i).getNodeName().equalsIgnoreCase("linkname")) {
linkNameNode = attrs.item(i);
break;
}
String linkName = null;
if (linkNameNode != null)
linkName = ((Attr) linkNameNode).getValue().trim().toLowerCase();
String linkValue = "linkt" + String.valueOf(linkTargetTimes);
str = "(*start_target#" + linkTargetStr + "#*)" + linkName + "("
+ linkValue + ")" + "(*end_target#" + linkTargetStr + "#*)"
+ ".";
agent.setBoundName(linkValue + "&" + linkName);
return str;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?