工作流模板设计文档Word格式.docx
- 文档编号:21157700
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:15
- 大小:19.75KB
工作流模板设计文档Word格式.docx
《工作流模板设计文档Word格式.docx》由会员分享,可在线阅读,更多相关《工作流模板设计文档Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
可以定义一些角色,比如在外出系统中,需要总务来填写机票的一些信息,那我们可以定义一个角色(Role),将负责订票业务的总务放到里面。
如果以后负责订票业务的人员发生变动,我们只要更改这个角色中的人员就可以了。
字字段名
Dialoglist,Editable
选择项公式:
ServerName:
=@GetProfileField("
WorkflowDefineProfile"
;
"
ServerName"
);
Path:
Path"
@DbColumn("
:
nocache"
Path;
AllWorkflow"
1)
RoleName
Text,Editable
RoleMember
Useaddressdialoglistforchoices
(4)Activity:
定义每一个状态的ID号,名称等。
最重要的是定义了Activity的Owner,即能编辑处在这一个状态的文档的人员。
选择项公式为:
ActivityId
ActivityName
ActivityDescription
ActivityOwner
AllRoles:
="
@RoleMemberOf"
+"
"
+@DbColumn("
AllRoles"
1);
@Field"
AllRoles
(5)Relation:
定义文档由一个Activity转换到另一个Activity的条件,以及要发送的邮件。
RelationId
Condition
条件的书写语法与Formula类似
MailNotifyId
Nocache"
MailNotify"
2)
(6)MailNotify:
定义邮件的主题,收件人。
Recipients
Subject
注:
以红颜色标明的字段的选择条件中,提供了两中形式的选择项,@rolememberOf和@field。
这是自己定义的“伪公式”,在程序中将对这两种形式的公式进行计算。
3.View:
视图(Profile)中有一个ActionEditProfile,用来编辑Profile.
四.设计概述--------具体的工作流应用系统。
这里以外出系统为例。
(1.23.nsf)
当员工因公司事务外出时,必须填写因公外出的申请单。
外出类型分两种:
Loacl和OtherPlace。
当外出类型是OtherPlace时,在送交直属主管签核前,需要由总务部门来填写机票和酒店信息。
2.subform:
(1)WorkflowInfo:
存放表示当前文档的状态以及Owner的信息。
其中有一个Authors的字段,用来控制谁可以编辑文档。
CurrentActivityId
默认值:
”01”
CurrentActivityName
WorkflowId:
WorkflowProfile"
WorkflowId"
temp:
=@DbLookup("
AllActivity"
WorkflowId+"
-"
+CurrentActivityId;
2);
@If(@IsError(temp);
Error"
temp)
CurrentActivityOwner
Authors,Editable
PreviousActivityId
前一个状态的Id
PreviousActivityName
前一个状态的名称
(2)ForWrite:
用来给员工填写外出的一些信息。
Filler
填表人。
@Name([CN];
@UserName)。
Requester
@UserName)+"
/sernet"
选择项:
Department
申请人的部门:
xuser:
=requester;
xview:
($VIMPeople)"
=@Name([CN];
@Trim(@DbLookup("
@Subset(@DbName;
1):
names.nsf"
xview;
xuser;
department"
)));
StartDate,
StartTime,EndDate,EndTime,
Date/time
Hours
Number,Editable
输入验证:
@If(hours=0;
@Failure("
假期的时间不能为0"
@Success)
TripType
Radiobutton,Editable
Local和
OtherPlace
(3)ForRead:
用来显示员工填写的外出信息。
Text,Computed
Value:
Dialoglist,Computed
Value:
Department
Date/time,Computed
StartDate,
Number,Computed
Hours
Radiobutton,Computed
TripType
(4)GSWrite:
总务用来填写机票酒店信息。
Hotel
Ticket
(5)GSRead
Hotel
Ticket
3.Form
(1)WorkflowProfile:
是Profile,用来记录当前系统的编号,以及工作流定义数据库的路径。
在使用这个工作流之前,管理员必须填写好该Profile。
表示当前这个工作流的Id
表示工作流定义数据库的服务器名
表示工作流定义数据库的路径
(2)RequestForm:
用来填写申请信息的表单,里面包括子表单和计算子表单。
名称
“WorkflowInfo”
Subform
Computedsubform
计算公式为:
@If(CurrentActivityName="
FillRequestForm"
ForWrite"
ForRead"
)
GSOperation"
GSWrite"
GSRead"
Manager1
Dialoglist,Editable
默认值为:
Manager"
)))+"
转换公式为:
Manager1)
Manager1Option
Radiobutton,Editable
选择公式为:
Yes,No
隐藏条件:
CurrentActivityName!
Manager1Sign"
Manager1OptionRead
Text,computed
Manager2
Manager2Option
Manager2Sign"
Manager2OptionRead
A.表单中还有字段Manager2,Manager2Option,anager2OptionRead,GeneralManager,GeneralManangerOption,GeneralManangerOptionRead与Manager1,Manager1Option,anager1OptionRead设置相似。
B.表单中使用计算子表单的目的:
我们要求填表人在填写申请单时候,只能填写外出的时间等信息,而机票信息是由总务来填写的。
总务在填写机票信息时,不能更改已经由填表人填写好的外出信息。
子表单计算公式为:
)和
)。
这样只有在状态为FillRequestForm(填写外出申请单)时候,子表单为ForWrite,这个子表单里面的字段时Editable,其他状态时为ForRead,这个子表单里面的字段为Computed,且值为填写好的外出信息。
同样的道理,只有在状态为GSOperation(总务填写外出信息)时候,是包含Editable类型的的字段的子表单(GSWrite),在其他的时候在包含Computed类型的字段的子表单(GSRead)。
4.Action:
整个系统公用一个Action”送下一步处理”,在读的状态下隐藏。
公式:
@Command([ToolsRunMacro];
ChangActivity"
@Command([FileSave]);
@Command([FileCloseWindow])。
5.Agent:
ChangActivity:
改变文档的状态.代码:
(options):
OptionDeclare
Use"
ChangeActivity"
(使用了代码库里的代码)
(Declarations)
DimsessionAsnotessession
DimCurrentDocumentAsnotesdocument
Intialize:
SubInitialize
DimsendAsVariant
Setsession=Newnotessession
SetCurrentDocument=session.documentcontext
CallChangeActivity(session,CurrentDocument)
EndSub
6.Scriptlibraries:
”ChangeActivity”
OptionPublic
DimCurrentDatabaseAsnotesdatabase
DimWorkflowDefineAsnotesdatabase'
工作流定义的数据库
'
Workflow的信息
DimWorkflowIdAsString
DimServerNameAsString
DimPathAsString
ChangeActivity:
SubChangeActivity(SessionAsnotessession,CurrentDocumentAsnotesdocument)
'
ByDonald2003/1/22
功能:
完成文档的状态转换
OnErrorGotoPrintError
DimProfileAsnotesdocument
DimCurrentActivityIdAsString
DimRelationCollectionAsnotesdocumentcollection
DimRelationAsnotesdocument
DimiAsInteger
DimevaluateResultAsVariant
DimToActivityIdAsString
DimMailNotifyIdAsString
DimToActivityNameAsString
DimRountConditionAsString
DimtempOwnerAsVariant
DimOwnerlistAsVariant
DimMailAsnotesdocument
取得工作流的Profile文档,从中得到当前工作流系统的编号以及工作流定义数据库的路径
SetCurrentDatabase=session.currentdatabase
SetProfile=CurrentDatabase.GetProfileDocument("
WorkflowId=Profile.WorkflowId(0)
ServerName=Profile.ServerName(0)
Path=Profile.path(0)
取得工作流定义数据库
SetWorkflowDefine=session.getdatabase(ServerName,Path)
取得当前文档的状态编号
CurrentActivityId=CurrentDocument.CurrentActivityId(0)
找下一个状态
SetRelationCollection=WorkflowDefine.search("
Form="
Relation"
&
WorkflowId="
+WorkflowId+"
@left(RelationId;
2)="
+CurrentActivityId+"
Nothing,0)
IfRelationCollection.count<
1Then
Msgbox("
工作流定义出错"
ExitSub
Else
Fori=1ToRelationCollection.count
SetRelation=RelationCollection.getnthdocument(i)
RountCondition=Trim(Relation.Condition(0))
IfRountCondition="
Then'
没有流转条件
ToActivityId=Trim(Right(Relation.RelationId(0),2))
MailNotifyId=Relation.MailNotifyId(0)
ExitFor
Else
evaluateResult=Evaluate(RountCondition,CurrentDocument)
IfevaluateResult(0)Then
ToActivityId=Trim(Right(Relation.RelationId(0),2))
MailNotifyId=Relation.MailNotifyId(0)
ExitFor
EndIf
EndIf
Next
EndIf
将本状态的CurrentActivityId放到PreviousActivityId中,
将本状态的CurrentActivityName放到PreviousActivityName
CurrentDocument.PreviousActivityId=CurrentDocument.CurrentActivityId(0)
CurrentDocument.PreviousActivityName=CurrentDocument.CurrentActivityName(0)
计算下一个状态的Owner
tempOwner=Evaluate("
@dblookup("
+ServerName+"
+Path+"
+ToActivityId+"
4)"
Ownerlist=FormulaCalculate(tempOwner(0),CurrentDocument)
将下一个状态的Owner放到CurrentActivityOwner中
下一个状态的ActivityId放到CurrentActivityId中
下一个状态的ActivityName
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工作流 模板 设计 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)