Forum Discussion
- NicolasArgenteValued Contributor
Hello,
Yes it is possible. You could have a look at this article that is close to what you need : https://onestreamsoftware.service-now.com/sp/?id=kb_article_view&sys_kb_id=3cfcb981db191b808a435eea4b9619d1
I would like you to see also this code : https://community.onestreamsoftware.com/t5/Accepted-Code-Samples/Extender-Automate-Import-Validate-Load-Process-Confirm-Certify/ta-p/6916
Please give a kudo if it helps,
Thanks - mgreenbergContributor II
Hi Nicolas - thanks for the reply. I looked at the article and that is just about batch posting. What I am looking to do is when you Click Complete Workflow on the Input Forms or Input Journals or after you upload a file on the Import step that it automatically processes the remaining steps (Validate, Process, Confirm etc). It look like that snipet would do that I just dont know how to call that snipet since this is standard OS functionality. I dont want to have to add a Workspace step to do it.
For some reason I like using
BRApi.Import.Process.ValidateTransformation
BRApi.Import.Process.ValidateIntersections
BRApi.Import.Process.LoadCube
BRApi.DataQuality.Process.ExecuteProcessCube
vs. the Harvest approach. It is more readable than the other approach. Here is a snippet that I use. This is been done from a Dashboard button, so in your case those cannot be used (assuming you are taking the approach of using an Event handler)
Private Function LoadToCube(ByVal si As SessionInfo, ByVal globals As BRGlobals, ByVal args As DashboardExtenderArgs) As XFSelectionChangedTaskResult Try Dim selectionResult As New XFSelectionChangedTaskResult() Dim wfProfile As WorkflowProfileInfo = BRApi.Workflow.Metadata.GetProfile(si, si.WorkflowClusterPk.ProfileKey) Dim wfProfileParent As WorkflowProfileInfo = BRApi.Workflow.Metadata.GetProfile(si, wfProfile.ParentProfileKey) Dim timeName As String = TimeDimHelper.GetNameFromId(si.WorkflowClusterPk.TimeKey) Dim wfClusterPk As WorkflowUnitClusterPk = BRAPi.Workflow.General.GetWorkflowUnitClusterPk(si, $"{wfProfileParent.Name}.Event Load", "Plan_Weekly", timeName & "W1") 'Complete the IMPORT-VALIDATE-LOAD-PROCESS Workflow Steps 'Get the Workflow info so that we can determine which steps can be executed Dim wfInfo As WorkflowInfo = BRApi.Workflow.Status.GetWorkflowStatus(si, wfClusterPk, True) If Not wfInfo Is Nothing Then ' 'Check whether load transfrom is enabled If Not wfInfo.GetStep(StepClassificationTypes.DataLoadTransform) Is Nothing Then Dim impProcessInfo As LoadTransformProcessInfo = BRApi.Import.Process.ExecuteParseAndTransform(si, wfClusterPk, Nothing, Nothing, TransformLoadMethodTypes.ReplaceBackgroundAllTimeAllSourceId, SourceDataOriginTypes.FromDirectConnection, True) If impProcessInfo.Status = WorkflowStatusTypes.Completed Then 'Check whether validate transform is enabled ' perform validate transformation If Not wfInfo.GetStep(StepClassificationTypes.ValidateTransform) Is Nothing Then Dim valTranProcessInfo As ValidationTransformationProcessInfo = BRApi.Import.Process.ValidateTransformation(si, wfClusterPk, True) If valTranProcessInfo.Status = WorkflowStatusTypes.Completed Then ' perfomr validate intersection If Not wfInfo.GetStep(StepClassificationTypes.ValidateIntersection) Is Nothing Then Dim valIntersectProcessInfo As ValidateIntersectionProcessInfo = BRApi.Import.Process.ValidateIntersections(si, wfClusterPk, True) If valIntersectProcessInfo.Status = WorkflowStatusTypes.Completed Then 'Check whether we can load cube If Not wfInfo.GetStep(StepClassificationTypes.LoadCube) Is Nothing Then Dim lcProcessInfo As LoadCubeProcessInfo = BRApi.Import.Process.LoadCube(si, wfClusterPk) If lcProcessInfo.Status = WorkflowStatusTypes.Completed Then 'Check whether we can process cube If Not wfInfo.GetStep(StepClassificationTypes.ProcessCube) Is Nothing Then Dim pcProcessInfo As ProcessCubeProcessInfo = BRApi.DataQuality.Process.ExecuteProcessCube(si, wfClusterPk, StepClassificationTypes.ProcessCube, False) If Not pcProcessInfo.Status <> WorkflowStatusTypes.Completed Then selectionResult.Message = "Process cube failed." selectionResult.IsOK = False selectionResult.ShowMessageBox = True Return selectionResult Throw ErrorHandler.LogWrite(si, New XFUserMsgException(si, Nothing, Nothing, "Process cube failed.")) End If End If Else selectionResult.Message = "Load cube failed." selectionResult.IsOK = False selectionResult.ShowMessageBox = True Return selectionResult Throw ErrorHandler.LogWrite(si, New XFUserMsgException(si, Nothing, Nothing, "Load cube failed.")) End If End If Else selectionResult.Message = "Validate intersection failed." selectionResult.IsOK = False selectionResult.ShowMessageBox = True Return selectionResult Throw ErrorHandler.LogWrite(si, New XFUserMsgException(si, Nothing, Nothing, "Validate intersection failed.")) End If End If Else selectionResult.Message = "Validate Transformation failed." selectionResult.IsOK = False selectionResult.ShowMessageBox = True Return selectionResult Throw ErrorHandler.LogWrite(si, New XFUserMsgException(si, Nothing, Nothing, "Validate Transformation failed.")) End If End If Else selectionResult.Message = "Load and Transform failed." selectionResult.IsOK = False selectionResult.ShowMessageBox = True Return selectionResult Throw ErrorHandler.LogWrite(si, New XFUserMsgException(si, Nothing, Nothing, "Load and Transform failed.")) End If End If End If selectionResult.Message = "Cube loaded." selectionResult.IsOK = True selectionResult.ShowMessageBox = True Return selectionResult Catch ex As Exception Throw ErrorHandler.LogWrite(si, New XFException(si, ex)) End Try End Function
- NicolasArgenteValued Contributor
Without going into too much detail, i suggest that you have a look at the Event Handlers. It will require some coding. You should find some sample in the design doc too.
- TonyToniToneContributor II
Import would use the Transformation Event Handler
Forms would use the Forms Event Handler
More details on Event Handlers can be found in the Design and Reference Guide or Api Guide.
Related Content
- 4 years ago
- 9 months ago
- 3 years ago
- 7 months ago