📄 clsstartprocedure.cls
字号:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "clsStartProcedure"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Attribute VB_Ext_KEY = "SavedWithClassBuilder" ,"Yes"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
Option Explicit
Implements IProcedureItem
Private m_sProcedureID As String
Private m_sProcedureProcessID As String
Private m_sWorkflowID As String
Private m_sResponse As String
Private m_dtStartDate As Date
Private m_dtCompleteDate As Date
Private m_sStepType As String
Private Sub Class_Initialize()
'在方法中已该接受一些信息,完成启动工作流的任务
End Sub
Private Property Let IProcedureItem_CompleteDate(ByVal vData As String)
m_dtCompleteDate = vData
End Property
Private Property Get IProcedureItem_CompleteDate() As String
IProcedureItem_CompleteDate = m_dtCompleteDate
End Property
Private Function IProcedureItem_getNextProcedure() As IProcedureItem
On Error GoTo Error_Handler
Dim conWF As ADODB.Connection
Dim rsProcedure As ADODB.Recordset
Dim sSQL As String
Dim sNextProc As String
Dim oItem As IProcedureItem
Set conWF = New ADODB.Connection
With conWF
.ConnectionTimeout = 10
.ConnectionString = "DSN=workflow"
.Open
End With
sSQL = "SELECT Procedure_Process.*, Procedure.* " & _
"FROM [Procedure] INNER JOIN Procedure_Process ON " & _
" Procedure.ProcedureID = Procedure_Process.ProcedureID" & _
" Where ProcedureProcessID = " & m_sProcedureProcessID
Set rsProcedure = New ADODB.Recordset
rsProcedure.Open sSQL, conWF, adOpenForwardOnly, adLockReadOnly
sNextProc = rsProcedure("NextProcedureID")
rsProcedure.Close
sSQL = "SELECT Procedure.* " & _
"FROM [Procedure] " & _
" Where [Procedure].ProcedureID = " & sNextProc
Set rsProcedure = New ADODB.Recordset
rsProcedure.Open sSQL, conWF, adOpenForwardOnly, adLockReadOnly
If Not rsProcedure.EOF Then
Select Case rsProcedure("Type")
Case "Response"
Set oItem = New clsResponseProcedure
Case "Start"
Set oItem = New clsStartProcedure
Case "Stop"
Set oItem = New clsStopProcedure
Case "FYI"
Set oItem = New clsFYIProcedure
End Select
'在返回对象之前,已经调用相应的属性方法,实现对其私有变量的负值
oItem.WorkflowID = m_sWorkflowID
oItem.Response = ""
oItem.StartDate = Format$(Now, "mm-dd-yyyy")
oItem.StepType = rsProcedure("Type")
oItem.ProcedureID = rsProcedure("ProcedureID")
End If
Set rsProcedure = Nothing
Set IProcedureItem_getNextProcedure = oItem
Exit Function
Error_Handler:
IProcedureItem_getNextProcedure = Nothing
Set rsProcedure = Nothing
Set conWF = Nothing
End Function
Private Function IProcedureItem_IsProcedureComplete() As Boolean
Dim bResponse As Boolean
If m_sResponse <> "" Then
bResponse = True
Else
bResponse = False
End If
IProcedureItem_IsProcedureComplete = bResponse
End Function
Private Property Let IProcedureItem_NextProcedureID(ByVal RHS As String)
End Property
Private Property Get IProcedureItem_NextProcedureID() As String
End Property
Private Sub IProcedureItem_Populate(domProcedure As MSXML.IXMLDOMDocument)
m_sProcedureProcessID = domProcedure.documentElement.Attributes.getNamedItem("ID").Text
m_sWorkflowID = domProcedure.documentElement.Attributes.getNamedItem("WFID").Text
m_sResponse = domProcedure.documentElement.selectSingleNode("UserResponse").childNodes.Item(1).Text
If domProcedure.documentElement.selectSingleNode("StartDate").Text <> "" Then
m_dtStartDate = domProcedure.documentElement.selectSingleNode("StartDate").Text
End If
If domProcedure.documentElement.selectSingleNode("CompleteDate").Text <> "" Then
m_dtCompleteDate = domProcedure.documentElement.selectSingleNode("CompleteDate").Text
End If
m_sStepType = domProcedure.documentElement.selectSingleNode("Type").Text
End Sub
Private Property Let IProcedureItem_ProcedureID(ByVal vData As String)
m_sProcedureID = vData
End Property
Private Property Get IProcedureItem_ProcedureID() As String
IProcedureItem_ProcedureID = m_sProcedureID
End Property
Private Property Get IProcedureItem_ProcedureProcess() As String
IProcedureItem_ProcedureProcess = m_sProcedureProcessID
End Property
Private Property Let IProcedureItem_ProcedureProcessID(ByVal vData As String)
m_sProcedureProcessID = vData
End Property
Private Function IProcedureItem_procedureStart() As Boolean
On Error GoTo Error_Handler
Dim conWF As ADODB.Connection
Dim rsProcedure As ADODB.Recordset
Dim rsUser As ADODB.Recordset
Dim sSQL As String
Dim sUserName As String
Set conWF = New ADODB.Connection
With conWF
.ConnectionTimeout = 10
.ConnectionString = "DSN=workflow"
.Open
End With
sSQL = "SELECT User.UserName, Procedure.ProcedureID " & _
"FROM (Role INNER JOIN [Procedure] ON Role.RoleID = Procedure.RoleID) " & _
"INNER JOIN [User] ON Role.RoleID = User.RoleID " & _
"WHERE (((Procedure.ProcedureID)=" & m_sProcedureID & "))"
Set rsUser = New ADODB.Recordset
rsUser.Open sSQL, conWF, adOpenForwardOnly, adLockReadOnly
If Not rsUser.EOF Then
sUserName = rsUser("UserName")
End If
Set rsUser = Nothing
sSQL = "INSERT INTO Procedure_Process " & _
"(WorkflowProcessID, ProcedureID, Status, UserName, StartDate) " & _
"VALUES(" & m_sWorkflowID & "," & m_sProcedureID & ", 'OPEN','" & sUserName & "', " & Format$(m_dtStartDate, "mm-dd-yyyy") & ")"
Set rsProcedure = New ADODB.Recordset
rsProcedure.Open sSQL, conWF, adOpenForwardOnly, adLockReadOnly
Exit Function
Error_Handler:
IProcedureItem_procedureStart = False
Set rsUser = Nothing
Set rsProcedure = Nothing
Set conWF = Nothing
End Function
Private Function IProcedureItem_procedureStop() As Boolean
On Error GoTo Error_Handler
Dim conWF As ADODB.Connection
Dim rsProcedure As ADODB.Recordset
Dim sSQL As String
Set conWF = New ADODB.Connection
With conWF
.ConnectionTimeout = 10
.ConnectionString = "DSN=workflow"
.Open
End With
sSQL = "UPDATE procedure_process SET " & _
" Response = '" & m_sResponse & "', " & _
" CompleteDate = '" & Format$(Now, "mm-dd-yyyy") & "'" & _
" WHERE ProcedureProcessID = " & m_sProcedureProcessID & " "
Set rsProcedure = New ADODB.Recordset
rsProcedure.Open sSQL, conWF, adOpenForwardOnly, adLockReadOnly
IProcedureItem_procedureStop = True
Set rsProcedure = Nothing
Set conWF = Nothing
Exit Function
Error_Handler:
IProcedureItem_procedureStop = False
Set rsProcedure = Nothing
Set conWF = Nothing
End Function
Private Property Let IProcedureItem_Response(ByVal vData As String)
m_sResponse = vData
End Property
Private Property Get IProcedureItem_Response() As String
IProcedureItem_Response = m_sResponse
End Property
Private Property Let IProcedureItem_StartDate(ByVal vData As Date)
m_dtStartDate = vData
End Property
Private Property Get IProcedureItem_StartDate() As Date
IProcedureItem_StartDate = m_dtStartDate
End Property
Private Property Let IProcedureItem_StepType(ByVal vData As String)
m_sStepType = vData
End Property
Private Property Get IProcedureItem_StepType() As String
IProcedureItem_StepType = m_sStepType
End Property
Private Property Let IProcedureItem_WorkflowID(ByVal vData As String)
m_sWorkflowID = vData
End Property
Private Property Get IProcedureItem_WorkflowID() As String
IProcedureItem_WorkflowID = m_sWorkflowID
End Property
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -