【Salesforce】Apexと画面フローで湯婆婆

## この記事は
SalesforceのApexと画面フローで湯婆婆作って遊んでみたので記録。

## 実行環境
Trailhead Playground
（言語設定が英語なのであしからず）

## 作ってみる
### Apex
渡された文字列からランダムに一文字返すクラスを作る。
```RandomCharAction.apxc
public with sharing class RandomCharAction {
	@InvocableMethod
    public static List<String> getRandomChar(List<String> inputs) {
        List<String> result = new List<String>();
        for(String input : inputs){
        	if (String.isEmpty(input)){
            	result.add('');
            } else {
        		Integer randomIndex = Math.floor(Math.random() * input.length()).intValue();
                System.debug(randomIndex);
        		result.add(input.substring(randomIndex, randomIndex+1));                
            }
    	}
        System.debug(result);
        return result;
    }
}
```

### フロー
#### 下準備
+ Contactのラベルを「従業員」に変更する。（しなくてもいい）
+ Contactにカスタム項目「元の名前」（テキスト型）を作成する。
+ ネットから湯婆婆のイイ感じの画像を拾ってきて静的リソースに登録する。

#### フロー作成
Flow Builderで画面フローを作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3978744/7b07515a-deaa-4095-9874-ec455153e1c8.png)

以下、ざっくり各エレメントの説明。
+ `湯婆婆_input`：入力画面。テキスト要素で名前を受け取る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3978744/2c56a286-2a6a-4695-8f54-1e22313cfb30.png)

+ `湯婆婆_check`：Is Blankで入力が空欄・空白でないかチェック
（OKの分岐はラベルのNoneをリネームするだけ）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3978744/ebedc26b-1429-4c33-b3aa-d259c366ee6d.png)

+ `湯婆婆_NG`：エラー画面。空欄だった場合に突っ返す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3978744/54dd6e5f-b492-4bc1-bf48-e75545f91438.png)

+ `Assignment`：受け取った名前を変数に代入する。
（テキスト変数の作成が必要）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3978744/966e448c-4b79-4dae-b93d-f24fac8a65bd.png)

+ `RandomCharAction`：Apexクラスに変数を渡す。ランダムで1文字ピックアップした新しい名前が返ってくる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3978744/ac742c55-c3af-4aa8-8402-69d6ad309a73.png)

+ `従業員追加`：従業員（Contact）レコードを追加する。元の名前と新しい名前の両方を登録する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3978744/1edb2e87-01bf-4c90-ae93-6cfd2f04f286.png)

+ `湯婆婆_output`：結果画面。元の名前と新しい名前を表示する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3978744/f62130da-a033-4ea8-bbe0-ac3c40e5e749.png)


## 動かしてみる
1. 入力画面
名前を入れて「契約書を渡す」を押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3978744/d7a71f1f-1e53-4b98-b805-6ad58839da51.png)

2. 結果画面
名前を付けてくれる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3978744/9a8a3efb-59be-4b5e-a850-34aa3c45411a.png)
    2_1. ボタンについて
    「やり直す」を押下すると名前が入った状態の1の画面が表示される。
    「もう一度」を押下すると何も入っていない状態の1の画面が表示される。
    2_2. レコード作成について
    元の名前と新しい名前が従業員レコードに追加される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3978744/4cbd7b88-f24f-4e46-a9eb-db5fc2374914.png)

3. エラー画面
1の入力画面で空欄か空白のみを入れるとこうなる。
「名前を書く」押下で入力画面に戻る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3978744/a231832e-4af3-4124-8ead-bb14f6702909.png)

### 参考
+ http://arrowhead.blog25.fc2.com/blog-entry-2224.html
+ https://help.salesforce.com/s/articleView?id=release-notes.rn_automate_flow_builder_isblank_isempty.htm&release=250&type=5
+ https://sf.forum.circlace.com/articles/946417939726065664
+ https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000JeSGLSA3

ローコードの便利さが良くわかった湯婆婆でした。おしまい。