报表设计
- 目录
- 概述
- 需求:
- 设计思路
- 实现思路分析
- 报表设计,流程运维
- 系统(三元log)
- 数据源管理和维护
- 是否:debug状态. 0 表示不是, 1 是,如果系统发布后,请将此修改成0,以提高执行效率。
- 在流程运行结束后,是否要删除流程注册表的数据
- 是否启用制度
- 参考资料和推荐阅读
Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.
目录
概述
需求:
设计思路
实现思路分析
报表设计,流程运维
系统(三元log)
三员日志:
我们把能够查看日志的人员分为三个角色,分别是:系统管理员、安全员、审计员.
系统管理员职责是:xxxxx.
系统管理员:admin 查看系统配置信息日志
安全员:security 查看用户和审计员的所有操作日志 操作是已阅
审计员:audit 查看安全员和系统管理员的操作日志 操作是已审
logType 日志类型
logMsg 操作日志的内容
userNo 处理人
查询界面.
查询日志的页面 WF/Comm/Search.htm?EnsName=BP.Sys.UserLogs
实现方式.
通用使用方法是 WF/Comm/Gener.js 中UserLogInsert(logType, logMsg, userNo)
如果安全员、审计员需要处理的操作可以使用批处理 页面 WF/Comm/Batch.htm?EnsName=BP.Sys.UserLogs
数据源管理和维护
数据源配置说明:
SqlServer连接串配置示例:
Password=XXX;Persist Security Info=True;User ID=sa;Initial Catalog=XXX;Data Source=XXX;Timeout=10;MultipleActiveResultSets=true
MySql连接串配置示例:
Data Source=XXX;Port=3306;Persist Security info=True;Initial Catalog=XXX;User ID=root;Password=XXX;Charset=utf8;Allow User Variables=True;
BP架构
基础架构:
BP框架形成于2002年,历经了众多项目的产品的考验稳定、高效、快速、成熟、可靠。
BP框架采用面向对象的思想、架构的灵魂是ORM,采用代码优先的策略,所有的应用都围绕ORM映射开展,比如对实体表的增删改查。
BP框架有一套丰富开发demo对于一个初级开发者使用2-3天就可以顺利掌握该框架的使用,架构浅显易懂、例子很多,容易上手。
BP框架是一个强制约定、具有较高的限定性、强约束的框架,只要您遵守开发规范,就可以编写符合BP架构的系统,而这个系统都可以被任何使用BP架构的程序员解读您的代码逻辑,真正的做到代码编写,千人一个风格,而非千人一个风格。努力提高项目、产品的可持续性可维护性,可读性。
对于整体系统采用代码优先的策略,数据表自动创建,新增加的字段自动更新,字段长度变化,自动更新。极大的减轻了数据库的维护压力。
使用BP框架可以方便的、优雅的书写您的业务逻辑,让您的代码更容易实现业务逻辑而无需编写SQL,还可以提高您对面向对象思想的理解与认知。
BP框架提供了丰富的功能组件,让系统的实现用户的页面功能简单,风格统一、直观,比较常用的几个组件如下:
查询组件:可以实现实体的增删改查,可以实现,多条件查询,数据导入导出。
分析组件:可以实现一个实体内的所有外键、枚举字段的分组,可以分析所有的数值类型的字段进行求和、求平均、求最大最小的分析。
在前端UI开发技术发展迅速的今天,BP架构与时俱进,可以支持全栈开发,极大的节省工作量。
致BP框架的使用者
稳定成熟的开发架构是产品或者项目走向成功的保障。
任何一个软件公司在长期的项目研发,产品研发的过程中,都会积累一些可重用性的代码,目的是为了解决重复性的劳动,我们称为开发框架。
同样chichengsoft也是如此,我们的框架历经了多个项目的历练,稳定性、可靠性、灵活性都有保障。Ccflow, ccoa, ccgpm , ccsso都是基于bp框架开发。
对于驰骋公司的任何员工,可以修改、扩展、提出改进意见但不能不遵守BP的开发规范。
概要介绍:
框架的基类继承图
BP框架命名规范
BP框架的命名规范,包括了类库的命名规范、类、字段。
类库的名称格式必须是以BP+”.”+”类库名称” ,比如:BP.OA , BP.GPM ,编译后生成BP.OA.dll, BP.GPM.dll,否则不会被BP框架所反射、所解析。
类的命名空间必须是BP + 模块名称,比如 BP.OA 存放OA的类库,BP.Port存放组织结构类库。
类的命名首字母必须大写,类的名称对于常见的可以简写,比如Dept, Emp,Station。完整的类名为BP.Port.Dept, BP.Port.Emp, BP.Port.Station.对于是多个单词组成的实体每个单词需要首字母大写,比如:BP.Port.EmpStation人员与岗位的对应。
类属性的命名必须是首字母大写,比如:Tel, Email,Addr, PC。如果是外键基本上需要FK_ 开头,比如:FK_Emp, FK_Dept, FK_Station。如果是枚举,则建议使用Is开头比如:IsPass, IsEnable。
数据表的命名:该对应类的命名空间+“_”类名,比如:Port_Dept, Port_Emp,Sys_Enum。字段的命名与该表对应的类的属性命名一致。
全局配置文件:
Java的全局配置
文件位于 D:\JFlow\jflow-web\src\main\resources\jflow.properties:
va的全局配置
文件位于 D:\JFlow\jflow-web\src\main\resources\jflow.properties
#/* 说明:
#1, 在新建流程的时候选择自己的数据库服务器,并创建一个空白的数据库.
#2, 把其他的数据库服务器使用#号屏蔽掉.
#3, 系统支持sqlserver,oracle,mysql 三种数据库.
#*/
#oracle数据库配置
#AppCenterDBType=oracle
#AppCenterDBDatabase=jflow
#AppCenterDSN=jdbc:oracle:thin:@140.23.236.168:1521/myorcl
#JflowUser=jflow
#JflowPassword=jflow
#JflowTestSql=select 1 from dual
#mssql数据库配置
AppCenterDBType=mssql
AppCenterDBDatabase=JFlow6
AppCenterDSN=jdbc:jtds:sqlserver://127.0.0.1:1433/JFlow6;useLOBs=false
JflowUser=sa
JflowPassword=ccflow
JflowTestSql=SELECT ‘AA’
#运行类型: 0=单机版, 1=集团版, 2=SAAS模式
CCBPMRunModel=0
#集团岗位模式: @0=一套组织一套岗位, @1=所有的组织一套岗位.
GroupStationModel=1
#KingBase数据库配置
#AppCenterDBType=KingBase
#AppCenterDBDatabase=JFLOW2
#JflowDriver=com.kingbase8.Driver
#AppCenterDSN=jdbc:kingbase8://112.125.2.179:54321/JFLOW2
#JflowUser=SYSTEM
#JflowPassword=123456
#JflowTestSql=SELECT ‘AA’
#消息委托执行的url.
HandlerOfMessage=http://localhost:8080/App/HandlerOfMessage.do
#服务器的URL,用于cs流程服务中获取url信息,来执行流程事件
HostURL=http://localhost:8080/jflow-web
#获取服务器的绝对地址如D:/SpringBoot
ServicePath=D:/JFlowSpringBoot/jflow-web/
#附件保存位置
SavaPath=Temp/App/
#SDK表单上服务器地址,应用到使用ccflow的时候使用的是sdk表单,该表单会存储在其他的服务器上.
SDKFromServHost=127.0.0.1
#国家铁路局设置取消默认选择人
CustomerNo=GJTLJ
#用于组织系统集成:更新被集成的系统的登录用户表信息,当前操作员所在的部门,组织,SID.
UpdateSIDAndOrgNoSQL=UPDATE Sys_User SET company_id=‘@OrgNo’,SID=‘@SID’,office_id=‘@FK_Dept’ WHERE login_name=‘@No’
#组织结构数据模式, 0=OneOne模式(一个用户一个部门多岗位) 1=OneMore模式. 一个用户多个部门多岗位.
OSModel=1
#组织结构数据来源. 0=通过数据库,1=通过websercices,2=AD
OSDBSrc=0
#是否在已完成与在途中显示抄送
IsAddCC=0
#******** BP框架的通用配置部分 ************************************************************
是否:debug状态. 0 表示不是, 1 是,如果系统发布后,请将此修改成0,以提高执行效率。
IsDebug=0
在流程运行结束后,是否要删除流程注册表的数据
#说明:对于数据量较大的用户就删除,已经完成的流程从流程数据表或者V_FlowData访问,不大的用户就不要删除.
IsDeleteGenerWorkFlow=0
#是否是集团使用
IsUnit=0
#富文本文件上传位置
RichTextBoxAttached=\DataUser\RichTextBoxAttached\
ChartImageHandler=storage=file;tiemout=20;dir=~/DataUser/TempImageFiles/
#******** CCFlow应用配置部分 ************************************************************
#辅助管理员
adminers=admin,system,
#用户信息显示格式 @0=UserID,UserName@1=UserNo,@2=UserName
UserInfoShowModel=0
#是否为流程增加一个优先级
IsEnablePRI=0
#是否启用共享任务池
IsEnableTaskPool=1
#是否启用草稿
IsEnableDraft=1
#是不是BS系统结构(1代表是 0代表不是)
IsBSsystem=1
#是否检查树形表单为空的逻辑(为测试所使用,模式为1)
IsEnableCheckFrmTreeIsNull=0
是否启用制度
IsEnableZhiDu=0
#是否启用数值类型为空值,在一些工作环境下,
#数值类型的数据如果用户不输入就默认为null,显示时也要显示"“,
#而非默认为0。如果要启用这个环境下的应用就需要设置0,默认为0.
IsEnableNull=1
#可以打开屏蔽的关键字处理的类型,用于多附件处理屏蔽的关键字的打开控制: doc,docx,pdf, 注意要小写.
OpenTypes=doc,docx,pdf,xls,xlsx
#分页数据大小,每页显示的数量.(不要低于5)
PageSize=15
#为ddl标签的元素最大显示行数,超过则显示”…"按钮
MaxDDLNum=12
#是否启用消息机制
IsEnableSysMessage=1
#是否启用检查用户的状态
IsEnableCheckUseSta=0
#如果把ccflow放入前台应用程序的跟目录下配置信息路径
DataDirPath=WF
#用户数据路径
DataUserDirPath=
#应用程序目录
CCFlowAppPath=/
#是否显示用户名与在轨迹节点里,默认为1.
FlowDesignerIsShowUserNameIsNode=1
#是否启用开始与虚拟节点,默认为1.
FlowDesignerIsEnableStartEndNode=1
#发送邮件的设置,为流程服务设置的邮件发送。
SendEmailHost=smtp.tom.com
SendEMailPort=25
SendEmailAddress=ccbpmtester@tom.com
SendEmailPass=ccbpm123
#是否启用ssl 加密? 有的邮件服务器不需要加密,就设置为0.
SendEamilEnableSsl=1
#默认语言 CH 为简体中文,其它语言请参考枚举
SysLanguage=CH
#初始化的数据库缓存池数量根据自己的服务器性能,与访问者多少的需要,设置相应的参数,以提高并发访问效率.
InitConnNum=10
#系统编号:不要修改它.
SysNo=CCFlow
SysName=驰骋工作流程管理系统
#客户编号:此编号用户处理不同的客户个性化的要求.
CustomerName=济南驰骋信息技术有限公司
#每次取最大数据行数(不要修改)
TopNum=999999
#群集IP: 对于群集有效
CIP=127.0.0.1
#屏蔽的关键字ftp服务器配置:如果没有用到就可以忽略掉.
FTPServerType=FTP
FTPServerIP=ccflow.org
FTPUserNo=FtpTest
FTPUserPassword=asdfasd3**$232d00932a1ldw
#附件上传是否加密 1 加密
IsEnableAthEncrypt=0
#文件是否上传到FTP
IsUploadFileToFTP=0
#服务信息: 当程序出现异常就会显示该信息,以方便通知管理员处理.
ServiceMail=ccflow@ccflow.org
ServiceTel=0531-82374939
#用来惟一标识用户,主要用来根据不同的用户显示不同的Logo
CompanyID=CCFlow
About=济南驰骋信息技术公司研发@2003-2018
#使用的服务器tomcat,jetty
Service=tomcat
#FTP 相关的
#在FTP上的惟一标识,最好换成公司或个人的英文名(只有ccflow的VIP客户才允许)
UserIdentifier=CCFlow
#单独运行模式Single, 域运行模式Domain.
AppCenterDBModel=Single
#----------------------------------------------------------------------------------------
ShortMessageWriteTo=3
IsEnablePasswordEncryption=0
PasswordEncryptionType=0
#PDF打印是否显示水印
IsShowShuiYin=0
#PDF打印是否显示二维码
IsShowQrCode=1
#消息接口地址
HandlerOfMessage=http://localhost:8089/jflow_web/ControllerOfMessage/SendMessage
#微信集成企业微信号
#企业标识
CorpID=wx8eac6a18c5efec30
#帐号钥匙
AppSecret=kQeuCyqgPis2LOkqMr-xH5Yf1qovPynlxcT31GyRvsM
#Token
WeiXinToken=PV3LFeLOmoFfjVOFDE
#应用ID
AgentID=1000006
EncodingAESKey=iFYyfy9V7YJyqMz5UEYvMrvM8wE4E7PoRbqSKUWit2G
#WeiXin_AgentWelCom
#WeiXin_MessageUrl
#钉钉集成
Ding_AgentID=314550956
Ding_AppKey=dingaii2edrlskctbobm
Ding_AppSecret=l1C-c3a25Jed8BEzXAGEN0yHOETsdBpYkzCEfuXPntPWNSG2nR-NfE1UX4RmP5YN
Ding_CorpID=dingee00a82521f43e29
#Ding_SSOsecret=
#Ding_MessageUrl
C#的全局配置
文件位于web.config.
<add key="AppCenterDSN" value="Password=sss;Persist Security Info=True;User ID=sa;Initial Catalog=CCFlowCloud;Data Source=demo.ccflow.org;Timeout=10;MultipleActiveResultSets=true" />
<add key="AppCenterDBType" value="MSSQL"/>
<!-- 版本 0=单机版,1=集团版,2=SAAS. -->
<add key="CCBPMRunModel" value="2" />
<!-- 是否启用数据验证 -->
<add key="IsEnableVerifyData" value="0" />
<!-- 消息委托 url 的连接. -->
<add key="HandlerOfMessage" value="http://localhost:2296/App/HandlerOfMessage.aspx" />
<!-- 客户编号:此编号用户处理不同的客户个性化的要求. -->
<add key="CustomerNo" value="AXD" />
<add key="CustomerName" value="济南驰骋S" />
<!-- 是否启用会签待办列表, 如果启用了,主持人会签后就转到了HuiQianList.htm里面了. -->
<add key="IsEnableHuiQianList" value="0" />
<!-- ********************************** AD域的相关配置 ********************************** -->
<!-- 域:ADPath 这里仅仅配置IP地址. -->
<add key="ADBasePath" value="LDAP://xxxxx.ccflow.org" />
<add key="ADPath" value="chichengsoft" />
<add key="ADUser" value="administrator" />
<add key="ADPassword" value="xxxxxx" />
<!-- 回话时长分钟 cookies 的会话时长. -->
<add key="SessionLostMinute" value="5000000" />
<!-- 是否启用密码加密. -->
<add key="IsEnablePasswordEncryption" value="1" />
<!-- 短消息写入类型: 0=写入Sys_SMS表 1=写入丁丁 2=写入微信 3=写入指定的Webservice接口
说明:
1, 消息发送系统都会写入Sys_SMS表中里面去,该类位于 BP.WF.SMS
2, 在该类的AfterInsert方法里
-->
<add key="ShortMessageWriteTo" value="3" />
<!-- 发送邮件的设置,为流程服务设置的邮件发送,如果需要发送邮件需要ccflow的服务启动。 -->
<add key="SendEmailHost" value="smtp.ym.163.com" />
<add key="SendEmailPort" value="25" />
<add key="SendEmailAddress" value="ccbpmlover@ccflow.org" />
<add key="SendEmailPass" value="ccbpmlover" />
<!-- 在会签的状态下是否允许撤销? -->
<add key="IsEnableUnSendWhenHuiQian" value="1" />
<!-- 是否启用ssl 加密? 有的邮件服务器不需要加密,就设置为0.
注意:很多朋友配置不成功就是因为此参数gmail为true,大多的smtp服务器是false.-->
<add key="SendEmailEnableSsl" value="0" />
<!-- 附件的FTP 服务器的配置(如果上传附件需要存储到ftp服务器上) -->
<add key="FTPServerIP" value="ccflow.org" />
<add key="FTPUserNo" value="FtpTest" />
<add key="FTPUserPassword" value="asdfasd3**$232d00932a1ldw" />
<!--附件上传是否加密 1 加密-->
<add key="IsEnableAthEncrypt" value="1" />
<!-- 用户信息显示格式 @0=UserID,UserName@1=UserNo,@2=UserName 0=zhangsa,张三. 1=zhangsan, 2=张三. -->
<add key="UserInfoShowModel" value="0" />
<!-- 是否:debug状态. 0 表示不是, 1 是,如果系统发布后,请将此修改成0,以提高执行效率。 -->
<add key="IsDebug" value="0" />
<!-- 是否:自动测试模式. 0-不是, 1 -是,注意:系统发布后,勿必将此修改成0,否则可能影响部分功能使用(2017-09-08暂时仅影响VSTO插件功能)。 -->
<add key="IsAutoTesting" value="0" />
<!-- 是否启用共享任务池, 请参考操作手册中的多人处理模式, 当一个节点为共享模式时,-->
<add key="IsEnableTaskPool" value="1" />
<!-- 是否启用草稿 -->
<add key="IsEnableDraft" value="1" />
<!-- 是否检查树形表单为空的逻辑(为测试所使用测试的自动运行,默认为1) -->
<add key="IsEnableCheckFrmTreeIsNull" value="1" />
<!-- 是否启用数值类型为空值,在一些工作环境下,数值类型的数据如果用户不输入就默认为null,显示时也要显示"",而非默认为0。如果要启用这个环境下的应用就需要设置0,默认为0. -->
<add key="IsEnableNull" value="1" />
<!-- 是否启用消息机制,如果启用产生的消息就会写入Sys_SMS表里. -->
<add key="IsEnableSysMessage" value="0" />
<!-- 是否启用检查用户的禁用非禁用状态,如果是1,则当用户被禁用后,系统就会立刻生效. -->
<add key="IsEnableCheckUseSta" value="0" />
<!-- 服务器的URL,用于cs流程服务中获取url信息,来执行流程事件. 调用datauser\*.* webservices的接口. -->
<add key="HostURL11" value="http://www.ccbpm.cn/" />
<add key="HostURL" value="http://localhost:2296" />
<!--移动端服务器地址-->
<add key="MobileURL11" value="http://www.ccbpm.cn/" />
<add key="HostURL" value="http://localhost:2296" />
<!-- SDK表单上服务器地址,应用到使用ccflow的时候使用的是sdk表单,该表单会存储在其他的服务器上.-->
<add key="SDKFromServHost" value="http://127.0.0.1:8158/" />
<!-- 与ccflow流程服务相关的配置: 执行自动任务节点,间隔的时间,以分钟计算,默认为2分钟。-->
<add key="AutoNodeDTSTimeSpanMinutes" value="2" />
<!-- BaseUrl, 此设置会用到CS程序中,用于执行URL. -->
<add key="BaseUrl" value="http://localhost:13432" />
<!-- 默认语言 CH 为简体中文,其它语言请参考枚举 -->
<add key="SysLanguage" value="CH" />
<!-- 系统编号:不要修改它. -->
<add key="SysNo" value="CCFlow" />
<add key="SysName" value="驰骋工作流引擎ccbpm6" />
<!--打印水文:用于表单生成PDF文件时,文件模板内容-->
<add key="PrintBackgroundWord" value="开源驰骋@Opencc" />
<!-- 每次取最大数据行数(不要修改) -->
<add key="TopNum" value="99999" />
<!-- 默认每页数据行数(不要低于5) -->
<add key="PageSize" value="15" />
<!--服务信息: 当程序出现异常就会显示该信息,以方便通知管理员处理. -->
<add key="ServiceMail" value="ccflow@ccflow.org" />
<add key="ServiceTel" value="0531-82374939" />
<!-- 与时效有关的考核. AMFrom上下班时间. 节假日设置流程设计器->系统功能->系统设置->节假日设置. -->
<add key="AMFrom" value="08:00" />
<add key="AMTo" value="12:00" />
<!-- 下午下班时间 -->
<add key="PMFrom" value="14:00" />
<add key="PMTo" value="18:00" />
<!-- 一天有效的工作小时数(中午工作小时+下午工作小时) -->
<add key="AMPMHours" value="8" />
<!-- 中午间隔的小时数(是 PMFrom -AMTo ) -->
<add key="AMPMTimeSpan" value="2" />
<!-- VSTO插件版本号 -->
<add key="VstoExtensionVersion" value="1.0.0.10" />
参考资料和推荐阅读
- https://gitee.com/opencc/JFlow/wikis/%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86/%E7%B3%BB%E7%BB%9F(%E4%B8%89%E5%91%98)%E6%97%A5%E5%BF%97
欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~