ブログBLOG

Web Serviceの呼び出し – Nintex Workflow

2014年04月03日(木)

インフォシェアブログをご覧の皆様、ごきげんよう!
神田なんですけども。

長らく更新しておりませんでした、Nintex Workflowの連載記事を再開させたいと思いますー。
1か月以上も放置していました。ごめんなさい。_(._.)_

 

さて、今回はNintex Workflowの「Webサービスの呼び出し」というアクションをご紹介したいと思いまーす。
連載記事(Nintex)の目次はこちらから。

えっと、ちなみに「Webサービスの呼び出し」については、テクニカル・ドキュメントでもご紹介させていただいておりますー。

 

「Webサービスの呼び出し」アクションは、その名の通りワークフローからWebサービスを呼び出して処理をさせるためのアクションなのですが、SharePoint標準のWebサービスとは別にNintex Workflowが独自に用意しているWebサービスを使用することもできるんですねー。

えー、少し細かい話になってしまうのですが、「Webサービスの呼び出し」アクションで呼び出せるWebサービスは、SOAP Webサービスになります。
REST Webサービスを使いたいときは、「Web リクエスト」というアクションを使いまーす。

 

で、今回は、その中でも非常に便利なメソッド「StartSiteWorkflow」をご紹介しますねー。

「StartSiteWorkflow」メソッドなのですが、これまた名前の通りサイトワークフローを開始させるためのメソッドです。
Nintex Workflowで作ったサイトワークフローは、スケジュール(日時を指定)実行するか、Nintex Formsで作ったワークフロー開始フォームを使わないと開始できないんですねー。

今回は、サンプルとして以前ご紹介させていただいたNintex Workflowの動画の中から「WordファイルをPDFに一括変換」のシナリオを使って、ご説明させていただきますねー。

[youtube https://www.youtube.com/watch?v=4jpR5xUir0o]

 

えーっとまず、このシナリオで使っているワークフローが、Nintex Workflowで作成したサイトワークフローなんですね。
このワークフローは、リスト内のすべてのWordファイルをPDFに変換するのですが、下記の図のように、通常であれば夜間にスケジュール実行するのが適切かと思います。(SharePointに負荷をかける処理なので)

sc2_l

 

しかし、イレギュラーな処理が発生するのが、業務の常、ですよねー。

例えば、臨時対応で「申請承認後にサイトワークフローを実行したい」みたいなケースの場合、申請承認用のリストがあって、承認後にそのリストのワークフローからサイトワークフローを実行するというようなことが、「StartSiteWorkflow」メソッドを使うとできちゃうんですねー。

で、使い方も意外と簡単です。
まずは、全体像を見ていただきたいのですが、

image

 

って全体像っていうほどのものでもないんですけど。。。

あのーあえてですよ、今回の焦点は「Webサービスの呼び出し」なので、他のアクションがごちゃごちゃあって、わかりにくくなるとダメだと思って、ブログをご覧になっている皆さんを思ってのことですよ(;・∀・)

さて、シンプルでわかりやすいと思うのですが、まず最初のアクション「臨時対応申請」で、承認者に承認タスクが割り当てられます。

で、承認されると、今回のメインである「Webサービスの呼び出し」の登場です。
下図が、「Webサービスの呼び出し」アクションの設定画面ですー。

image

 

今回、使用している設定項目をご説明しますねー。

  • URL
    WebサービスのURLを入力します。
    Nintex WorkflowのWebサービスを使用する場合は、上図の通り「サイトの URL/_vti_bin/NintexWorkflow/workflow.asmx」になります。(Nintex Workflow以外のWebサービスを呼び出すことも可能です)
    サイトの URL」の部分は、ワークフローを作成するサイトで動的に変更される部分になります。
  • ユーザー名
    URLで指定したWebサービスを呼び出す権限があるユーザー名を指定します。
  • パスワード
    上記ユーザー名に対応するパスワードを入力します。
  • Webメソッド
    使用するWebメソッドを選択します。
    今回はこのパラメーターが「StartSiteWorkflow」になります。
  • WorkflowName(string)
    Webサービスで実行するワークフローの名前を入力します。
    上図のように日本語での指定も可能です。

えっと、ここでのポイントは、ユーザー名の部分ですねー。
Webサービスを呼び出すユーザー名を指定するわけですが、今回はサイトワークフローを実行するWebサービスなので、サイトワークフローを実行するユーザーにもなるんですねー。

Webサービスを呼び出すユーザー = サイトワークフロー実行ユーザー

で、何がポイントかと言いますと、Nintex Workflowで作成したサイトワークフローを実行するには、スケジュール実行をするか、Nintex Formsのワークフロー開始フォームを使うしかないわけですけど、Nintex Formsの開始フォームで実行するといってもワークフローの実行権限がないとエラーになります。

つまり、「Webサービスの呼び出し」アクションを使うと、

 

サイトワークフローを実行するユーザーを指定できるのです!

 

なので、「臨時対応申請」のワークフローを実行したユーザーにサイトワークフローを実行する権限がなくても、サイトワークフローを実行できます。

つまりつまり、極端に言うと

 

「臨時対応申請」は、どのユーザーでもできるのです!

 

 

えー今回は、「StartSiteWorkflow」メソッドを使用しましたが、似たようなメソッドで「StartWorkflow」や「StartWorkflowOnListItem」ってのもあります。
こちらも名前の通り、ワークフロー(リスト/ライブラリ)の開始や、指定したアイテムのワークフローの開始ができるメソッドです。

これらのメソッドも今回の例と同じようにワークフローを実行するユーザーを指定することができるので、ワークフローから他のワークフローを実行したいときに、元のワークフローを実行したユーザーに次のワークフローを実行する権限がない場合などにも使えるんですねー。

 

何かワークフローワークフローって連呼していますね。。。

うーん、便利さが伝わったかなー。

 

次回は、もう少し早めに更新しますねー。

以上、神田でしたー。