资源描述
TW_OO_DESIGN_DOC_1210-01A
Confidential
(秘密)
OA工作流引擎设计
说明书
Version 5.0
Written By TalkWeb
TALKWEB
湖南拓维信息系统股份 ,
All Rights Reserved
目录
1 引言 4
1.1 编写目标 4
1.2 缩略语 4
1.3 参考资料 4
2 软件结构 4
2.1 关键实现技术 4
2.2 引擎处理结构 5
3 引擎包含到数据名称规范 5
3.1 文件系统划分 5
3.1.1 文件区命名规范 5
3.2 数据库中表、字段命名规范 8
4 引擎异常处理机制 8
4.1 以前错误机制缺点 8
4.2 对错误机制改善方法 9
5 引擎服务类具体说明 10
5.1 类列表 10
5.2 引擎全部类关系结构图 10
5.3 类具体设计 11
5.3.1 功效类别层中类具体说明 11
5.3.2 步骤实例层中类具体说明 16
5.3.3 步骤逻辑处理层中类具体说明 21
6 具体类实现机制 29
7 数据库字典 30
7.1 ER图 30
7.2 数据字典 30
1. 主步骤实例表(T_WorkFlow_FlowMain) 30
2. 主步骤字段表(T_WorkFlow_MainField) 31
3. 主步骤附件列表(T_WorkFlow_MainAtt) 32
4. 步骤日志表(T_Flow_LogMsg) 32
5. 未结束步骤步骤日志信息表(T_Flow_LogStatus) 32
6. 未结束日志字段表(T_Flow_LogField) 33
7. 未结束日志附件列表(T_Flow_LogAtt) 33
8. 已结束步骤步骤日志信息表(T_Flow_EndLogStatus) 34
9. 已结束日志字段表(T_Flow_EndLogField) 34
10. 已结束日志附件列表(T_Flow_EndLogAtt) 35
11. 待办信息表(T_WorkFlow_Notify) 35
12. 在办信息表(T_WorkFlow_ZaiBan) 35
13. 用户公文邮件表(T_WorkFlow_UserMail) 36
14. 公文邮件字段表(T_WorkFlow_MailField) 36
15. 公文邮件附件列表(T_WorkFlow_MailAtt) 37
16. 需要修改表、视图说明 37
8 附注 38
8.1 步骤状态类型 38
8.2 处理标识 38
8.3 消息格式说明 38
8.4 和文件传输服务接口 41
8.5 对传阅修改说明 41
8.6 和其它外挂功效接口 41
1 引言
1.1 编写目标
本文档是完全参考中国联通总企业办公自动化系统工作流模块具体设计说明结合山西联通MSS系统建设现在来编写,而且在原有4.0版本基础上对工作流引擎基础结构及基础实现做了较大改善,软件开发人员在此基础上编写程序代码。
1.2 缩略语
WFE WorkFlow Engine 工作流引擎
1.3 参考资料
《步骤定义设计书》
《工作流处理系统设计说明书(v4.0)》
《中国联通总部OA系统设计变更提议》
2 软件结构
2.1 关键实现技术
采取.Net框架,用C#编写;
SQL SERVER数据库存放数据;
文件系统存放步骤中所带工作附件(用到自定义文件传输服务);
2.2 引擎处理结构
说明:
1. WEB上消息直接送到MSMQ Agent服务器上,由Agent上一个消息分发服务依据消息缓急程度,将消息送到工作流引擎服务器上,不一样队列中;(Agent服务器上分发服务另外设计开发)
2. 引擎服务器上开设多个队列,针对每个MSMQ,引擎服务全部开了专门线程对应处理;
3. 引擎服务在做处理时候,关键是和数据层文件服务器和数据库服务器交互;
4. 引擎服务在程序出现异常时候也有对应异常处理机制(具体机制后面会有具体说明)
3 引擎包含到数据名称规范
3.1 文件系统划分
文件系统分为五个区
盘符:\FileStore\Temp 临时区
盘符:\ FileStore \OAMail\ 公务邮件区
盘符:\ FileStore \backup\ 备份区
盘符:\ FileStore \Doc\ 文档归档区
盘符:\ FileStore \Mode\ 模板区(存放Word模板)
备注:以上命名必需和引擎服务配置文件保持一致
3.1.1 文件区命名规范
临时区、备份区、公文邮件区命名:企业命名以企业ID命名,部门以部门ID命名,时间以yyyyMM方法命名,步骤实例ID已经由工作引擎定义好了。附件命名以文件实际名称命名。备份区备份序号采取数字递增方法命名。
文档归档区命名:采取企业ID,部门ID命名企业文件夹和部门文件夹,时间以yyyyMM方法命名,全部文件夹及文件不能采取汉字方法命名,附件命名采取Guid方法命名,扩展名称保持原有扩展名。
Ø 临时区
Unicomgd
Temp
步骤实例ID
时间(年月)<拟稿时间>
部门ID
企业ID
文件实际名称+原扩展名
Ø 文档归档区
Unicomgd
Doc
时间(年月)<拟稿年月>
部门ID
企业ID
GUID+原扩展名
步骤实例ID
说明: 步骤结束后附件将归档到此处
Ø 备份区
Unicomgd
backup
步骤实例ID
时间(年月)<拟稿时间>
部门ID
企业ID
步骤处理序号
文件实际名称+原扩展名
步骤处理序号= T + 递增数字
=用户ID+yyyyMMddhhmmssmi
说明: 一个步骤实例每个走一个步骤就会在备份去存放一个备份,只到步骤实例结束后才由工作流引擎删除
Ø 公务邮件区
Unicomgd
OAMail
企业名称ID
步骤实例ID
传 阅
主抄送
文件实际名称+原扩展名
文件实际名称+原扩展名
年月
阅 办
文件实际名称+原扩展名
说明:公务邮件区为用户个人存放传阅文件、阅办文件和主送、抄送文件,在同一个步骤中,在传阅、阅办和主送、抄送时是多个人共享一份文件。
3.2 数据库中表、字段命名规范
1. 数据库表是以T_开头;
2. 数据库视图是以V_开头;
3. 数据库函数是以SF_开头;
4. 数据库存放过程是以SP_开头;
5. 每个表中字段,要以意思明确为标准;
4 引擎异常处理机制
4.1 以前错误机制缺点
引擎对于犯错消息,重新处理时间间隔太短。而对数据库压力很大时,频
繁数据库操作可能造成数据库死锁,超时等错误,对于这些错误系统自动恢复需要
时间较长,二者矛盾造成了过多工作流请求出现回滚。
4.2 对错误机制改善方法
对于可能出现异常错误,我们采取多级错误队列处理方法,对于不一样错误
队列分情况用不一样重试时间,确保每一个错误全部能够经过足够长时间进行尝试,从而尽可能避免因为数据库或其它系统资源繁忙造成引擎处理不过来而回滚。
具体错误处理机制图以下:
说明:
1. 消息首先被送到正常队列中,等候处理;
2. 当正常处理失败时,先送入异常处理队列1中,等候5分钟后处理该消息;
3. 当在异常处理队列1中处理失败时,先送入异常处理队列2中,等候10分钟后处理该消息;
4. 当在异常处理队列2中处理失败时,先送入异常处理队列3中,等候15分钟后处理该消息;
5. 处理时间间隔能够依据实际系统性能需要做对应调整;
6. 错误队列也能够经过配置文件来配置;
7. 对于数次处理也失败消息,保留到日志或数据库中,用另外监控程序做监控,等候修改后处理.
5 引擎服务类具体说明
5.1 类列表
类名
类说明
WorkEnginerCls.cs
工作流处理类(即单个线程),负责工作流处理
SocketCls.cs
文件处理类,负责向文件服务器发送指令,等候返回结果
ConstCls.cs
定义了整个工程全部需要用到常量和方法
DBDealCls.cs
数据库交互类,负责对数据库进行操作
MSMQCls.cs
负责对消息队列进行操作
SmsCls.cs
对短信处理类
WorkFlowDefineCls.cs
步骤实例基础信息定义类
WorkFlowCntrCls.cs
步骤实例基础信息控制类
StatusCls.cs
步骤中每个状态基础信息类
DisposalCls.cs
步骤中每个处理基础信息类
UserCls.cs
用户基础信息类
5.2 引擎全部类关系结构图
DBDealCls.cs
ConstCls.cs
MSMQCls.cs
SMSCls.cs
SocketCls.cs
功效类别层
WorkFlowDefineCls.cs
StatusCls.cs
DisposalCls.cs
UserCls.cs
步骤实例层
WorkEnginerCls.cs
逻辑实现层层
WorkFlowCntrCls.cs
5.3 类具体设计
5.3.1 功效类别层中类具体说明
5.3.1.1 ConstCls类
类名
ConstCls
父类名
责任描述
Ø 定义静态方法
Ø 定义全局常量(各个线程独自占有)
协同类
全局常量
类型
值
UrlCompart
char
‘#’
ConfigCompart
char
‘=’
C_User
char
‘;’
cntFileCompart
char
‘*’
C_Chr1
char
(char)1
C_Chr2
char
(char)2
C_Chr3
char
(char)3
C_Chr4
char
(char)4
C_Rep1
string
]#$!%[
C_Rep2
String
"]#$%!["
C_Rep3
String
"]$#!%["
C_Rep4
string
"]!#$%["
cntFileEnd
string
"\n"
cntFileQuit
string
"QUIT"
cntMSMQ
string
@"\private$\"
cntCFiles
string
"COPY"
cntDFiles
string
"MOVE"
cntMFiles
string
"MOVE"
C_PassDir
string
"传阅"
C_MotifDir
string
"主抄送"
C_TypeZhu
string
"主办"
C_TypeXie
String
"协办"
C_TypeYue
String
"阅办"
C_Compart
String
@"\"
C_DubCompart
String
"\\"
C_Udept
String
"`"
方法说明
方法名1
ResolveStr ()
类型
public static string[]
Description
字符串解析方法
Input
SrcStr,string型,需要解析字符串;Flag,char型,字符串分割符
Output
StrArr[] 解析后产生字符串数组
方法名2
WriteLog ()
类型
public static void
Description
当操作失败时,写犯错日志
Input
string LogMsg, 犯错信息 string FilePath 日志文件所在路径
Output
5.3.1.2 SocketCls类
类名
FileCntrCls
父类名
责任描述
Ø 提供指示文件服务器操作附件方法
协同类
ConstCls CnnSocket
方法说明
方法名1
DealFileSys ()
类型
Public bool
Description
发送命令到文件服务器
Input
Socket Skt,连接服务器SOCKET,string CmdFile 要操作文件命令行
Output
成功则返回TRUE,不然返回FALSE
方法名2
SendFileMsg ()
类型
public string
Description
和文件服务器建立连接,而且将指定操作送到文件服务器上,并等候服务器操作后返回结果。
Input
string AllDealFileStr 全部要发送命令组成一个字符串
格式是:命令1;命令2;。。。/n
Output
成功则返回TRUE,不然返回FALSE
5.3.1.3 DBDealCls类
类名
DBDealCls
父类名
责任描述
Ø 提供连接数据库方法
Ø 查询方法
Ø 事务实施方法
Ø 断开数据库方法
协同类
FileDealCls
方法说明
方法名1
DBDealCls ()
类型
public void
Description
类结构函数,建立数据库连接,实例化文件类。调用到了Open_Cnn
发生 错误时抛犯错误,让上一级处理
Input
string CnnStr 连接数据库字符串
Output
方法名2
Open_Cnn ()
类型
public void
Description
建立数据库连接
Input
Output
方法名3
Close_Cnn ()
类型
private void
Description
关闭数据库连接,释放连接实例
Input
Output
方法名4
Query ()
类型
public DataTable
Description
依据传入查询语句,得到一个统计集,并返回
Input
SqlStr, string型,查询语句
Output
类型 DataTable
方法名5
ExecuteTran ()
类型
public bool
Description
有事务处理方法
Input
SqlArr 字符串数组(包含要操作全部SQL语句),
Output
TRUE表示事务实施成功,FALSE表示实施失败
方法名6
ExecuteTran ()
类型
public bool
Description
有事务处理方法
Input
SqlArr 字符串数组(包含要操作全部SQL语句), 包含文件系统操作类型和所包含附件
Output
TRUE表示事务实施成功,FALSE表示实施失败
方法名7
RollBackFile ()
类型
public bool
Description
到犯错时需要恢复文件系统机制
Input
ArrayList AttachMentDeal 包含文件系统操作类型和所包含附件
Output
TRUE表示实施成功,FALSE表示实施失败
5.3.1.4 MSMQCls类
类名
MSMQCls
父类名
责任描述
Ø 创建消息队列方法
Ø 发送消息到队列方法
Ø 从指定队列中读取消息
Ø 删除指定名称消息队列方法
协同类
ConstCls
方法说明
方法名1
CreateMSMQ ()
类型
public bool
Description
在指定机器上创建指定名称消息队列
Input
MSMQPath string 消息队列名称
Output
TRUE 表创建成功,FALSE 表创建失败
方法名2
SendMsg ()
类型
public bool
Description
将指定消息发送到指定队列中
Input
MsmqPath string 消息队列路径,System.Messaging.Message ObjMsg 要发送消息对象
Output
TRUE 表发送成功,FALSE 表发送失败
方法名3
OnReceiveCompleted ()
类型
public void
Description
事件绑定具体方法
Input
Source 触发事件源 ReceiveCompletedEventArgs asyncResult 异步
Output
Object 返回读到消息
方法名4
DelMsmq ()
类型
public bool
Description
删除指定消息队列
Input
MsmqPath string 消息队列路径
Output
TRUE 表删除成功,FALSE 表删除失败
5.3.2 步骤实例层中类具体说明
5.3.2.1 WorkFlowDefineCls类
类名
WorkFlowDefineCls
父类名
责任描述
Ø 步骤实例基础信息类
协同类
ConstCls
属性
类型
说明
FlowID
string
步骤实例ID
Title
String
步骤实例标题
Action
String
动作处理标识
FlowTypeID
Int
步骤类型ID
FlowTypeName
String
步骤类型名称
Creator
UserCls
步骤创建者用户类
CreateTime
String
步骤创建时间
ParentWorkFlow
WorkFlowCls
父步骤类
FormClass
String
HuanJi
String
缓急程度
MiJi
String
密集程度
IS_PIGEONHOLE
int
是否归档标志
ModifyFlag
String
对应SpecialID处理情况(False + chr(1) + False)表示会签情况
BrachResult
Int
合流标示(1:表示合流,0表示未合流)
SpeciID
String
分支标识(用户A + chr(1) + 用户B)
Fields
String
步骤附件字段(字段名 + chr(1) + 字段值 + chr(2) + 字段名 + chr(1) + 字段值)
AttachMents
String
步骤带附件名称和路径(附件名 + chr(1) + 附件路径 + chr(2) + 附件名 + chr(1) + 附件路径)
MergeField
String
合流时需要合并字段(字段名;字段;。。。。字段名)
PIGEONHOLEDeptName
String
该文要归入部门名称
FileClass
String
请看消息FileClass解释
FileFlag
Int
请看消息FileFlag解释
CurStatus
StatusCls
步骤走到目前状态
Company_ID
int
步骤所在企业ID
5.3.2.2 WorkFlowCntrCls类
类名
WorkFlowCntrCls
父类名
责任描述
Ø 步骤实例基础信息类
协同类
ConstCls
方法说明
方法名1
CommState
类型
private void
Description
处理一般状态方法(一般状态和开始进行一样处理)
Input
Output
方法名2
EndState
类型
private void
Description
处理结束状态方法
Input
Output
方法名3
ChildFlow
类型
private void
Description
处理子流动作
Input
Output
方法名4
ChildFlow_Wait_SameTime
类型
private void
Description
处理等候、同时子流动作(传阅时候起作用)
Input
Output
方法名5
ChildFlow_NotWait_SameTime
类型
private void
Description
处理不等候、同时子流动作(传阅)没有写日志
Input
Output
方法名6
DivideFlow
类型
private void
Description
处理分流
Input
Output
方法名7
MergeFlow
类型
private void
Description
处理合流
Input
Output
方法名8
HurryAct
类型
private void
Description
处理催办动作
Input
Output
方法名9
RenewAct
类型
private void
Description
处理一般状态方法(一般状态和开始进行一样处理)
Input
Output
方法名10
ReteatAct
类型
private void
Description
处理撤回动作
Input
Output
方法名11
DisposeAct
类型
private void
Description
处理作废动作
Input
Output
方法名12
GetFlowLogMsg
类型
private void
Description
得到目前步骤得日志信息
Input
Output
方法名13
类型
private void
Description
处理作废动作
Input
Output
5.3.2.3 StatusCls类
类名
StatusCls
父类名
责任描述
Ø 步骤状态基础信息类
协同类
属性
类型
说明
FlowID
string
步骤实例ID
FlowTypeID
Int
步骤类型ID
FlowTypeName
String
步骤类型名称
StatusName
String
状态名称
StatusTypeName
String
状态类型名称
StatusTypeID
int
状态类型ID
INTERFLOW_CUSTOM_RULE
string
合流自定义规则
INTERFIX_FIELD
string
相关字段
COM_EXTEND
string
Com扩展
CHILD_FLOW_TYPE
string
子流(分流)类型
CHILD_FLOW_HINT
string
子流提醒
CHILD_FLOW
string
子流
CHANGE_FLOW_NAME
string
转步骤步骤名
CHANGE_FLOW_ID
Int
转步骤步骤ID
CHANGE_STATUS_NAME
string
转步骤状态名称
CHANGE_STATUS_ID
Int
转步骤状态ID
AUTO_FIELD_LIST
string
自动列表
AUTO_CUSTOM_RULE
string
自动自定义规则
AUTO_FIELD_NAME
string
自动字段名称
INTERFLOW_UNITE_LIST
string
合流自定义规则
OperationRole _ID
Int
业务角色ID
USERROLE_ID
Int
用户角色ID
NextStatus
HashTable
由下一步状态作为元素组成HashTable
FromDisposal
DisposalCls
本状态从哪个动作过来
方法名1
GetStatusMsg
类型
private void
Description
得到状态信息,对属性赋值
Input
String FlowID 步骤ID,string StatusID 状态ID
Output
方法名2
GetNextStatusMsg
类型
private HashTable
Description
得到目前状态全部下一步状态信息,给属性赋值
Input
String FlowID 步骤ID,string StatusID 状态ID
Output
由全部下一步状态信息组成HashTable
5.3.2.4 DisposalCls类
类名
DisposalCls
父类名
责任描述
Ø 步骤处理基础信息类
协同类
ConstCls
属性
类型
说明
FlowID
string
步骤实例ID
FlowTypeID
Int
步骤类型ID
FlowTypeName
String
步骤类型名称
DISPOSAL_ID
Int
处理过程ID
DISPOSAL_HINT
String
处理过程提醒
DISPOSAL_NAME
String
处理过程名称
TRANSACT_STATUS_ID
Int
经办状态
DEPT_LIMIT
Int
同部门限制
ROLE_LIMIT
Int
同角色限制
CUR_STATUS_ID
Int
目前步骤ID
PRE_STATUS_ID
int
上步骤ID
GROUP_LIMIT
Int
同组限制
方法名1
GetDisponsalMsg
类型
private void
Description
得四处理步骤信息
Input
int FlowTypeID 步骤类型ID,int PreStatus_ID,上一个状态ID,int CurStatus_ID 目前状态ID
Output
5.3.2.5 UserCls类
类名
UserCls
父类名
责任描述
Ø 用户基础信息类
协同类
ConstCls
属性
类型
说明
UserID
string
用户ID
DeptID
Int
用户所在部门ID
DeptName
String
用户所在部门名称
RoomID
Int
处室ID
RoomName
String
处室名称
UserName
String
用户汉字名
CompanyID
Int
用户所在企业ID
CompanyName
String
用户所在企业名称
OPERRoleID
String
用户所属角色ID
OPERRoleName
String
用户所属角色名称
UserOrderby
Int
用户排序字段
RoomOrderBy
Int
处室排序字段
DeptOrderBy
Int
部门排序字段
CompanyOrderBy
Int
企业排序字段
方法名1
GetUserMsg
类型
private void
Description
得到用户信息
Input
string UserID 用户ID,string CnnStr 数据库连接
Output
5.3.3 步骤逻辑处理层中类具体说明
5.3.3.1 WorkEnginerCls类
类名
WorkEnginerCls
父类名
责任描述
Ø 连接数据库
Ø 扫描工作流引擎表(是一个视图)
Ø 对动作和状态做处理
协同类
使用FileDealCls对文件系统操作
使用DBDealCls对数据库进行操作
使用ConstCls调用系统常量
方法说明
方法名1
WorkEnginerRun()
类型
public void
Description
工作流引擎工作方法,创建队列和线程,而且绑定关系,调用方法AssembleMethod处理取得消息,并做对应逻辑处理。
Input
Output
方法名2
AssembleMethod ()
类型
public void
Description
将取得消息转变成为结构体,再实施具体处理方法
Input
Output
方法名3
XMLToStruct ()
类型
private bool
Description
分解得到消息,将消息中信息组合成ItemMsg类型数据
Input
MSXML2.DOMDocument ObjDom,由消息中正文所得到MSXML2.DOMDocument对象
Output
转变正确则返回TRUE,不然返回FALSE
方法名
DealWorkFlow ()
类型
public void
Description
对多种动作和状态处理
Input
Output
方法名
AgainDealMethod ()
类型
public void
Description
处理因为连接失败而造成未处理情况。
Input
Output
方法名
CorrectMethod ()
类型
public void
Description
创建纠错线程,关键是在做纠错处理时使用
Input
Output
方法名
FileSrvDealMethod ()
类型
private void
Description
关键用于处理在没有连接文件服务成功时放入队列消息
Input
Output
方法名4
CommState()
类型
private void
Description
对一般、开始状态和跳转动作进行处理
若犯错,写犯错信息,错误步骤等候下一次处理(最多处理3次)
Input
ItemMsg TmpRsd,要处理结构体,int LogFlag,日志处理标志位(0:开始时候,1:非开始时候,2:结束)FrmWorkEnginer WinEnginer(在应用程序中用到,服务中没有)
Output
方法名5
EndState ()
类型
private void
Description
对结束进行处理,调用了DecomposeFields(),GetFileName(),MergeUrl(),
GetNewAttachment(),BeginState(),GetLogSql(),MoveLog(),DeleteAllTable()
CanZhuChaosong(),GetZhuChaoUrl(),DealZhuChaoSong(),EnginerDB.ExecuteTran()
若犯错,写犯错信息,错误步骤等候下一次处理(最多处理3次)
Input
ItemMsg TmpRsd,要处理结构体,FrmWorkEnginer WinEnginer(在应用程序中用到,服务中没有)
Output
方法名6
HurryAct ()
类型
private void
Description
对催办进行处理,调用了DealUserMail(),EnginerDB.ExecuteTran()
若犯错,写犯错信息,错误步骤等候下一次处理(最多处理3次)
Input
ItemMsg TmpRsd,要处理结构体,FrmWorkEnginer WinEnginer(在应用程序中用到,服务中没有)
Output
方法名7
RenewAct ()
类型
private void
Description
对重发进行处理,调用了ConstCls.ResolveStr(),EnginerDB.ExecuteTran()
若犯错,写犯错信息,错误步骤等候下一次处理(最多处理3次)
Input
ItemMsg TmpRsd,要处理结构体,FrmWorkEnginer WinEnginer(在应用程序中用到,服务中没有)
Output
方法名8
DisposeAct ()
类型
private void
Description
对作废进行处理,调用了MoveLog(),DeleteAllTable(),DealUserMail(),
DelMergeUrl(),EnginerDB.ExecuteTran()
若犯错,写犯错信息,错误步骤等候下一次处理(最多处理3次)
Input
ItemMsg TmpRsd,要处理结构体,FrmWorkEnginer WinEnginer(在应用程序中用到,服务中没有)
Output
方法名10
ReteatAct ()
类型
private void
Description
对撤回进行处理,调用了EnginerDB.Query(),DecomposeFields(),
DealNotify(),EnginerDB.ExecuteTran()
若犯错,写犯错信息,错误步骤等候下一次处理(最多处理3次)
Input
ItemMsg TmpRsd,要处理结构体,FrmWorkEnginer WinEnginer(在应用程序中用到,服务中没有)
Output
方法名11
ChildFlow ()
类型
private void
Description
对子流进行处理,调用了ChildFlow_Wait_SameTime (),
ChildFlow_NotWait_SameTime (),ChildFlow_NotWait_Order (),
ChildFlowEnd ()
若犯错,写犯错信息,错误步骤等候下一次处理(最多处理3次)
Input
ItemMsg TmpRsd,要处理结构体,FrmWorkEnginer WinEnginer(在应用程序中用到,服务中没有)
Output
方法名12
ChildFlow_Wait_SameTime()
类型
private void
Description
对结束进行处理,调用了GetRealPath (),GetFileName(),MergeUrl(),
GetNewAttachment(),DealerToSql (),DealZaiBan (),DealFlowMain (),
GetLogSql(),EnginerDB.ExecuteTran ()
若犯错,写犯错信息,错误步骤等候下一次处理(最多处理3次)
Input
ItemMsg TmpRsd,要处理结构体,FrmWorkEnginer WinEnginer(在应用程序中用到,服务中没有)
Output
方法名13
ChildFlow_NotWait_SameTime ()
类型
private void
Description
对结束进行处理,调用了GetRealPath(),GetFileName(),MergeUrl(),
GetNewAttachment(),DealUserMail(),GetLogSql(),DealZaiBan (),
DealFlowMain (),EnginerDB.ExecuteTran()
若犯错,写犯错信息,错误步骤等候下一次处理(最多
展开阅读全文