提交 4329c214 编写于 作者: Y yong.you

refator topograph model

上级 9e436ef6
...@@ -2,11 +2,11 @@ package com.dianping.cat.consumer.advanced; ...@@ -2,11 +2,11 @@ package com.dianping.cat.consumer.advanced;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import org.codehaus.plexus.logging.LogEnabled; import org.codehaus.plexus.logging.LogEnabled;
import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.logging.Logger;
...@@ -51,7 +51,7 @@ public class DependencyAnalyzer extends AbstractMessageAnalyzer<DependencyReport ...@@ -51,7 +51,7 @@ public class DependencyAnalyzer extends AbstractMessageAnalyzer<DependencyReport
@Inject @Inject
private DatabaseParser m_parser; private DatabaseParser m_parser;
private Map<String, DependencyReport> m_reports = new HashMap<String, DependencyReport>(); private Map<String, DependencyReport> m_reports = new ConcurrentHashMap<String, DependencyReport>();
private Set<String> m_types = new HashSet<String>(Arrays.asList("URL", "SQL", "Call", "PigeonCall", "Service", private Set<String> m_types = new HashSet<String>(Arrays.asList("URL", "SQL", "Call", "PigeonCall", "Service",
"PigeonService")); "PigeonService"));
...@@ -308,6 +308,23 @@ public class DependencyAnalyzer extends AbstractMessageAnalyzer<DependencyReport ...@@ -308,6 +308,23 @@ public class DependencyAnalyzer extends AbstractMessageAnalyzer<DependencyReport
Date period = new Date(m_startTime); Date period = new Date(m_startTime);
String ip = NetworkInterfaceManager.INSTANCE.getLocalHostAddress(); String ip = NetworkInterfaceManager.INSTANCE.getLocalHostAddress();
try {
Task task = m_taskDao.createLocal();
task.setCreationDate(new Date());
task.setProducer("");
task.setReportDomain("Cat");
task.setReportName(ID);
task.setReportPeriod(period);
task.setStatus(1); // status todo
task.setTaskType(0);
m_taskDao.insert(task);
System.out.println(task);
} catch (Exception e) {
Cat.logError(e);
}
for (DependencyReport report : m_reports.values()) { for (DependencyReport report : m_reports.values()) {
try { try {
Report r = m_reportDao.createLocal(); Report r = m_reportDao.createLocal();
...@@ -320,20 +337,7 @@ public class DependencyAnalyzer extends AbstractMessageAnalyzer<DependencyReport ...@@ -320,20 +337,7 @@ public class DependencyAnalyzer extends AbstractMessageAnalyzer<DependencyReport
r.setIp(ip); r.setIp(ip);
r.setType(1); r.setType(1);
r.setContent(xml); r.setContent(xml);
m_reportDao.insert(r); m_reportDao.insert(r);
m_reportDao.insert(r);
Task task = m_taskDao.createLocal();
task.setCreationDate(new Date());
task.setProducer("");
task.setReportDomain(domain);
task.setReportName(ID);
task.setReportPeriod(period);
task.setStatus(1); // status todo
task.setTaskType(0);
m_taskDao.insert(task);
} catch (Throwable e) { } catch (Throwable e) {
t.setStatus(e); t.setStatus(e);
Cat.getProducer().logError(e); Cat.getProducer().logError(e);
......
...@@ -151,7 +151,7 @@ ...@@ -151,7 +151,7 @@
</webResources> </webResources>
</configuration> </configuration>
</plugin> </plugin>
<!-- <plugin> <plugin>
<groupId>org.unidal.maven.plugins</groupId> <groupId>org.unidal.maven.plugins</groupId>
<artifactId>codegen-maven-plugin</artifactId> <artifactId>codegen-maven-plugin</artifactId>
<version>2.0.5</version> <version>2.0.5</version>
...@@ -193,7 +193,7 @@ ...@@ -193,7 +193,7 @@
</configuration> </configuration>
</execution> </execution>
</executions> </executions>
</plugin> --> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
......
...@@ -13,8 +13,8 @@ final class UserDatabaseConfigurator extends AbstractJdbcResourceConfigurator { ...@@ -13,8 +13,8 @@ final class UserDatabaseConfigurator extends AbstractJdbcResourceConfigurator {
all.add(defineJdbcDataSourceComponent("user", "com.mysql.jdbc.Driver", "jdbc:mysql://192.168.8.44:3306/hawk", "hawk", "hawk", "<![CDATA[useUnicode=true&autoReconnect=true]]>")); all.add(defineJdbcDataSourceComponent("user", "com.mysql.jdbc.Driver", "jdbc:mysql://192.168.8.44:3306/hawk", "hawk", "hawk", "<![CDATA[useUnicode=true&autoReconnect=true]]>"));
defineSimpleTableProviderComponents(all, "user", com.dainping.cat.home.dal.user._INDEX.getEntityClasses()); defineSimpleTableProviderComponents(all, "user", com.dianping.cat.home.dal.user._INDEX.getEntityClasses());
defineDaoComponents(all, com.dainping.cat.home.dal.user._INDEX.getDaoClasses()); defineDaoComponents(all, com.dianping.cat.home.dal.user._INDEX.getDaoClasses());
return all; return all;
} }
......
...@@ -32,8 +32,8 @@ import com.dianping.cat.helper.CatString; ...@@ -32,8 +32,8 @@ import com.dianping.cat.helper.CatString;
import com.dianping.cat.helper.TimeUtil; import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.home.dal.report.Event; import com.dianping.cat.home.dal.report.Event;
import com.dianping.cat.home.dependency.config.entity.ProductLine; import com.dianping.cat.home.dependency.config.entity.ProductLine;
import com.dianping.cat.home.dependency.graph.entity.Edge; import com.dianping.cat.home.dependency.graph.entity.TopologyEdge;
import com.dianping.cat.home.dependency.graph.entity.Node; import com.dianping.cat.home.dependency.graph.entity.TopologyNode;
import com.dianping.cat.home.dependency.graph.entity.TopologyGraph; import com.dianping.cat.home.dependency.graph.entity.TopologyGraph;
import com.dianping.cat.home.dependency.graph.transform.DefaultJsonBuilder; import com.dianping.cat.home.dependency.graph.transform.DefaultJsonBuilder;
import com.dianping.cat.report.ReportPage; import com.dianping.cat.report.ReportPage;
...@@ -116,7 +116,7 @@ public class Handler implements PageHandler<Context> { ...@@ -116,7 +116,7 @@ public class Handler implements PageHandler<Context> {
graph.setDes(graph.getDes() + problemInfo); graph.setDes(graph.getDes() + problemInfo);
} }
for (Node node : graph.getNodes().values()) { for (TopologyNode node : graph.getNodes().values()) {
if (node.getType().equals(GraphConstrant.PROJECT)) { if (node.getType().equals(GraphConstrant.PROJECT)) {
node.setLink(buildLink(payload, model, node.getId())); node.setLink(buildLink(payload, model, node.getId()));
...@@ -134,7 +134,7 @@ public class Handler implements PageHandler<Context> { ...@@ -134,7 +134,7 @@ public class Handler implements PageHandler<Context> {
List<Event> eventList = entry.getValue(); List<Event> eventList = entry.getValue();
for (Event event : eventList) { for (Event event : eventList) {
Node node = graph.findNode(event.getDomain()); TopologyNode node = graph.findTopologyNode(event.getDomain());
if (node != null) { if (node != null) {
if (!m_nodes.contains(node.getId())) { if (!m_nodes.contains(node.getId())) {
...@@ -213,7 +213,7 @@ public class Handler implements PageHandler<Context> { ...@@ -213,7 +213,7 @@ public class Handler implements PageHandler<Context> {
m_dateFormat.format(new Date(payload.getDate()))); m_dateFormat.format(new Date(payload.getDate())));
} }
private void buildNodeZabbixInfo(Node node, Model model, Payload payload) { private void buildNodeZabbixInfo(TopologyNode node, Model model, Payload payload) {
Date reportTime = new Date(payload.getDate() + TimeUtil.ONE_MINUTE * model.getMinute()); Date reportTime = new Date(payload.getDate() + TimeUtil.ONE_MINUTE * model.getMinute());
String domain = node.getId(); String domain = node.getId();
List<Event> events = m_eventManager.queryEvents(domain, reportTime); List<Event> events = m_eventManager.queryEvents(domain, reportTime);
...@@ -235,7 +235,7 @@ public class Handler implements PageHandler<Context> { ...@@ -235,7 +235,7 @@ public class Handler implements PageHandler<Context> {
} }
} }
private void buildNodeExceptionInfo(Node node, Model model, Payload payload) { private void buildNodeExceptionInfo(TopologyNode node, Model model, Payload payload) {
String domain = node.getId(); String domain = node.getId();
if (node.getStatus() != GraphConstrant.OK) { if (node.getStatus() != GraphConstrant.OK) {
String exceptionInfo = buildProblemInfo(domain, payload); String exceptionInfo = buildProblemInfo(domain, payload);
...@@ -365,10 +365,10 @@ public class Handler implements PageHandler<Context> { ...@@ -365,10 +365,10 @@ public class Handler implements PageHandler<Context> {
break; break;
case DASHBOARD: case DASHBOARD:
ProductLinesDashboard dashboardGraph = m_graphManager.buildDashboardGraph(reportTime.getTime()); ProductLinesDashboard dashboardGraph = m_graphManager.buildDashboardGraph(reportTime.getTime());
Map<String, List<Node>> dashboardNodes = dashboardGraph.getNodes(); Map<String, List<TopologyNode>> dashboardNodes = dashboardGraph.getNodes();
for (Entry<String, List<Node>> entry : dashboardNodes.entrySet()) { for (Entry<String, List<TopologyNode>> entry : dashboardNodes.entrySet()) {
for (Node node : entry.getValue()) { for (TopologyNode node : entry.getValue()) {
buildNodeZabbixInfo(node, model, payload); buildNodeZabbixInfo(node, model, payload);
} }
} }
...@@ -386,9 +386,9 @@ public class Handler implements PageHandler<Context> { ...@@ -386,9 +386,9 @@ public class Handler implements PageHandler<Context> {
} }
ProductLineDashboard productLineGraph = m_graphManager ProductLineDashboard productLineGraph = m_graphManager
.buildProductLineGraph(productLine, reportTime.getTime()); .buildProductLineGraph(productLine, reportTime.getTime());
List<Node> productLineNodes = productLineGraph.getNodes(); List<TopologyNode> productLineNodes = productLineGraph.getNodes();
for (Node node : productLineNodes) { for (TopologyNode node : productLineNodes) {
buildNodeZabbixInfo(node, model, payload); buildNodeZabbixInfo(node, model, payload);
buildNodeExceptionInfo(node, model, payload); buildNodeExceptionInfo(node, model, payload);
} }
...@@ -445,9 +445,9 @@ public class Handler implements PageHandler<Context> { ...@@ -445,9 +445,9 @@ public class Handler implements PageHandler<Context> {
private Map<String, List<String>> parseDependencies(TopologyGraph graph) { private Map<String, List<String>> parseDependencies(TopologyGraph graph) {
Map<String, List<String>> dependencies = new HashMap<String, List<String>>(); Map<String, List<String>> dependencies = new HashMap<String, List<String>>();
Map<String, Edge> edges = graph.getEdges(); Map<String, TopologyEdge> edges = graph.getEdges();
for (Edge temp : edges.values()) { for (TopologyEdge temp : edges.values()) {
String type = temp.getType(); String type = temp.getType();
String target = temp.getTarget(); String target = temp.getTarget();
......
...@@ -3,7 +3,7 @@ package com.dianping.cat.report.page.dependency.dashboard; ...@@ -3,7 +3,7 @@ package com.dianping.cat.report.page.dependency.dashboard;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.dianping.cat.home.dependency.graph.entity.Node; import com.dianping.cat.home.dependency.graph.entity.TopologyNode;
import com.dianping.cat.report.page.dependency.graph.GraphConstrant; import com.dianping.cat.report.page.dependency.graph.GraphConstrant;
import com.google.gson.Gson; import com.google.gson.Gson;
...@@ -17,19 +17,19 @@ public class ProductLineDashboard { ...@@ -17,19 +17,19 @@ public class ProductLineDashboard {
private String des; private String des;
private List<Node> nodes = new ArrayList<Node>(); private List<TopologyNode> nodes = new ArrayList<TopologyNode>();
public ProductLineDashboard(String productLine) { public ProductLineDashboard(String productLine) {
id = productLine; id = productLine;
} }
public ProductLineDashboard addNode(Node node) { public ProductLineDashboard addNode(TopologyNode node) {
nodes.add(node); nodes.add(node);
return this; return this;
} }
public List<Node> getNodes() { public List<TopologyNode> getNodes() {
return nodes; return nodes;
} }
...@@ -65,11 +65,11 @@ public class ProductLineDashboard { ...@@ -65,11 +65,11 @@ public class ProductLineDashboard {
this.des = des; this.des = des;
} }
public List<Node> getPoints() { public List<TopologyNode> getPoints() {
return nodes; return nodes;
} }
public void setPoints(List<Node> points) { public void setPoints(List<TopologyNode> points) {
this.nodes = points; this.nodes = points;
} }
......
...@@ -5,17 +5,17 @@ import java.util.LinkedHashMap; ...@@ -5,17 +5,17 @@ import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.dianping.cat.home.dependency.graph.entity.Node; import com.dianping.cat.home.dependency.graph.entity.TopologyEdge;
import com.dianping.cat.home.dependency.graph.entity.Edge; import com.dianping.cat.home.dependency.graph.entity.TopologyNode;
import com.google.gson.Gson; import com.google.gson.Gson;
public class ProductLinesDashboard { public class ProductLinesDashboard {
private Map<String, List<Node>> productLines = new LinkedHashMap<String, List<Node>>(); private Map<String, List<TopologyNode>> productLines = new LinkedHashMap<String, List<TopologyNode>>();
private List<Edge> edges = new ArrayList<Edge>(); private List<TopologyEdge> edges = new ArrayList<TopologyEdge>();
private transient Map<String, Node> temp = new LinkedHashMap<String, Node>(); private transient Map<String, TopologyNode> temp = new LinkedHashMap<String, TopologyNode>();
public String toJson() { public String toJson() {
String str = new Gson().toJson(this); String str = new Gson().toJson(this);
...@@ -24,15 +24,15 @@ public class ProductLinesDashboard { ...@@ -24,15 +24,15 @@ public class ProductLinesDashboard {
return str; return str;
} }
public boolean exsit(Node node) { public boolean exsit(TopologyNode node) {
return temp.containsKey(node.getId()); return temp.containsKey(node.getId());
} }
public ProductLinesDashboard addNode(String productLine, Node node) { public ProductLinesDashboard addNode(String productLine, TopologyNode node) {
List<Node> nodeList = productLines.get(productLine); List<TopologyNode> nodeList = productLines.get(productLine);
if (nodeList == null) { if (nodeList == null) {
nodeList = new ArrayList<Node>(); nodeList = new ArrayList<TopologyNode>();
productLines.put(productLine, nodeList); productLines.put(productLine, nodeList);
} }
...@@ -40,16 +40,16 @@ public class ProductLinesDashboard { ...@@ -40,16 +40,16 @@ public class ProductLinesDashboard {
return this; return this;
} }
public ProductLinesDashboard addEdge(Edge edge) { public ProductLinesDashboard addEdge(TopologyEdge edge) {
edges.add(edge); edges.add(edge);
return this; return this;
} }
public Map<String, List<Node>> getNodes() { public Map<String, List<TopologyNode>> getNodes() {
return productLines; return productLines;
} }
public List<Edge> getEdges() { public List<TopologyEdge> getEdges() {
return edges; return edges;
} }
......
...@@ -15,8 +15,8 @@ import com.dianping.cat.consumer.dependency.model.entity.Index; ...@@ -15,8 +15,8 @@ import com.dianping.cat.consumer.dependency.model.entity.Index;
import com.dianping.cat.consumer.dependency.model.entity.Segment; import com.dianping.cat.consumer.dependency.model.entity.Segment;
import com.dianping.cat.consumer.dependency.model.transform.BaseVisitor; import com.dianping.cat.consumer.dependency.model.transform.BaseVisitor;
import com.dianping.cat.helper.TimeUtil; import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.home.dependency.graph.entity.Edge; import com.dianping.cat.home.dependency.graph.entity.TopologyEdge;
import com.dianping.cat.home.dependency.graph.entity.Node; import com.dianping.cat.home.dependency.graph.entity.TopologyNode;
import com.dianping.cat.home.dependency.graph.entity.TopologyGraph; import com.dianping.cat.home.dependency.graph.entity.TopologyGraph;
public class TopologyGraphBuilder extends BaseVisitor { public class TopologyGraphBuilder extends BaseVisitor {
...@@ -33,12 +33,12 @@ public class TopologyGraphBuilder extends BaseVisitor { ...@@ -33,12 +33,12 @@ public class TopologyGraphBuilder extends BaseVisitor {
private Set<String> m_pigeonServices = new HashSet<String>(Arrays.asList("Service", "PigeonService", "PigeonServer")); private Set<String> m_pigeonServices = new HashSet<String>(Arrays.asList("Service", "PigeonService", "PigeonServer"));
public Node createNode(String domain) { public TopologyNode createNode(String domain) {
return m_itemBuilder.createNode(domain); return m_itemBuilder.createNode(domain);
} }
public Node cloneNode(Node node) { public TopologyNode cloneNode(TopologyNode node) {
Node result = new Node(); TopologyNode result = new TopologyNode();
result.setDes(node.getDes()); result.setDes(node.getDes());
result.setId(node.getId()); result.setId(node.getId());
...@@ -49,8 +49,8 @@ public class TopologyGraphBuilder extends BaseVisitor { ...@@ -49,8 +49,8 @@ public class TopologyGraphBuilder extends BaseVisitor {
return result; return result;
} }
public Edge cloneEdge(Edge edge) { public TopologyEdge cloneEdge(TopologyEdge edge) {
Edge result = new Edge(); TopologyEdge result = new TopologyEdge();
result.setDes(edge.getDes()); result.setDes(edge.getDes());
result.setKey(edge.getKey()); result.setKey(edge.getKey());
...@@ -90,7 +90,7 @@ public class TopologyGraphBuilder extends BaseVisitor { ...@@ -90,7 +90,7 @@ public class TopologyGraphBuilder extends BaseVisitor {
} }
} }
private Edge mergeEdge(Edge old, Edge edge) { private TopologyEdge mergeEdge(TopologyEdge old, TopologyEdge edge) {
if (old == null) { if (old == null) {
return edge; return edge;
} else { } else {
...@@ -105,7 +105,7 @@ public class TopologyGraphBuilder extends BaseVisitor { ...@@ -105,7 +105,7 @@ public class TopologyGraphBuilder extends BaseVisitor {
} }
} }
private Node mergeNode(Node old, Node node) { private TopologyNode mergeNode(TopologyNode old, TopologyNode node) {
if (old == null) { if (old == null) {
return node; return node;
} else { } else {
...@@ -130,9 +130,9 @@ public class TopologyGraphBuilder extends BaseVisitor { ...@@ -130,9 +130,9 @@ public class TopologyGraphBuilder extends BaseVisitor {
String type = dependency.getType(); String type = dependency.getType();
// pigeonServer is no use // pigeonServer is no use
if (!m_pigeonServices.contains(type)) { if (!m_pigeonServices.contains(type)) {
Edge edge = m_itemBuilder.buildEdge(m_domain, dependency); TopologyEdge edge = m_itemBuilder.buildEdge(m_domain, dependency);
TopologyGraph graph = findOrCreateGraph(); TopologyGraph graph = findOrCreateGraph();
Edge old = graph.findEdge(edge.getKey()); TopologyEdge old = graph.findTopologyEdge(edge.getKey());
if (old != null) { if (old != null) {
System.out.println(old); System.out.println(old);
...@@ -140,7 +140,7 @@ public class TopologyGraphBuilder extends BaseVisitor { ...@@ -140,7 +140,7 @@ public class TopologyGraphBuilder extends BaseVisitor {
graph.getEdges().put(edge.getKey(), mergeEdge(old, edge)); graph.getEdges().put(edge.getKey(), mergeEdge(old, edge));
if ("Database".equals(type)) { if ("Database".equals(type)) {
String target = dependency.getTarget(); String target = dependency.getTarget();
Node nodeOld = graph.findNode(target); TopologyNode nodeOld = graph.findTopologyNode(target);
graph.getNodes().put(target, mergeNode(nodeOld, m_itemBuilder.createDatabaseNode(target))); graph.getNodes().put(target, mergeNode(nodeOld, m_itemBuilder.createDatabaseNode(target)));
} }
...@@ -157,8 +157,8 @@ public class TopologyGraphBuilder extends BaseVisitor { ...@@ -157,8 +157,8 @@ public class TopologyGraphBuilder extends BaseVisitor {
@Override @Override
public void visitIndex(Index index) { public void visitIndex(Index index) {
TopologyGraph graph = findOrCreateGraph(); TopologyGraph graph = findOrCreateGraph();
Node node = m_itemBuilder.buildNode(m_domain, index); TopologyNode node = m_itemBuilder.buildNode(m_domain, index);
Node old = graph.findNode(node.getId()); TopologyNode old = graph.findTopologyNode(node.getId());
graph.getNodes().put(node.getId(), mergeNode(old, node)); graph.getNodes().put(node.getId(), mergeNode(old, node));
} }
......
...@@ -5,8 +5,8 @@ import org.unidal.tuple.Pair; ...@@ -5,8 +5,8 @@ import org.unidal.tuple.Pair;
import com.dianping.cat.consumer.dependency.model.entity.Dependency; import com.dianping.cat.consumer.dependency.model.entity.Dependency;
import com.dianping.cat.consumer.dependency.model.entity.Index; import com.dianping.cat.consumer.dependency.model.entity.Index;
import com.dianping.cat.home.dependency.graph.entity.Edge; import com.dianping.cat.home.dependency.graph.entity.TopologyEdge;
import com.dianping.cat.home.dependency.graph.entity.Node; import com.dianping.cat.home.dependency.graph.entity.TopologyNode;
public class TopologyGraphItemBuilder { public class TopologyGraphItemBuilder {
...@@ -19,8 +19,8 @@ public class TopologyGraphItemBuilder { ...@@ -19,8 +19,8 @@ public class TopologyGraphItemBuilder {
private static final String PROJECT = GraphConstrant.PROJECT; private static final String PROJECT = GraphConstrant.PROJECT;
public Node createDatabaseNode(String database) { public TopologyNode createDatabaseNode(String database) {
Node node = new Node(database); TopologyNode node = new TopologyNode(database);
node.setStatus(OK); node.setStatus(OK);
node.setType(DATABASE); node.setType(DATABASE);
...@@ -28,8 +28,8 @@ public class TopologyGraphItemBuilder { ...@@ -28,8 +28,8 @@ public class TopologyGraphItemBuilder {
return node; return node;
} }
public Edge buildEdge(String domain, Dependency dependency) { public TopologyEdge buildEdge(String domain, Dependency dependency) {
Edge edge = new Edge(); TopologyEdge edge = new TopologyEdge();
edge.setType(dependency.getType()); edge.setType(dependency.getType());
edge.setKey(dependency.getType() + ':' + domain + ':' + dependency.getTarget()); edge.setKey(dependency.getType() + ':' + domain + ':' + dependency.getTarget());
...@@ -48,8 +48,8 @@ public class TopologyGraphItemBuilder { ...@@ -48,8 +48,8 @@ public class TopologyGraphItemBuilder {
return edge; return edge;
} }
public Node createNode(String domain) { public TopologyNode createNode(String domain) {
Node node = new Node(domain); TopologyNode node = new TopologyNode(domain);
node.setStatus(OK); node.setStatus(OK);
node.setType(PROJECT); node.setType(PROJECT);
...@@ -57,8 +57,8 @@ public class TopologyGraphItemBuilder { ...@@ -57,8 +57,8 @@ public class TopologyGraphItemBuilder {
return node; return node;
} }
public Node buildNode(String domain, Index index) { public TopologyNode buildNode(String domain, Index index) {
Node node = new Node(domain); TopologyNode node = new TopologyNode(domain);
node.setType(PROJECT); node.setType(PROJECT);
node.setWeight(1); node.setWeight(1);
......
...@@ -27,8 +27,8 @@ import com.dianping.cat.home.dal.report.TopologyGraphDao; ...@@ -27,8 +27,8 @@ import com.dianping.cat.home.dal.report.TopologyGraphDao;
import com.dianping.cat.home.dal.report.TopologyGraphEntity; import com.dianping.cat.home.dal.report.TopologyGraphEntity;
import com.dianping.cat.home.dependency.config.entity.Domain; import com.dianping.cat.home.dependency.config.entity.Domain;
import com.dianping.cat.home.dependency.config.entity.ProductLine; import com.dianping.cat.home.dependency.config.entity.ProductLine;
import com.dianping.cat.home.dependency.graph.entity.Edge; import com.dianping.cat.home.dependency.graph.entity.TopologyEdge;
import com.dianping.cat.home.dependency.graph.entity.Node; import com.dianping.cat.home.dependency.graph.entity.TopologyNode;
import com.dianping.cat.home.dependency.graph.entity.TopologyGraph; import com.dianping.cat.home.dependency.graph.entity.TopologyGraph;
import com.dianping.cat.home.dependency.graph.transform.DefaultNativeParser; import com.dianping.cat.home.dependency.graph.transform.DefaultNativeParser;
import com.dianping.cat.message.Message; import com.dianping.cat.message.Message;
...@@ -77,7 +77,7 @@ public class TopologyGraphManager implements Initializable, LogEnabled { ...@@ -77,7 +77,7 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
Map<String, Domain> domains = entry.getValue().getDomains(); Map<String, Domain> domains = entry.getValue().getDomains();
for (Domain domain : domains.values()) { for (Domain domain : domains.values()) {
String nodeName = domain.getId(); String nodeName = domain.getId();
Node node = topologyGraph.findNode(nodeName); TopologyNode node = topologyGraph.findTopologyNode(nodeName);
m_allDomains.add(nodeName); m_allDomains.add(nodeName);
if (node != null) { if (node != null) {
...@@ -85,9 +85,9 @@ public class TopologyGraphManager implements Initializable, LogEnabled { ...@@ -85,9 +85,9 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
} }
} }
} }
Map<String, Edge> edges = topologyGraph.getEdges(); Map<String, TopologyEdge> edges = topologyGraph.getEdges();
for (Edge edge : edges.values()) { for (TopologyEdge edge : edges.values()) {
String self = edge.getSelf(); String self = edge.getSelf();
String to = edge.getTarget(); String to = edge.getTarget();
...@@ -106,7 +106,7 @@ public class TopologyGraphManager implements Initializable, LogEnabled { ...@@ -106,7 +106,7 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
if (topologyGraph != null) { if (topologyGraph != null) {
for (String domain : domains) { for (String domain : domains) {
Node node = topologyGraph.findNode(domain); TopologyNode node = topologyGraph.findTopologyNode(domain);
if (node != null) { if (node != null) {
dashboard.addNode(m_graphBuilder.cloneNode(node)); dashboard.addNode(m_graphBuilder.cloneNode(node));
...@@ -125,42 +125,42 @@ public class TopologyGraphManager implements Initializable, LogEnabled { ...@@ -125,42 +125,42 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
topylogyGraph.setStatus(GraphConstrant.OK); topylogyGraph.setStatus(GraphConstrant.OK);
if (all != null) { if (all != null) {
Node node = all.findNode(domain); TopologyNode node = all.findTopologyNode(domain);
if (node != null) { if (node != null) {
topylogyGraph.setDes(node.getDes()); topylogyGraph.setDes(node.getDes());
topylogyGraph.setStatus(node.getStatus()); topylogyGraph.setStatus(node.getStatus());
topylogyGraph.setType(node.getType()); topylogyGraph.setType(node.getType());
} }
Collection<Edge> edges = all.getEdges().values(); Collection<TopologyEdge> edges = all.getEdges().values();
for (Edge edge : edges) { for (TopologyEdge edge : edges) {
String self = edge.getSelf(); String self = edge.getSelf();
String target = edge.getTarget(); String target = edge.getTarget();
Edge cloneEdge = m_graphBuilder.cloneEdge(edge); TopologyEdge cloneEdge = m_graphBuilder.cloneEdge(edge);
if (self.equals(domain)) { if (self.equals(domain)) {
Node other = all.findNode(target); TopologyNode other = all.findTopologyNode(target);
if (other != null) { if (other != null) {
topylogyGraph.addNode(m_graphBuilder.cloneNode(other)); topylogyGraph.addTopologyNode(m_graphBuilder.cloneNode(other));
} else { } else {
topylogyGraph.addNode(m_graphBuilder.createNode(target)); topylogyGraph.addTopologyNode(m_graphBuilder.createNode(target));
} }
edge.setOpposite(false); edge.setOpposite(false);
topylogyGraph.addEdge(cloneEdge); topylogyGraph.addTopologyEdge(cloneEdge);
} else if (target.equals(domain)) { } else if (target.equals(domain)) {
Node other = all.findNode(self); TopologyNode other = all.findTopologyNode(self);
if (other != null) { if (other != null) {
topylogyGraph.addNode(m_graphBuilder.cloneNode(other)); topylogyGraph.addTopologyNode(m_graphBuilder.cloneNode(other));
} else { } else {
topylogyGraph.addNode(m_graphBuilder.createNode(target)); topylogyGraph.addTopologyNode(m_graphBuilder.createNode(target));
} }
cloneEdge.setTarget(edge.getSelf()); cloneEdge.setTarget(edge.getSelf());
cloneEdge.setSelf(edge.getTarget()); cloneEdge.setSelf(edge.getTarget());
cloneEdge.setOpposite(true); cloneEdge.setOpposite(true);
topylogyGraph.addEdge(cloneEdge); topylogyGraph.addTopologyEdge(cloneEdge);
} }
} }
} }
......
...@@ -18,7 +18,7 @@ import org.unidal.webres.resource.spi.IResourceRegistry; ...@@ -18,7 +18,7 @@ import org.unidal.webres.resource.spi.IResourceRegistry;
import org.unidal.webres.tag.resource.ResourceTagConfigurator; import org.unidal.webres.tag.resource.ResourceTagConfigurator;
import org.unidal.webres.taglib.basic.ResourceTagLibConfigurator; import org.unidal.webres.taglib.basic.ResourceTagLibConfigurator;
import com.dainping.cat.home.dal.user.DpAdminLogin; import com.dianping.cat.home.dal.user.DpAdminLogin;
public class SystemContext<T extends ActionPayload<? extends Page, ? extends Action>> extends ActionContext<T> { public class SystemContext<T extends ActionPayload<? extends Page, ? extends Action>> extends ActionContext<T> {
......
...@@ -11,7 +11,7 @@ import org.unidal.web.mvc.annotation.OutboundActionMeta; ...@@ -11,7 +11,7 @@ import org.unidal.web.mvc.annotation.OutboundActionMeta;
import org.unidal.web.mvc.annotation.PayloadMeta; import org.unidal.web.mvc.annotation.PayloadMeta;
import org.unidal.web.mvc.annotation.PreInboundActionMeta; import org.unidal.web.mvc.annotation.PreInboundActionMeta;
import com.dainping.cat.home.dal.user.DpAdminLogin; import com.dianping.cat.home.dal.user.DpAdminLogin;
import com.dianping.cat.system.SystemPage; import com.dianping.cat.system.SystemPage;
public class Handler implements PageHandler<Context> { public class Handler implements PageHandler<Context> {
......
...@@ -8,9 +8,6 @@ import org.unidal.dal.jdbc.DalException; ...@@ -8,9 +8,6 @@ import org.unidal.dal.jdbc.DalException;
import org.unidal.dal.jdbc.DalNotFoundException; import org.unidal.dal.jdbc.DalNotFoundException;
import org.unidal.lookup.annotation.Inject; import org.unidal.lookup.annotation.Inject;
import com.dainping.cat.home.dal.user.DpAdminLogin;
import com.dainping.cat.home.dal.user.DpAdminLoginDao;
import com.dainping.cat.home.dal.user.DpAdminLoginEntity;
import com.dianping.cat.Cat; import com.dianping.cat.Cat;
import com.dianping.cat.home.dal.alarm.AlarmRule; import com.dianping.cat.home.dal.alarm.AlarmRule;
import com.dianping.cat.home.dal.alarm.AlarmRuleDao; import com.dianping.cat.home.dal.alarm.AlarmRuleDao;
...@@ -21,6 +18,9 @@ import com.dianping.cat.home.dal.alarm.AlarmRuleSubscriptionEntity; ...@@ -21,6 +18,9 @@ import com.dianping.cat.home.dal.alarm.AlarmRuleSubscriptionEntity;
import com.dianping.cat.home.dal.alarm.AlarmTemplate; import com.dianping.cat.home.dal.alarm.AlarmTemplate;
import com.dianping.cat.home.dal.alarm.AlarmTemplateDao; import com.dianping.cat.home.dal.alarm.AlarmTemplateDao;
import com.dianping.cat.home.dal.alarm.AlarmTemplateEntity; import com.dianping.cat.home.dal.alarm.AlarmTemplateEntity;
import com.dianping.cat.home.dal.user.DpAdminLogin;
import com.dianping.cat.home.dal.user.DpAdminLoginDao;
import com.dianping.cat.home.dal.user.DpAdminLoginEntity;
import com.dianping.cat.system.page.alarm.UserAlarmSubState.UserAlarmSubStateCompartor; import com.dianping.cat.system.page.alarm.UserAlarmSubState.UserAlarmSubStateCompartor;
public class RuleManager { public class RuleManager {
......
...@@ -8,9 +8,6 @@ import org.unidal.dal.jdbc.DalException; ...@@ -8,9 +8,6 @@ import org.unidal.dal.jdbc.DalException;
import org.unidal.dal.jdbc.DalNotFoundException; import org.unidal.dal.jdbc.DalNotFoundException;
import org.unidal.lookup.annotation.Inject; import org.unidal.lookup.annotation.Inject;
import com.dainping.cat.home.dal.user.DpAdminLogin;
import com.dainping.cat.home.dal.user.DpAdminLoginDao;
import com.dainping.cat.home.dal.user.DpAdminLoginEntity;
import com.dianping.cat.Cat; import com.dianping.cat.Cat;
import com.dianping.cat.home.dal.alarm.ScheduledReport; import com.dianping.cat.home.dal.alarm.ScheduledReport;
import com.dianping.cat.home.dal.alarm.ScheduledReportDao; import com.dianping.cat.home.dal.alarm.ScheduledReportDao;
...@@ -18,6 +15,9 @@ import com.dianping.cat.home.dal.alarm.ScheduledReportEntity; ...@@ -18,6 +15,9 @@ import com.dianping.cat.home.dal.alarm.ScheduledReportEntity;
import com.dianping.cat.home.dal.alarm.ScheduledReportSubscription; import com.dianping.cat.home.dal.alarm.ScheduledReportSubscription;
import com.dianping.cat.home.dal.alarm.ScheduledReportSubscriptionDao; import com.dianping.cat.home.dal.alarm.ScheduledReportSubscriptionDao;
import com.dianping.cat.home.dal.alarm.ScheduledReportSubscriptionEntity; import com.dianping.cat.home.dal.alarm.ScheduledReportSubscriptionEntity;
import com.dianping.cat.home.dal.user.DpAdminLogin;
import com.dianping.cat.home.dal.user.DpAdminLoginDao;
import com.dianping.cat.home.dal.user.DpAdminLoginEntity;
import com.dianping.cat.system.page.alarm.UserReportSubState.UserReportSubStateCompartor; import com.dianping.cat.system.page.alarm.UserReportSubState.UserReportSubStateCompartor;
public class ScheduledManager { public class ScheduledManager {
......
...@@ -17,7 +17,7 @@ import org.unidal.web.mvc.annotation.InboundActionMeta; ...@@ -17,7 +17,7 @@ import org.unidal.web.mvc.annotation.InboundActionMeta;
import org.unidal.web.mvc.annotation.OutboundActionMeta; import org.unidal.web.mvc.annotation.OutboundActionMeta;
import org.unidal.web.mvc.annotation.PayloadMeta; import org.unidal.web.mvc.annotation.PayloadMeta;
import com.dainping.cat.home.dal.user.DpAdminLogin; import com.dianping.cat.home.dal.user.DpAdminLogin;
import com.dianping.cat.system.SystemContext; import com.dianping.cat.system.SystemContext;
import com.dianping.cat.system.SystemPage; import com.dianping.cat.system.SystemPage;
import com.dianping.cat.system.page.login.service.Credential; import com.dianping.cat.system.page.login.service.Credential;
......
package com.dianping.cat.system.page.login.service; package com.dianping.cat.system.page.login.service;
import com.dainping.cat.home.dal.user.DpAdminLogin; import com.dianping.cat.home.dal.user.DpAdminLogin;
import com.dianping.cat.system.page.login.spi.ISession; import com.dianping.cat.system.page.login.spi.ISession;
public class Session implements ISession { public class Session implements ISession {
......
...@@ -4,10 +4,10 @@ import org.unidal.dal.jdbc.DalException; ...@@ -4,10 +4,10 @@ import org.unidal.dal.jdbc.DalException;
import org.unidal.dal.jdbc.DalNotFoundException; import org.unidal.dal.jdbc.DalNotFoundException;
import org.unidal.lookup.annotation.Inject; import org.unidal.lookup.annotation.Inject;
import com.dainping.cat.home.dal.user.DpAdminLogin;
import com.dainping.cat.home.dal.user.DpAdminLoginDao;
import com.dainping.cat.home.dal.user.DpAdminLoginEntity;
import com.dianping.cat.Cat; import com.dianping.cat.Cat;
import com.dianping.cat.home.dal.user.DpAdminLogin;
import com.dianping.cat.home.dal.user.DpAdminLoginDao;
import com.dianping.cat.home.dal.user.DpAdminLoginEntity;
import com.dianping.cat.system.page.login.spi.ISessionManager; import com.dianping.cat.system.page.login.spi.ISessionManager;
public class SessionManager implements ISessionManager<Session, Token, Credential> { public class SessionManager implements ISessionManager<Session, Token, Credential> {
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<entities do-package="com.dainping.cat.home.dal.user" gen="true"> <entities do-package="com.dianping.cat.home.dal.user" gen="true">
<entity name="dp-admin-login" table="DP_AdminLogin" alias="da"> <entity name="dp-admin-login" table="DP_AdminLogin" alias="da">
<member name="login-id" field="LoginID" value-type="int" length="10" key="true" /> <member name="login-id" field="LoginID" value-type="int" length="10" key="true" />
<var name="key-login-id" value-type="int" key-member="login-id" /> <var name="key-login-id" value-type="int" key-member="login-id" />
......
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
<attribute name="type" value-type="String" /> <attribute name="type" value-type="String" />
<attribute name="status" value-type="int" /> <attribute name="status" value-type="int" />
<attribute name="des" value-type="int" /> <attribute name="des" value-type="int" />
<entity-ref name="node" type="list" names="nodes" /> <entity-ref name="topology-node" type="list" names="topology-nodes" />
<entity-ref name="edge" type="list" names="edges" /> <entity-ref name="topology-edge" type="list" names="topology-edges" />
</entity> </entity>
<entity name="node"> <entity name="topology-node">
<attribute name="id" value-type="String" /> <attribute name="id" value-type="String" />
<attribute name="type" value-type="String" /> <attribute name="type" value-type="String" />
<attribute name="status" value-type="int" /> <attribute name="status" value-type="int" />
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<attribute name="link" value-type="String" /> <attribute name="link" value-type="String" />
<attribute name="weight" value-type="int" /> <attribute name="weight" value-type="int" />
</entity> </entity>
<entity name="edge"> <entity name="topology-edge">
<attribute name="key" value-type="int" /> <attribute name="key" value-type="int" />
<attribute name="type" value-type="String" /> <attribute name="type" value-type="String" />
<attribute name="target" value-type="String" /> <attribute name="target" value-type="String" />
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.home.dependency.graph" enable-merger="true" enable-sax-parser="true" <model model-package="com.dianping.cat.home.dependency.graph" enable-merger="true" enable-sax-parser="true"
enable-base-visitor="true" enable-json-parser="true" enable-json-builder="true" enable-base-visitor="true" enable-json-parser="true" enable-json-builder="true" enable-native-parser="true" enable-native-builder="true"
enable-native-parser="true" enable-native-builder="true"> enable-xml-parser="false" enable-xml-builder="false">
<entity name="topology-graph" root="true"> <entity name="topology-graph" root="true">
<attribute name="id" value-type="String" /> <attribute name="id" value-type="String" />
<attribute name="type" value-type="String" /> <attribute name="type" value-type="String" />
<attribute name="status" value-type="int" primitive="true"/> <attribute name="status" value-type="int" primitive="true"/>
<attribute name="des" value-type="String" /> <attribute name="des" value-type="String" />
<entity-ref name="node" type="map" names="nodes" method-find-or-create='true'/> <entity-ref name="topology-node" type="map" names="nodes" method-find-or-create='true'/>
<entity-ref name="edge" type="map" names="edges" method-find-or-create='true'/> <entity-ref name="topology-edge" type="map" names="edges" method-find-or-create='true'/>
</entity> </entity>
<entity name="node"> <entity name="topology-node">
<attribute name="id" value-type="String" key="true"/> <attribute name="id" value-type="String" key="true"/>
<attribute name="type" value-type="String" /> <attribute name="type" value-type="String" />
<attribute name="status" value-type="int" primitive="true" /> <attribute name="status" value-type="int" primitive="true" />
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
<attribute name="des" value-type="String" default-value=""/> <attribute name="des" value-type="String" default-value=""/>
<attribute name="link" value-type="String" default-value=""/> <attribute name="link" value-type="String" default-value=""/>
</entity> </entity>
<entity name="edge"> <entity name="topology-edge">
<attribute name="key" value-type="String" key="true"/> <attribute name="key" value-type="String" key="true"/>
<attribute name="type" value-type="String" /> <attribute name="type" value-type="String" />
<attribute name="self" value-type="String" /> <attribute name="self" value-type="String" />
......
...@@ -1630,8 +1630,8 @@ ...@@ -1630,8 +1630,8 @@
</configuration> </configuration>
</component> </component>
<component> <component>
<role>com.dainping.cat.home.dal.user.DpAdminLoginDao</role> <role>com.dianping.cat.home.dal.user.DpAdminLoginDao</role>
<implementation>com.dainping.cat.home.dal.user.DpAdminLoginDao</implementation> <implementation>com.dianping.cat.home.dal.user.DpAdminLoginDao</implementation>
<requirements> <requirements>
<requirement> <requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role> <role>org.unidal.dal.jdbc.QueryEngine</role>
...@@ -2829,7 +2829,7 @@ ...@@ -2829,7 +2829,7 @@
<role>com.dianping.cat.home.dal.alarm.AlarmTemplateDao</role> <role>com.dianping.cat.home.dal.alarm.AlarmTemplateDao</role>
</requirement> </requirement>
<requirement> <requirement>
<role>com.dainping.cat.home.dal.user.DpAdminLoginDao</role> <role>com.dianping.cat.home.dal.user.DpAdminLoginDao</role>
</requirement> </requirement>
</requirements> </requirements>
</component> </component>
...@@ -2852,8 +2852,8 @@ ...@@ -2852,8 +2852,8 @@
</requirements> </requirements>
</component> </component>
<component> <component>
<role>com.dainping.cat.home.dal.user.DpAdminLoginDao</role> <role>com.dianping.cat.home.dal.user.DpAdminLoginDao</role>
<implementation>com.dainping.cat.home.dal.user.DpAdminLoginDao</implementation> <implementation>com.dianping.cat.home.dal.user.DpAdminLoginDao</implementation>
<requirements> <requirements>
<requirement> <requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role> <role>org.unidal.dal.jdbc.QueryEngine</role>
...@@ -2865,7 +2865,7 @@ ...@@ -2865,7 +2865,7 @@
<implementation>com.dianping.cat.system.page.alarm.ScheduledManager</implementation> <implementation>com.dianping.cat.system.page.alarm.ScheduledManager</implementation>
<requirements> <requirements>
<requirement> <requirement>
<role>com.dainping.cat.home.dal.user.DpAdminLoginDao</role> <role>com.dianping.cat.home.dal.user.DpAdminLoginDao</role>
</requirement> </requirement>
<requirement> <requirement>
<role>com.dianping.cat.home.dal.alarm.ScheduledReportDao</role> <role>com.dianping.cat.home.dal.alarm.ScheduledReportDao</role>
...@@ -2951,7 +2951,7 @@ ...@@ -2951,7 +2951,7 @@
<implementation>com.dianping.cat.system.page.login.service.SessionManager</implementation> <implementation>com.dianping.cat.system.page.login.service.SessionManager</implementation>
<requirements> <requirements>
<requirement> <requirement>
<role>com.dainping.cat.home.dal.user.DpAdminLoginDao</role> <role>com.dianping.cat.home.dal.user.DpAdminLoginDao</role>
</requirement> </requirement>
</requirements> </requirements>
</component> </component>
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<wizard package="com.dianping.cat.home"> <wizard package="com.dianping.cat.home">
<model package="com.dianping.cat.home.front" name="front">
<sample-model>/Users/youyong/Documents/workspace/cat/cat-home/src/test/resources/com/dianping/cat/system/front/front.xml</sample-model>
</model>
<model package="com.dianping.cat.home.topology-graph" name="topology-graph"> <model package="com.dianping.cat.home.topology-graph" name="topology-graph">
<sample-model>/Users/youyong/Documents/workspace/cat/cat-home/src/test/resources/com/dianping/cat/report/page/dependency/topology-graph.xml</sample-model> <sample-model>/Users/youyong/Documents/workspace/cat/cat-home/src/test/resources/com/dianping/cat/report/page/dependency/topology-graph.xml</sample-model>
</model> </model>
......
...@@ -72,10 +72,10 @@ ...@@ -72,10 +72,10 @@
"bPaginate": false, "bPaginate": false,
}); });
var data = ${model.topologyGraph}; var data = ${model.topologyGraph};
console.log(data); console.log(data);
function parse(data){ function parse(data){
var nodes = data.nodes; var nodes = data.nodes;
var edges = data.edges;
var points = []; var points = [];
var sides = []; var sides = [];
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
points.push(nodes[o]); points.push(nodes[o]);
} }
} }
for(var o in data.edges){ for(var o in edges){
if(data.edges.hasOwnProperty(o)){ if(data.edges.hasOwnProperty(o)){
sides.push(data.edges[o]); sides.push(data.edges[o]);
} }
......
<topology-graph id="TuanGouWeb" type="project" status="1" des="11231"> <topology-graph id="TuanGouWeb" type="project" status="1" des="11231">
<node id="TuanGouService" type="Service" status="2" des="OK" link="" weight="1"></node> <topology-node id="TuanGouService" type="Service" status="2" des="OK" link="" weight="1"></topology-node>
<node id="UserBaseService" type="Service" status="2" des="OK" link=""></node> <topology-node id="UserBaseService" type="Service" status="2" des="OK" link=""></topology-node>
<node id="Dianping" type="Database" status="2" des="OK" link=""></node> <topology-node id="Dianping" type="Database" status="2" des="OK" link=""></topology-node>
<node id="TuanGou" type="Database" status="2" des="OK" link=""></node> <topology-node id="TuanGou" type="Database" status="2" des="OK" link=""></topology-node>
<edge key="1" type="PigeonCall" target="TuanGouService" opposite="true" weight="1" status="2" des="OK" link=""></edge> <topology-edge key="1" type="PigeonCall" target="TuanGouService" opposite="true" weight="1" status="2" des="OK" link=""></topology-edge>
<edge key="2" type="PigeonCall" target="UserBaseService" opposite="true" status="2" des="OK" link=""></edge> <topology-edge key="2" type="PigeonCall" target="UserBaseService" opposite="true" status="2" des="OK" link=""></topology-edge>
<edge key="3" type="PigeonCall" target="TuanGouWeb" opposite="true" status="2" des="OK" link=""></edge> <topology-edge key="3" type="PigeonCall" target="TuanGouWeb" opposite="true" status="2" des="OK" link=""></topology-edge>
</topology-graph> </topology-graph>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册