05-02-2024 04:14 PM
I'm creating a business rule to automatically lock all workflows and descendants using:
BRApi.Workflow.Locking.LockWorkflowUnitDescendants(si, wfClusterPk, profileTypeFilter, workflowChannelKey)
but I'm getting the error: 'the item was not found'. I found an example online but it's not working for me. I didn't know what to populate wfClusterPk with so I defined it as (). I'm fairly new to VB.net and appreciate any help with this - thanks!
Solved! Go to Solution.
05-02-2024 04:24 PM - edited 05-02-2024 04:25 PM
@cap08 - Here is an example basically it is getting the current WF Profile and locking it using extender rule.
Dim wfInfo As WorkflowInfo = BRApi.Workflow.Status.GetWorkflowStatus(si,si.WorkflowClusterPk)
Dim A As String = wfInfo.Name
brapi.ErrorLog.LogMessage(si,A)
If wfInfo.Locked Then
Brapi.ErrorLog.LogMessage(si,"Not Locked")
Else
'BRApi.Workflow.Locking.LockWorkflowUnit(si,si.WorkflowClusterPk)
BRApi.Workflow.Locking.LockWorkflowUnitDescendants(si,si.WorkflowClusterPk,workflowprofiletypes.InputImportChild,si.WorkflowClusterPk.ProfileKey)
Brapi.ErrorLog.LogMessage(si," Locked")
End If
05-02-2024 04:24 PM - edited 05-02-2024 04:25 PM
@cap08 - Here is an example basically it is getting the current WF Profile and locking it using extender rule.
Dim wfInfo As WorkflowInfo = BRApi.Workflow.Status.GetWorkflowStatus(si,si.WorkflowClusterPk)
Dim A As String = wfInfo.Name
brapi.ErrorLog.LogMessage(si,A)
If wfInfo.Locked Then
Brapi.ErrorLog.LogMessage(si,"Not Locked")
Else
'BRApi.Workflow.Locking.LockWorkflowUnit(si,si.WorkflowClusterPk)
BRApi.Workflow.Locking.LockWorkflowUnitDescendants(si,si.WorkflowClusterPk,workflowprofiletypes.InputImportChild,si.WorkflowClusterPk.ProfileKey)
Brapi.ErrorLog.LogMessage(si," Locked")
End If
05-03-2024 08:55 AM
I'll give this a try, thank you!
05-03-2024 09:24 AM
HI Krishna, this works great for one workflow but doesn't lock all of the workflows. Is there a way to loop through all of the workflows?
05-03-2024 10:07 AM - edited 05-03-2024 10:08 AM
@cap08 - Here you go!
'Get the Workflow and Loop through with Text 1 Value
Dim gTime As String = BRApi.Workflow.General.GetGlobalTime(si)
Dim scenario As String = "Actual"
Dim wfClusterPk2 As WorkflowUnitClusterPk = BRApi.Workflow.General.GetWorkflowUnitClusterPk(si, "Total Corporate", scenario, gTime)
Dim objList As List(Of WorkFlowProfileInfo) = BRApi.Workflow.Metadata.GetRelatives(si, wfClusterPk2, WorkflowProfileRelativeTypes.Descendants, WorkflowProfileTypes.InputImportChild)
'Workflow Information
Dim wfList As New Dictionary(Of String, WorkFlowProfileInfo)
Dim wfList1 As New Dictionary(Of String, WorkFlowProfileInfo)
For Each w As WorkflowProfileInfo In objList
Next
05-03-2024 10:38 AM
@Krishna Thanks!
07-17-2024 02:23 PM
I found a solution which works for me and have been meaning to add it here in case someone else can use it. I created business rules to lock or unlock workflows depending upon the parameter in the DM step.