6. Generic Workflow Product Structure
Process
Definition
May
refer to
-6-
OR Model
Data
WFM
Engine(s)
Worklist
Handler
User Interface
Application(s)
Workflow
Application
Data
Application(s)
Workflow
Control
Data
Workflow
Relevant
Data
Definition Tool
Generates
May
reference
Interpreted by
References
Maintain
Work
List
Administration
& Control
Interact via Supervisor
Manipulate
Update
Invokes
User/Participant
Software component
System control data
External product/data
7. -7-
IE 4.01
Exchange
Server 5.5
Application
Server
Client
Tier
Middle
Tier
Server
Tier
Workflow
Engine
OutLook 表單
企業管理資訊系統
(ActiveX GUI)
Fax
Server
IIS
4.0
ASP
DCOM
Microsoft
SQL Server
MTS
工作流程表單(ActiveX)
Workflow
Client Object
Security
Manager
系統整合架構
14. Microsoft Windows 95 / 98 / NT Server / NT Workstation
Enterprise Manager
-14-
Workflow Executive
Service
Invocation
Encapsulator
Microsoft Transaction Server
Database Server
(Microsoft SQL Server, Oracle, Informix)
Legends
SMTP Server Microsoft Exchange
Microsoft Windows NT Server
Server
Optional
Server Platform
Invocation
Encapsulator
User Developed
Service DLL
Service Application
(Fax, Mail…etc.)
Remote Service Machine
Worklist Client Microsoft Outlook 98
(Optional)
Worklist Handler Framework Interface
Workflow
Microsoft Windows 95 / 98 / NT Server / NT Workstation
Workflow Client Component
Workflow Framework Interface
Workflow Low-Level APIs
Workflow Databroker
Workflow Server Components
Client / Flow Service Application
Workflow Framework / API
User Developed Service DLL
Optional Component
Platform / Back-End Server
Internal Data Stream
Network Data Stream
15. procedure TAFPR.Item_Open;
begin
case FMailItem.FormStep of
0: NewOrder; // Create Order;
else
GetOrder; // Get Order by previous step;
end;
end;
-15-
function TAFPR.Item_Agree: WordBool;
begin
Result := UpdateOrder;
end;
procedure TAFPR.Set_MailItem(Value: OleVariant);
begin
FMailItem := Value;
end;
function TAFPR.Get_MailItem: OleVariant;
begin
Result:=FMailItem;
end;
function TAFPR.Item_DisAgree: WordBool;
begin
Result := True;
end;
function TAFPR.Item_Reject: WordBool;
begin
Result := True;
end;
function TAFPR.Item_Send: WordBool;
begin
Result := True;
end;
function TAFPR.Item_Close: WordBool;
begin
Result := True;
end;
function TAFPR.Item_Abort: WordBool;
begin
Result := True;
end;
16. procedure TAFPR.GetOrder;
begin
FOrderNo := FMailItem.Userproperties.Find('OrderNo').Value;
with TQuery(dsMaster.DataSet) do begin
Close;
ParamByName('OrderID').AsString := FOrderNo;
Open;
end;
end;
function TAFPR.UpdateOrder:Boolean;
begin
Result := True;
try
with dsMaster.DataSet do begin
if FMailItem.FormStep = 2 then begin
if not(State in [dsEdit, dsInsert]) then Edit;
FieldByName('Status').AsInteger := 2;
end;
if State in [dsEdit, dsInsert] then Post;
FOrderNo := FieldByName('PRID').AsString;
end;
FMailItem.Userproperties.Find('OrderNo').Value := FOrderNo;
except
Result := False;
end;
end;
-16-
function TAFPR.Get_Amount: Double;
begin
with dsMaster.DataSet do
Result := FieldByName('Amount').AsFloat;
end;