点蓝字关注  ↑↑↑ 数据化审计:问题导向、应用至上、解决痛点

内容摘要

  • 什么是COM技术

  • IBM I2 Analyst's Notebook软件介绍

  • 如何使用Python调用I2的COM接口,批量自动生成图表,提高工作效率

COM技术

COM:组件对象模型,是Component Object Model的缩写,是微软提出的一种组件技术,它是一种面向对象的编程模式,定义了对象在单个应用程序内部或多个应用程序之间交互的行为方式,是一种无关平台、语言中立、位置透明、支持网络的中间件技术。COM定义了适用于多种操作系统和硬件平台的二进制标准。COM定义了在不同的硬件平台上运行的对象之间的标准线格式和协议进行交互。

COM组件由以Win 32动态连接库(DLL)或可执行文件(EXE)形式发布的可执行代码所组成。遵循COM规范编写出来的组件将能够满足对组件架构的所有要求。COM组件可以给应用程序、操作系统以及其他组件提供服务。

简单地说,一个成熟软件可以通过COM技术,提供其他语言可以调用的接口,实现跨平台、跨软件的信息处理交互,或者实现程序的自动化。比如,可以根据输入的内容自动生成Word文档,根据录入的数据自动生成Excel表格。避免了大量重复劳动。

IBM I2 Analyst's Notebook

IBM i2 Analyst's Notebook,一般在用户交流中简称为I2,它是IBM公司一款数据可视化(I2:information to image)工具软件。I2的多维数据可视化分析功能可为分析人员提供支持,以便他们能够快速发现隐藏在数据中的联系和模式。比如,查看网络中的关系,使用集成的社交网络分析功能来进一步了解罪犯、恐怖分子和欺诈性网络的构成、层次和作案手段。(官网描述,非广告,真伪自辩)

业务背景和难题

在风险管控实践中,IBM I2 Analyst's Notebook,简称I2,对识别隐性担保关系、洗钱网络、非法融资平台等有很强的辅助作用。但在使用过程中,往往需要经过数据整理、导入、格式化等多个步骤才能生成可读性较强的图表,对多个类似数据源也不能批量生成,而是需要一个个手动操作,大大影响了检查工作效率。

问题解决思路

分析后发现,IBM i2 Analyst's Notebook安装成功后,会安装多个ActiveX控件,并在系统中注册多个COM服务。

用OleView工具查看系统中已注册的COM服务,展开 Type Libraries,向下滚动可以看到I2相关的COM服务,其中最重要的服务是“i2 Notebook 8.0 Application Type Library”,对应的对象名称为“LinkNotebook.Application.7”。这里显示的版本7是为了保持向下兼容性,为固定值,可能与当前安装的I2版本不一致。

I2的COM服务提供的接口对象层级关系如下,类似于Excel的层级:工作簿->图表区->图表元素->样式。

既然I2隐含提供了COM接口,那就完全可以使用Python来批量读取数据,批量自动生成I2的图表关系文件,避免图表生成过程中耗费时间和精力的重复劳动,将检查人力资源更多投放到数据分析和核查中

思路实现环境

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,具有丰富、强大的库,功能全。其中win32com库可以在Windows环境中用于创建、操作COM服务。

基于Python环境引入win32com库,调用I2的COM接口,实现批量网络关系图的自动生成。

本文分析所使用的环境具体如下:

软件或环境 说明
Win10 64位 系统环境
IBM i2 Analyst’s Notebook 9.0 I2软件
Python 2.7 数据分析语言平台
win32com COM接口调用库
os 本地文件系统操作库

代码实现

 1# coding: utf-8 2 3# Func:调用COM接口生成I2的图表文件 4# 可左右滑动查看 5 6import win32com.client 7import os 8 9# 创建I2 Notebook对象10objApp = win32com.client.Dispatch('LinkNotebook.Application.7')11# 是否显示I2软件窗口12objApp.Visible = True 1314# 添加一个空白图表15objApp.Charts.Add('')1617# 获取当前图表对象18objChart = objApp.Charts.CurrentChart19# 获取当前图表的实体(节点)集合20objEntityTypeColl = objChart.EntityTypes2122# 添加一个图表中节点类型 并指定图标为Person23objEntityType = objEntityTypeColl.Add(u'客户','Person',0)2425# 添加节点26## 获取当前图表Icon类型节点的样式27objIconStyle = objChart.CurrentIconStyle28objIconStyle.Type = objEntityType29## 添加两个节点 函数原型为LNChart.CreateIcon (Style, X, Y, Label, Identity)30objIcon1 = objChart.CreateIcon(objIconStyle,150,150,u'客户1','001')31## 节点2 加框突出显示32objIconStyle.SetSubItemVisible(8,True)33objIcon2 = objChart.CreateIcon(objIconStyle,350,150,u'客户2','002')3435# 添加链接36## 获取当前图表链接的样式37objLinkStyle = objChart.CurrentLinkStyle38## 设置链接的箭头39objLinkStyle.ArrowStyle = 1 # 0-ArrowStyle.ArrowNone  1-ArrowStyle.ArrowOnHead40## 创建链接 函数原型为LNChart.CreateLink (Style, EndFrom, EndTo, Label)41objLink1 = objChart.CreateLink(objLinkStyle,objIcon1,objIcon2,u'1000.02')4243# 添加图表属性 给当前链接加一个属性:交易笔数44objAttributeClassColl = objChart.AttributeClasses45objAttributeClass = objAttributeClassColl.Find(u"交易笔数")46# 如果不存在才创建47if objAttributeClass is None:48   objAttributeClass = objChart.CreateAttributeClass(u"交易笔数",1, "", True, True, True)49## 将当前链接的交易笔数 如设置为4笔 50objLink1.SetAttributeValue(objAttributeClass,4.0)5152# 判断文件是否存在后 保存图表文件53## 需要注意的是win32com只支持绝对路径文件名54lfilename = u'f:\I2测试图表.anb'55if os.path.isfile(lfilename):56    os.remove(lfilename)57## 保存图表文件58objChart.SaveChart(lfilename)5960# 关闭当前图表 退出I2 释放COM对象61objApp.Charts.CloseChart(objChart,0)62objApp.Quit()63objApp = None

最后生成的图表如下:

全部代码可点击左下角“阅读原文”从GitHub上获取。

喜欢就长按关注吧!

python 文案自动生成_Python应用 | 利用COM技术自动生成IBM i2舞弊关系分析图表相关推荐

  1. matlab 生成plc程序,利用MATLABsimulink的自动代码生成工具开发PLC程序..docx

    利用MATLABsimulink的自动代码生成工具开发PLC程序. 利用MATLAB/simulink的自动代码生成工具开发PLC程序MATLAB之控制系统 2010-07-07 15:17:43 阅 ...

  2. python 魔兽世界升级脚本_Python 实现数据库更新脚本的生成方法

    我在工作的时候,在测试环境下使用的数据库跟生产环境的数据库不一致,当我们的测试环境下的数据库完成测试准备更新到生产环境上的数据库时候,需要准备更新脚本,真是一不小心没记下来就会忘了改了哪里,哪里添加了 ...

  3. python中lt方法_Python的富比较方法__lt__、__gt__之间的关联关系分析

    Python的富比较方法包括__lt__.__gt__分别表示:小于.大于,对应的操作运算符为:"".那么是否象普通数字运算一样,这两个方法之间存在互反的关系呢? Python没有 ...

  4. python短期预测图_Python中利用长短期记忆模型LSTM进行时间序列预测分析

    原文链接:http://tecdat.cn/?p=6663 此示例中,神经网络用于使用2011年4月至2013年2月期间的数据预测都柏林市议会公民办公室的能源消耗. 每日数据是通过总计每天提供的15分 ...

  5. python dlib人脸检测_Python 3 利用 Dlib 实现人脸检测和剪切

    0. 引言 利用 Python 开发,借助 Dlib 库进行人脸检测 / face detection 和剪切: 将检测到的人脸剪切下来,依次排序平铺显示在新的图像上: 实现的效果如 图1 所示,将 ...

  6. python试卷生成_Python学习笔记文件读写之生成随机的测试试卷文件

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  7. python手机屏幕控制_Python脚本利用adb进行手机控制的方法

    一.  adb 相关命令: 1. 关闭adb服务:adb kill-server 2. 启动adb服务  adb start-server 3. 查询当前运行的所有设备  adb devices 4. ...

  8. python cv2模块安装_Python运行脚本前,自动安装需要的模块包

    在服务器上部署Python程序时,往往需要先安装很多需要的模块包.如果一个一个安装就会出现忘记的情况.或者新增加某个新的模块时,也可能会忘记安装. 这里先讲一下怎么通过Python程序自动安装. 以下 ...

  9. python写一个自动登录脚本_Python 脚本登录交换机实现自动配置备份

    Python 脚本登录交换机实现自动配置备份 一.Python脚本 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramik ...

最新文章

  1. tushare 金融数据获取(R语言版)
  2. angr学习笔记(10)(hook)
  3. 在RAC中重建EM(转)
  4. Tengine开源新特性:如何让HTTPS处理能力轻松翻倍?
  5. python在文本添加超链接_Python将超链接文本打印到Spyder控制台(Python print hyperlinked text to Spyder Console)...
  6. linux下tomcat开启远程调试
  7. [HDOJ5289]Assignment(RMQ,二分)
  8. 白鸦:我印象中的Keso
  9. CIF、DCIF、D1分辨率
  10. 场景编辑器开发第五天,设计架构重回flash,很多问题不是出在技术上而是策划上
  11. 计算机桌面截屏快捷键,关于电脑屏幕截图的快捷键是什么
  12. docker 常用命令
  13. 程序员除了去上班还能怎样赚钱?
  14. 大一期末项目:学生管理系统
  15. 【CSS3】一文搞懂盒子模型
  16. AI公开课:19.05.30 瞿炜-新东方AI研究院院长《做懂教育的AI:把未来带进现实》课堂笔记以及个人感悟
  17. 《口算大作战 概念版》功能规格说明
  18. FPGA学习笔记2.2——用Verilog实现七段管的工作逻辑
  19. Android开发学习之探究服务
  20. c语言航班信息查询系统 程序,航班查询系统C语言源程序.doc

热门文章

  1. Django处理MySQL事物的用法
  2. 记录一次线上事故:SparkStreaming 写入 Hive 延迟
  3. Spring(1)-IOC
  4. PAT1015 德才论(C++)
  5. ML《集成学习(一)Bagging 和 Random Forest》
  6. Markdown--绘制流程图(flowchart)_验证
  7. OpenCV3.4.1+opencv_contrib编译:windows10
  8. Ubuntu su: authentication failure切换用户失败
  9. Golang练习题(自己认为比较不错的)
  10. SLAM - 01 - 分类