0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HTTP コールアウト

Last updated at Posted at 2024-07-06

フローの中でApexを使って外部システムにコールアウトさせて結果をメール送信するフローを作りましたが、機能しないですね。

image.png

System.CalloutException: You have uncommitted work pending. Please commit or rollback before calling out

1での説明によると@InvocableMethodがコールアウトとして認識されているから? ダメなのかな。

以下に@future(callout=true)を使って回避策が提案されていましたので、分割して作ってみたら...

Future methodsは戻値が持てないらしい... あああやっぱり不可能です。

Future methods do not support return type of String


An Apex error occurred: System.CalloutException: You have uncommitted work pending. Please commit or rollback before calling out

@InvocableMethod自体はコールアウトとして認識してください。ブラウザーからSalesforceに繋がりますから。

解決方法はこちらです。要するにフローは@InvocableMethodのメソッドを実行します。@future(callout=true)にした別のメソッドはHTTPリクエストを実行します。結果として、フローは終了しますが、@futureにしたメソッドはいつか自動的に発動してくれます。

実際にはApexクラスから外部のRSSサイトにアクセスしてレスポンスを取得していますか?

そうれあれば、 @InvocableMethod アノテーションを使うように変更できれば、FlowからこのApexを呼び出して結果を得ることはできると思います。

フローで Apex アクションを実行
https://help.salesforce.com/s/articleView?id=sf.flow_build_extend_apex.htm&type=5

RSSの結果に対する処理が複雑でなければ、フロー内で「HTTP コールアウト」を使うこともできると思います。

https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007TtIqTSAV

That prompted me to look deeper into the API service's documentation, then I found that the ArcGIS REST API supports responses in several formats. &f=json for response in a JSON object in Esri JSON format.

•ESRI Developer ArcGIS REST APIs Output formats

Problem solved! This was not a Salesforce problem at all.

API サービスのドキュメントを詳しく調べたところ、ArcGIS REST API が複数の形式での応答をサポートしていることがわかりました。Esri JSON 形式の JSON オブジェクトでの応答の場合は &f=json です。

• ESRI Developer ArcGIS REST API 出力形式

問題は解決しました。これは Salesforce の問題ではありませんでした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?