port="80"minProcessors="5"maxProcessors="75"
2)数据库连接未成功:
请确认数据库配置文件的修改是否正确
5、启动成功,打开IE浏览器,localhost/flowshop进行访问FlowShop系统
系统预设的操作员有:
1)系统管理员为(admin,密码=admin),可以进行“表单定义”、“对象管理”、“功能定义”、“菜单定义”等功能;
2)用户主管(user,密码=user),可以进行“组织机构管理”对操作员进行增删改以及配置“角色”和“权限”;
3)职员(zhiyuan,密码=zhiyuan),可以进行“新建表单”等日常处理功能;
系统管理员可以对系统功能进行扩展:
1)根据表单定义信息进行“功能定义”
2)定义的“功能”可以关联和增加新的“菜单”
6、系统已经包含“帮助文档”,见系统菜单下的“操作手册”
2.2FlowShopv1.0数据库安装说明
1、安装文件后,请加载数据库(MSsqlServer2000)文件
1)\database\flowshop_Data.MDF
2)\database\flowshop_Log.LDF
3)具体加载见sqlserver的帮助:
a、运行sqlserver的企业管理器
b、选择数据库服务器
c、选择“数据库”
d、右键,选择“所有任务-附加数据库”
c、选择数据库文件(上述2中database目录下的文件)
e、点击确定
2、需要编辑数据库连接池的参数文件
\server\flowshop\deploy\mssql-service.xml
具体修改值如下:
1)数据库的连接地址和数据库名称(以下[]之间的容需要修改):
jdbc:
microsoft:
sqlserver:
//[localhost]:
1433;DatabaseName=[flowshop];SelectMethod=cursor
2)用户名和密码(以下[]之间的容):
[sa]
[sa]
3)数据库连接池大小(最低和最接数)的修改:
1
5
3、关于SQLSever2005说明:
1)必须启动TCP/IP的服务,选择“服务和连接的外围应用配置器”,在“远程连接”中选择“同时使用TCP/IP和namedpipes(B)”,然后点“应用”。
2)关于数据库连接池的配置,上述4的参数文件中修改:
jdbc:
microsoft:
sqlserver:
改为:
jdbc:
sqlserver:
.microsoft.jdbc.sqlserver.SQLServerDriver改为:
.microsoft.sqlserver.jdbc.SQLServerDriver
3系统操作说明
登录FlowShop安装创建的服务器:
localhost/flowshop
系统管理员admin的口令admin登录,可以进行系统的基本信息设定、表单定义等;
3.1右上角为登录作业功能区
1.1、1.顶部为企业信息广告栏(缺省为关闭,可以双击右上角或者双击“分割线”进行开启和关闭)
1.1、2.底部为系统信息提示栏(开启关闭同上)
1.1、3.左侧为菜单栏(开启关闭同上)
3.2中间及右侧合并为主工作区
3.2.1登录后会出现“待办事项区”,点击任务名称,右边会出现具体的任务单证信息,双击任务单证可以直接进行单证操作
如果长时间为处理,需要跟新“待办事项”,可以点击底部工具栏
中的“刷新”
3.2.2点击菜单功能,主工作区出现对应的工作界面
3.3主工作区的功能菜单有:
●保存(保存当前操作的单证信息,界面不换)
●提交(保存并提交相关单证给下一步,界面自动关闭)
●驳回(审核不通过驳回原提交人,界面自动关闭)
●打印页面(打印当前界面显示的容)
●格式打印(以预先设定的格式进行单证容的打印)
●操作轨迹(全部关于当前单证的操作轨迹查询)
●操作演示(系统会播放事先准备好的操作演示动画)
●点击页面“X”可以关闭当前单证的操作
4基本信息
4.1商品管理
4.2客户管理
4.3行政区域
4.4业务员管理
4.5仓位管理
4.6业务员职位
5系统管理
5.1组织机构设定
5.2权限角色设定
点击“角色”,设定对应组织结构下的权限角色(功能权限的集合):
5.3角色权限选择
点击“功能”,对权限角色进行功能的选择:
5.4操作用户设定
在选择对应的组织结构后,点击“人员”,对机构下的人员进行设定:
5.5用户角色选择
选择人员,点击“角色”,设定机构人员(操作员)的权限集合(角色):
5.6用户权限选择
选择人员,点击“功能”对人员设定特殊的功能权限,在选择“角色”的基础上进行增加和删除功能权限:
5.7重置用户密码
在组织机构下选择人员,点击“重置密码”;
5.8调入
在组织机构下,点击“调入”,可以从其他组织机构下选择相关人员移入当前机构下;
5.9操作人员其他信息
其他信息中,可以选择“所属仓库”,表示,当前操作员只能操作该仓库的单据;
6单证流程定义
6.1定义表单属性
启动系统提供的《表单定义》菜单,点击对应的单证名称,系统自动显示该单证的流程定义图形;
1.点击图形界面顶部的功能条可以进行如下处理:
2.保存:
保存对单证定义信息的修改,包括:
信息属性、节点流程的全部定义信息;
3.新建:
增加表单,系统提供一个空白的流程定义,供使用者自行定义;
4.撤销、重复、删除、剪切、复制、粘贴:
通用的文字或图片编辑处理功能;
5.预览、打印:
可以对当前定义的流程进行预览或打印;
6.点击图形界面左侧的功能条可以进行如下处理:
7.连线:
工作流程的开始节点至到达节点;
8.开始、结束:
就是工作流程的开始和结束节点,鼠标单击此图标,然后在图形界面的编辑围再单击,就可以增加一个节点,每个流程必须且仅有一个开始和一个结束;
9.人工操作、自动过程、子流程:
增加的节点分别为人工操作(就是有输入界面的操作功能)、自动过程(由程序员编制的特定功能的程序,没有操作界面,只作后台数据处理)、子流程(为了不在一个图形上显示杂乱的流程,可以多级流程的形式标示);
10.或分支、与分支:
流程需要分开执行不同的任务节点,或分支是指可以任选一个下一步,与分支是指必须全部下一步都执行;
11.或汇聚、与汇聚:
与上述分支对应的汇聚,或汇聚是指,只要有一个任务到达次汇聚节点,就可以走下一步操作;与汇聚则不同,必须全部上一步的任务都到达此节点,才可以走下一步操作;
12.点击图形界面底部的功能条可以进行如下处理:
13.视图-放大、缩小、实际、自动:
点击不同的功能,可以对图形流程进行缩小、放大;
14.XML文本:
图形定义的文本结构信息,限程序人员核对图形设定信息用;
15.图形界面中个工作节点的操作:
点击各种节点,出现“十字架”时可以拖动和缩减图标大小;出现“菱形”时可以在两个节点之间增加“连线”;
点击出现“||”时可以拖动连线改变位置和改变拐点;
16.全部图标,出现“十字架”时,点击鼠标“右键”会出现菜单功能选择:
17.剪切、复制、粘贴、删除:
通用编辑功能;
18.字体:
改变图形界面显示的字体,包括:
字体名称、大小、粗体、斜体;
19.前置、后置:
当图形有重叠时,可以设定显示的层次关系;
6.2定义表单输入容
点击属性可以设定各个节点的具体信息:
6.3流程的总体属性
1)总体属性:
包括:
标题、编号规则、数据库表规则等待;
流程中用到的信息参数(单证元素):
定义该单据需要的数据表结构;
2)定义流程节点的输入界面格式
点击“编辑样式”,可以定义该工作节点的输入界面:
界面定义的功能操作同流程定义;
界面信息属性的类型包括:
表示:
文本、字符、数字、日期、表格;
表示:
系统里设定的基础信息对象、树节点、附件、审批意见、选项、按钮;
表示:
系统自动产生的单证基本特征信息,包括:
创建日期、创建人、编号、名称、任务ID;
表示:
界面上可以增加的其他容,包括:
标题(说明性文字)、图片、线框;
右键:
,对界面元素进行属性编辑;
界面信息属性包括:
标题、编辑权限、元素ID(单证流程定义的元素)、背景颜色、是否可以空、选项容()、如果是系统提供的树节点选择,属性如下:
注:
如果是选择审核人:
树对象名称必须=USERLIST;显示字段=UserName;
如果是系统基础信息对象时,具体属性如下:
6.4表格定义
选择“表格”类型的表单信息,右键单击“属性”:
填写相关表格信息:
标题、编辑权限、背景颜色、是否可空、边框,点击“编辑样式”可以定义详细的字段信息:
表格字段基本信息只能在“表单属性”里定义,这里可以指定表格字段显示的“标题”、表格长度、编辑权限等附加的输入格式信息;
如果字段是“选项”类型,则可以定义选项的容,格式见上图
如果字段是“表格”类型,点击“样式”可以定义“子表”的格式,定义要求同上。
6.5界面高级定义
6.5.1修改默认菜单
调用方式:
parent.window.*
1)setMenuText:
修改菜单标题,参数:
原标题,新标题;
2)addMenu:
增加菜单按钮,参数:
extJs的按钮对象;
3)removeMenu:
隐藏菜单按钮,参数:
原标题(多个用“,”分割);
6.5.2页面元素
1)系统界面函数在引用页面元素时可以从页面对象docElement中取道,如获得页面表格对象,表格定义的元素名称为goodsList,就可以用如下的语句得到:
docElement.goodsList.items.get(0)得到grid对象;
docElement.customer.items.get
(2).getValue()可以得到页面上关于客户选择的“客户名称”,.get(3).getValue()可以得到“客户ID”;
2)单个页面的系统变量:
i.TaskId:
当前操作的任务ID,调用方式:
”<%=taskId%>”
ii.docNo:
当前单证编号,调用方式:
”<%=docNo%>”
iii.docName:
当前单证名称,调用方式:
”<%=docName%>”
iv.docOwner:
当前单证的创建人,调用方式:
”<%=docOwner%>”
v.docDate:
当前单证创建日期,调用方式:
”<%=docDate%>”
vi.actId:
当前任务的操作节点ID,调用方式:
”<%=actId%>”
3)元素编辑事件:
如:
change:
function(){refreshFee();}//refreshFee为页面定义函数
4)未指定单证元素的输入输出字段:
必须输入“别名”:
6.5.3函数定义
创建“按钮”元素:
“编辑权限”选“瘾藏”,操作URL中输入函数代码,脚本中可以定义变量、方法(函数)、调用System提供的函数,常用的函数有:
1)System.runSql(sqlString,refreshFlag)
a)sqlString=要执行的sql语句;
b)refreshFlag=是否不进行缓存,每次都执行数据库查询;
c)返回一个数组的记录集,如result[0].docNo表示第一条记录的docNo值;
2)System.selectRecords({})
a)执行一个查询,显示结果在新的窗口上,供选择;
b)参数:
{sql:
sqls,headers:
[{header:
'批次',dataIndex:
'batchNo'},{header:
'商品性质',dataIndex:
'stocksType',renderer:
function(v,n,r){return(v==1?
'正常品':
v==2?
'残次品':
'赠品')}},{header:
'库存数量',dataIndex:
'balanceQuantity',renderer:
Ext.ux.renderer.QtyRender('unitRate','unitName')}],filterField:
"batchNo",singleSelect:
true,afterEnter:
function(rs){//对选择的记录集进行操作;}})
3)System.InterfaceManager.call("taskRefresh"):
刷新“待办事项”;
4)System.otherCom.conn.request({})
a)执行后台处理
b)参数:
({url:
"documentAction.get",baseParams:
{method:
"transforTask",checkFlag:
chFlag,saveElement:
"orderNo",saveValue:
indentnos.join(','),stateDescription:
text,taskId:
ids.join(','),docNo:
docs.join(',')},Silence:
false,charSet:
"gb2312",method:
"post",success:
function(response){//成功执行后台处理后的操作},failure:
function(){Ext.Msg.alert('单据处理','汇总配货失败!
');}})
5)System.getPrinter().print("IndentPrint.get",{})
a)调用打印程序
b){clickType:
'print',printerName:
'',docNo:
result[0].parentNo,printModel:
docNo,indentType:
iType,trCount:
1,UriBase:
uribase,check:
"check",indentList:
"'"+docNo+"'",indentNo:
docNo}
6)System.alert(msg:
“提示容”,fn:
回调函数);
7)System.prompt(msg:
“提示容”,fn:
回调函数,value:
缺省值)
8)System.confirm(msg:
“提示容”,fn:
回调函数);
定义单证处理回调函数:
1)window.saveClick=function(){//输入在保存数据时的操作,系统将不执行缺省的保存操作}
2)mitClick=function(){//输入提交数据的操作,系统不执行缺省的提交操作}
3)window.rollbackClick=function(){//输入驳回的操作,系统不执行缺省的驳回操作}
4)window.beforeSave=function(){//保存单证数据之前执行的代码}
5)window.beforeCommitClick(){//同beforeSave}
6)window.beforeCommit(){//提交之前执行的代码,保存操作时不执行改代码}
7)beforeAdd_表格元素名称=function(){//输入表格增加记录之前需要操作的代码};
8)afterAdd_表格元素名称=function(){//输入表格增加记录之后需要操作的代码};
9)beforeDel_表格元素名称=function(){//输入表格删除记录之前需要操作的代码};
10)afterDel_表格元素名称=function(){//输入表格删除记录后需要操作的代码};
11)
定义单证处理回调变量:
1)window.printDocument:
是否打印当前单证的父流程单证(true、false)
2)window.printNewDocument:
是否打印当前的单证(true、false)
3)window.printModel=“”:
打印单证时选择的模版,空为缺省模版(单证编号前缀.jasper)
4)window.noCancel:
是否允许驳回(true、false)
6.5.4定义表格函数
1)计算公式
a)字段名称:
“表达式”;如:
amount:
’Number(quantity*price).round
(2)’
b)字段名称:
函数;如:
amount:
function(g,r,n){
if(docElement.parentNo.items.get(0).getValue().substring(0,2)!
='PD')r.set('amount',Number(r.data['price']*r.data['confirmQty']).round
(2));}
c)多个计算公式之间用“,”隔开
2)选择事件
直接输入选择当前记录时的操作代码,如:
rowselect:
function(m,row,rec){//自定义代码},rowdeselect:
function(m,row,rec){//自定义代码}
3)编辑后回调函数
直接输入脚本,如:
beforeEdit:
function(e){
if(e.field=='price'){
varr=e.record;
//脚本
}
}
4)编辑后回调函数中修改表格单元格样式
var