用callflow画流程图

        以前看nemergent公司用callflow画的MCPTT系统的流程图,觉得非常好看,并且每条信令还可以通过点击查看具体的内容。今天抽时间研究了研究callflow,挺有意思的。

        callflow的全名是Callflow Sequence Diagram Generator。这个软件是托管在sourceforge上的一个闭源的软件,地址为https://sourceforge.net/projects/callflow/,如果不嫌看英文麻烦的话,可以看这个网站的相关介绍http://callflow.sourceforge.net/.

        首先,先下载这个软件,通过tar命令解压,可以得到一个文件夹callflow-20120624-180,里面有几个很重要的文件,callflow(可执行),还有/conf/callflow.conf。首先要sudo vim callflow,这是一个脚本文件,编辑CONFDIR这一个变量,将它的值修改为callflow.conf文件所在的文件夹(这很重要,介绍网站中并没有说要修改这个地,导致最开始生成的图包含了wireshark包中的所有信令,filter文件中的过滤条件并没有什么作用)。然后编辑/conf/callflow.conf文件,编辑FILTER这个值,这个值代表了wireshark包中的过滤条件,符合这个条件的信令,最终才会出现在生成的图像上。

        然后,到这个软件的根目录,执行./callflow -o 包名.pcap > order,就会发现这是生成了一个order文件,编辑order文件,每一行代表效果图(见下图)中的一个竖线,表示一个实体,格式为(IP:PORT NAME),即ip地址+一个port表示在wireshark包中出现的ip+port,NAME表示给这个ip+port进行重命名,并且显示到最终生成的图像中。

        最后,执行./callflow 包名.pcap,这时会生成一个名字和pcap包名字一样的文件夹,打开它,会发现一个callflow.svg文件,通过浏览器打开它(如果是在公网服务器中,可以通过web服务器进行访问),就可以发现做好的图形了。

效果图(这是我在研究OpenIMS和AS互联时做的实验抓的pcap):

        通过谷歌浏览器等支持html5的浏览器看的话,还可以点击每条信令,查看这条信令的具体内容,超链接也是自己生成的,图像的效果确实还挺好看的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JsPlumb 是一个流程图绘制库,可以通过它来绘制各种类型的流程图,包括工作流程图、组织结构图、数据流图等等。 以下是一个简单的示例,演示如何使用 JsPlumb 来绘制一个简单的流程图: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JsPlumb 流程图示例</title> <script src="https://unpkg.com/jsplumb/browser-ui.js"></script> </head> <body> <div id="flowchart"> <div class="node" id="node1">节点1</div> <div class="node" id="node2">节点2</div> <div class="node" id="node3">节点3</div> </div> <script> // 初始化 JsPlumb jsPlumb.ready(function () { // 设置连接线的样式 var connectorPaintStyle = { lineWidth: 2, strokeStyle: "#61B7CF", joinstyle: "round", outlineColor: "white", outlineWidth: 2 }; // 设置连接线的箭头样式 var connectorHoverStyle = { lineWidth: 2, strokeStyle: "#216477", outlineWidth: 2, outlineColor: "white" }; // 设置端点的样式 var endpointStyle = { endpoint: "Dot", paintStyle: { strokeStyle: "#7AB02C", fillStyle: "transparent", radius: 7, lineWidth: 2 }, isSource: true, connector: ["Flowchart"], connectorStyle: connectorPaintStyle, hoverPaintStyle: endpointHoverStyle, connectorHoverStyle: connectorHoverStyle, dragOptions: {}, isTarget: true, maxConnections: -1 }; // 初始化节点 var nodes = document.querySelectorAll(".node"); Array.prototype.forEach.call(nodes, function (el) { jsPlumb.addEndpoint(el, {anchors: "RightMiddle"}, endpointStyle); jsPlumb.addEndpoint(el, {anchors: "LeftMiddle"}, endpointStyle); }); // 连接节点 jsPlumb.connect({source: "node1", target: "node2", type: "Flowchart"}); jsPlumb.connect({source: "node2", target: "node3", type: "Flowchart"}); }); </script> </body> </html> ``` 在这个示例中,我们首先使用 `<div>` 元素来定义节点,每个节点都有一个唯一的 ID 和一个 CSS 类名 `node`。接下来,我们使用 JavaScript 初始化 JsPlumb,并设置连接线和端点的样式。然后,我们使用 `addEndpoint` 方法为每个节点添加两个端点,以便连接其他节点。最后,我们使用 `connect` 方法连接节点,从而形成流程图。 以上示例只是一个简单的例子,JsPlumb 还支持许多其他功能,例如设置节点的拖拽、缩放和旋转等。如果您想要深入了解 JsPlumb 的更多功能,请查看官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值