统计
统计,是非常有用的一个效率工具,只是目前在中小微企业中,连基础的数据采集都没做到,所以在使用方面如何能更有效的让用户来使用,笔者也无太多经验。因此这个功能,只能简单讲述目前已经做到了什么样,如果有开发者有这方面的需要,可联络笔者协作支持。
和简易流程、业务规则一样,统计也依然是用文本定义的,如demo中所演示的:
@myModule.statistics('订单统计'.decode('utf-8'),'1M',False)
def statisticsSO():
'''
订单数 classify 总数 when salesOrder:field.State == '交付中' ;
订单数 classify 按销售统计数 when salesOrder:field.State == '交付中' 则 cache.ClassifyName = people:field.Name ;
订单数 classify 按客户统计数 when salesOrder:field.State == '交付中' 则 cache.ClassifyName = salesOrder:field.Custom ;
销售额 classify 总数 when salesOrder:field.State == '交付中' 则 cache.StatValue = salesOrder:field.Amount ;
销售额 classify 按销售统计 when salesOrder:field.State == '交付中' 则 cache.ClassifyName = people:field.Name , cache.StatValue = salesOrder:field.Amount ;
销售额 classify 按客户统计 when salesOrder:field.State == '交付中' 则 cache.ClassifyName = salesOrder:field.Custom , cache.StatValue = salesOrder:field.Amount;
'''
pass
这里定义的是对订单分别按订单数和销售额进行统计,而这两项统计还分别统计了总数、按销售统计数、按客户统计数这三个类别。
统计也是支持条件检测的,也就是说,我们可以对筛选出来的、符合要求的数据对象进行分别统计。
一条统计规则型如:
统计名 classify 分布名 when (对象类:)数据类型名.数据名 比较符号 表达式 则 赋值语句
其中的英文是关键字,如果统计时需要用到多个数据对象,则用这些对象的类名加以区分,而这里的类名是支持继承的,如上述的演示中,使用的是salesOrder,但大家如果看过data文件中的定义,就知道extOrder类是继承自salesOrder的,所以这条规则也同样适用于extOrder类型的订单。
数据类型名包括:
-
cache:本规则表内作为临时缓存使用
-
input:应用本规则表的capa的输入项
-
ctx:应用本规则表时的上下文
-
extand:某数据对象的现场数据集【请参考之前简易流程中的说明】
-
field:某数据对象的字段【对应于数据表中的同名列】
-
method:该数据对象的java函数
-
attr:该数据对象关联的jxTMS内置的属性表
-
tag:该数据对象所标记的某种标记
-
Info:该数据对象的Info中的某个子对象
值比较符,就是等于【==】、不等【!=】、大于【>】、大于等于【>=】、小于【<】、小于等于【<=】、相似【like】,其中,相似意为左值是以右值开头的字符串。
表达式包括值的加减乘除等,因过于复杂,具体的语法以后会在线上编程手册中详细说明。赋值语句则是对数据对象等数据集合进行操作,同样因过于复杂,具体的语法也一同在线上编程手册中进行详细的说明。
此外,演示中,还使用到了两个预定义的辅助功能:
-
cache.ClassifyName:如果该值不为空【本演示中为销售名或订单中的客户名】,则读取【订单数.按销售统计数.ClassifyName的值】的统计项,然后为其Number加一,没有则创建该统计项;同样,读取【销售额.按销售统计.ClassifyName的值】的统计项,然后为其FloatNumber增加cache.StatValue的值,没有则创建该统计项
-
cache.StatValue:jxTMS默认统计的是发生次数,所以对于成交额这种数值型的统计,就需要通过cache.StatValue中转一下
由于在用@myModule.statistics进行修饰时声明了一个1M的时间段定义,所以这六条统计语句,其实是各自进行了两次统计,一次是总的统计,一次是分时段的统计,即【销售额.按销售统计】既将这个订单的成交金额统计到该销售的销售总额,还统计到该销售当月的销售额【'1M’是指令按月进行统计】。
大家可以用总经理账号【tms->导入文档模板->已经上传过的目前demo中的用户文件应将其替代掉importUser.xls,这个文件中的user5,登录名为user58429】登录后点击快捷功能树中的【销售订单->销售额统计图表】和【销售订单->销售额统计列表】来查看统计得到的数据。目前暂没想清楚基于时间的统计图表该如何展示:(
就统计列表来看,笔者认为统计功能本身已经没啥问题了,统计的简便性、灵活性、能统计到的数据都很让人满意,问题在于,对统计到的数据该如何使用,笔者还缺少经验,所以对统计到的数据如何做进一步的加工没有概念,就更无法开发相应的展示工具了。
目前,jxTMS已经打包为云服务器镜像,开发者开箱即用:
jxTMS-腾讯云市场