Salesforceを昔から使っているお客様環境の遺物に手を付けるときがきました。
フローへ移行されずに残っていたワークフロールールを確認するために、既存のワークフロールールを一覧化するためにちょっとしたコードを用意しました。
ワークフロールールの一覧化
CSVへの変換.sh
# ワークフローファイルを解析し、ワークフロー一覧、項目更新一覧、メールアラート一覧をCSVに出力するスクリプト
$workflowDir = "<ワークフローファイルフォルダへのパス>force-app\main\default\workflows"
$outputWorkflowCsv = "<ワークフロー一覧ファイル出力先へのパス>\workflow_list.csv"
$outputFieldUpdateCsv = "<項目自動更新一覧ファイル出力先へのパス>\field_update_list.csv"
$outputEmailAlertCsv = "<メールアラート一覧ファイル出力先へのパス>\email_alert_list.csv"
[System.Collections.ArrayList]$workflowList = @()
[System.Collections.ArrayList]$fieldUpdateList = @()
[System.Collections.ArrayList]$emailAlertList = @()
# ワークフローファイルを読み取る
Get-ChildItem -Path $workflowDir -Filter "*.workflow-meta.xml" | ForEach-Object {
$xml = [xml](Get-Content $_.FullName -Encoding UTF8)
$objectName = $_.BaseName -replace ".workflow-meta"
# ワークフローのルールを取得
foreach ($rule in $xml.Workflow.rules) {
$actionName = ""
# ワークフローのルールのアクションリストを取得
foreach ($action in $rule.actions) {
$actionName += $action.name + "(" + $action.type + "); "
}
$workflowList.Add([PSCustomObject]@{
Object = $objectName
RuleName = $rule.fullName
Active = $rule.active
TriggerType = $rule.triggerType
Description = $rule.description
actionName = $actionName
}) | Out-Null
}
# 項目更新ルールを取得
foreach ($update in $xml.Workflow.fieldUpdates) {
$fieldUpdateList.Add([PSCustomObject]@{
Object = $objectName
FieldUpdateName = $update.fullName
Field = $update.field
Operation = $update.operation
Formula = $update.formula
Description = $update.description
}) | Out-Null
}
# メールアラートを取得
foreach ($alert in $xml.Workflow.alerts) {
$emailAlertList.Add([PSCustomObject]@{
Object = $objectName
AlertName = $alert.fullName
Description = $alert.description
Recipients = ($alert.recipients | ForEach-Object { $_.field }) -join "; "
SenderAddress = $alert.senderAddress
Template = $alert.template
}) | Out-Null
}
}
# CSVに出力
$workflowList | Export-Csv -Path $outputWorkflowCsv -Encoding UTF8 -NoTypeInformation
$fieldUpdateList | Export-Csv -Path $outputFieldUpdateCsv -Encoding UTF8 -NoTypeInformation
$emailAlertList | Export-Csv -Path $outputEmailAlertCsv -Encoding UTF8 -NoTypeInformation
Write-Host "ワークフロー一覧を $outputWorkflowCsv に出力しました。"
Write-Host "項目更新一覧を $outputFieldUpdateCsv に出力しました。"
Write-Host "メールアラート一覧を $outputEmailAlertCsv に出力しました。"
利用方法
上記シェルを開いて、ワークフローのメタファイルが保存されているパスを指定してください。
指定フォルダに入っている「Account.workflow-meta.xml」のようなワークフローファイルをワークフロールール一覧、項目更新一覧、メールアラート一覧に分割して保存します。