cancel
Showing results for 
Search instead for 
Did you mean: 

削除してしまったプロセス・オブジェクトの復旧方法はありますか?

MarikoNishiwaki
Level 6
コミュニティのみなさま。あけましておめでとうございます。
本年もびしばしよろしくお願いいたします。

表題の件、ご存じの方教えてください。
うっかり消してしまったプロセスやオブジェクトをBlue Prism内で復旧可能でしょうか?

それかSQL Serverで復旧するほかないのでしょうか。

以上、よろしくお願いいたします。

------------------------------
Mariko Nishiwaki
ProjectAsistantManager
Denso
Asia/Tokyo
------------------------------
7 REPLIES 7

明けましておめでとうございます。今年もよろしくお願いいたします。

古いバージョンの Export ファイルとかも残ってないでしょうか?

Blue Prism はプロセスやオブジェクトを削除してしまっても定義自体は DB に残っているので古くても同じものをインポートすると削除した履歴の次にインポートした履歴が継続されます。そのため、バージョン比較画面から削除してしまったバージョンをエクスポートし、上書きインポートすることで復旧することが可能です。

Export ファイルが残っていない場合は直ぐに復旧手順は思いつきませんが、DB には定義が残っているはずなので何かフラグを設定すると見えてくる気がします。この辺りはサポート窓口までお問合せいただいた方が良いかも知れません。

何かしら参考になれば幸いです。

------------------------------
Hiromi Namaizawa
Senior Solutions Consultant
Blue Prism
Asia/Tokyo
------------------------------

度々申し訳ありません。

SQL Server のデータを見てみましたが、技術者のカンとしては難しそうな気がしました。
最初の想定通り、SQL Server のバックアップなどから復旧いただくことも必要かも知れません。


>皆様

良いアイディアをお持ちの方がおられましたら、
投稿いただけますと幸いです。

よろしくお願いいたします。



------------------------------
Hiromi Namaizawa
Senior Solutions Consultant
Blue Prism
Asia/Tokyo
------------------------------

生井沢さん

ご検討ありがとうございます。
やっぱりそうですよね。
しかも無償版SQL Serverだと自動バックアップ機能がないらしいと…
この記事に書いてありました。

https://ciprogram.jp/rpa/if_u_use_sqlse_ull_pay_ya_time/

このような対策をした方がいいなと思いました。

管理面では「うっかり消す」ことがないように、個別にバックアップを取ったり、
システム管理者権限でしか消せないという風な運用が必要かなと思います。

------------------------------
Mariko Nishiwaki
ProjectAsistantManager
Denso
Asia/Tokyo
------------------------------

西脇さん、

お世話になっております。Blue Prism の生井沢です。

SQL Server Express ではバックアップ機能は有効ではないようですね…。
私も怖くなって先程数ヵ月ぶりに全てのプロセス/オブジェクトを Export しました。

削除したモジュールを復旧する話ではないですが、今後のバックアップ運用として Export 機能を活用する場合、
リリース定義で対象パッケージを選択する際に依存関係を確認することで簡単に必要なオブジェクトのみを
バックアップ対象に含めることが可能です。(添付しました画面キャプチャーをご覧ください)

# このネタでブログを書かないといけないですが…。

よろしくお願いいたします。

------------------------------
Hiromi Namaizawa
Senior Solutions Consultant
Blue Prism
Asia/Tokyo
------------------------------

かなり泥臭い方法になりますが、全体の復旧ではなく消してしまった1プロセス/オブジェクトの復旧なら以下のような手順で出来るような気が。
SQL Server Management Studioを使う前提の手順ですが、他の方法(sqlcmdとか)が使える人なら多分自分で判断して手順を変えられるでしょう・・・。

①以下のようなクエリを使い、BPAAuditEventsテーブルからそのプロセスの作成や変更履歴の行を抽出します。

SELECT *
FROM [(DB名)].[dbo].[BPAAuditEvents]
WHERE [sNarrative] Like '%(復旧したいプロセス名)%'
ORDER BY [eventdatetime] DESC

※スタジオの変更履歴で出てくる「The user 'hogehoge' modified the process 'fugafuga'」みたいなメッセージが
 上記テーブルの[sNarrative]列に格納されています。

②抽出した各行には、[newXML]という列に値がある行があるはずです。
 (プロセスを変更した履歴の場合、変更前後のXMLデータがoldとnewに格納されます)
 その中で最新のnewXMLがありそうな行を見つけ、[eventid]を覚えます。

③以下のクエリを実行し、結果をファイルに保存します。(拡張子をxmlにしておくとよいでしょう)
 ※xmlデータが大きいので、SSMS上からクエリ結果をメモ帳にコピペとかで横着しようとすると失敗します

SELECT [newXML]
FROM [(DB名)].[dbo].[BPAAuditEvents]
WHERE [eventid] = (さっきのeventid)

④BPクライアント左上の「ファイル」メニューから保存したxmlをインポート


これでとりあえず最後に保存したときの状態は戻ると思いますが、
残念ながらnewXML自体にはプロセスのGUIDが含まれないようなので、過去の編集履歴は途切れてしまいます。
もし編集履歴もつなげて復旧する場合は、④の前に更に以下手順が必要です。

①最初のクエリで取得したログから、[gTgtProcID]列をコピーする(対象のプロセスIDになります)
①保存したXMLを開く。
②XMLの頭のタグ(<process name="~" ・・・ > みたいな奴)の末尾に
「preferredid="(コピーしたプロセスID)"」を付与して上書き保存する
 ※<process name = ・・・ preferredid="fda4b971-43f6-4184-aecd-b743f19241bd"> みたいになります



適当にプロセス/オブジェクトを1つ含んだリリースファイルを作って中のGUIDだけ書き換え&インポートでとりあえず履歴を復旧し、
あとは履歴からエクスポート&インポートで復旧みたいな手順も思いつきましたが上記で出来たので試しませんでした。



------------------------------
Hidetoshi Suzuki
Nissho Electronics
Asia/Tokyo
------------------------------

おぉー、凄い!

製品ベンダーとしてはお奨めし辛いですが(元々そのレベルでの対処策を模索していましたが…)、この方法だと対応できそうですね。
私も後で試してみます。

------------------------------
Hiromi Namaizawa
Senior Solutions Consultant
Blue Prism
Asia/Tokyo
------------------------------

鈴木さん

ありがとうございます。
SE畑ではないわたくしにはちょっと難しいですけど、
勉強してやってみますね!

------------------------------
Mariko Nishiwaki
ProjectAsistantManager
Denso
Asia/Tokyo
------------------------------