Community Cloud のユーザライセンス判定のフローチャート

# はじめに

Community Cloud のユーザライセンスの判定が個人的に苦手なので、おばけのようなフローチャートを作って理解を進めています。フローチャート作りには PlantUML を利用します。

# VS Code + PlantUML

[こちら](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml) の拡張機能をインストールしてください。 

# PlantUML のコード

ご自由にカスタマイズしてお使いください。

```md:community-cloud-licenses.pu
@startuml community-cloud-licenses
title Community Cloud ライセンス (Identity, Channel Account, Salesforce Platform を除く)
start

if (ページビューが月50万回以下) then (true)
  :Enterprise Edition;
else (false)
  if (ページビューが月100万回以下) then (true)
  else (false)
    #HotPink:AEに相談;
  endif
  :Unlimited Edition;
endif

#Pink:Commerce Portals\nCustomer Community\nCustomer Community Plus\nPartner Community\nExternal Apps Plus;

if (\nロール階層\n共有ルール\n代理管理者\n) then (true)
  if (ユーザ数が200万以下) then (true)
  else (false)
    #HotPink:AEに相談;
  endif
  if (ロール数が5万以下) then (true)
  elseif (ロール数が10万未満) then (true)
    #HotPink:カスタマーサポートに相談;
  else (false)
    #HotPink:AEに相談;
  endif
  #Pink:Customer Community Plus\nPartner Community\nExternal Apps Plus;
elseif (ユーザ数が1,000万以下) then (true)
  #Pink:Commerce Portals\nCustomer Community;
else (false)
  #HotPink:AEに相談;
endif

if (取引先を作成) then (true)
  #Pink:Commerce Portals\nCustomer Community Plus\nPartner Community\nExternal Apps Plus;
else (false)
  #Pink:Customer Community;
endif

if (\nノートを参照\nService Cloud 機能（ケース、エンタイトルメント、サービス予約、作業指示、作業指示品目）を参照\n) then (true)
  #Pink:Customer Community\nCustomer Community Plus\nPartner Community\nExternal Apps Plus;
elseif (\nレポートを作成 ｜ ダッシュボード、Einstein Analyticsを参照\nコンテンツを参照\n活動を作成\nメールを送信\n承認申請\n) then (true)
  #Pink:Customer Community Plus\nPartner Community\nExternal Apps Plus;
elseif (ToDoを参照) then (true)
  #Pink:Commerce Portals\nCustomer Community;
elseif (行動とカレンダーを参照) then (true)
  #Pink:Customer Community;
else (false)
  #Pink:Commerce Portals;
endif

if (\nSales Cloud 機能（キャンペーン、リード、商談、見積）を参照\nテリトリー管理の有効化\n) then (true)
  #Pink:Partner Community\nExternal Apps Plus;
else (false)
  #Pink:Commerce Portals\nCustomer Community\nCustomer Community Plus;
endif

if (カスタムオブジェクト > 10) then (true)
  #Pink:Commerce Portals\nExternal Apps Plus;
else (false)
  #Pink:Customer Community\nCustomer Community Plus\nPartner Community;
endif

if (市場開発資金機能の有効化) then (true)
  #Pink:Partner Community;
else (false)
  #Pink:Commerce Portals\nCustomer Community\nCustomer Community Plus\nExternal Apps Plus;
endif

if (追加データストレージあり) then (true)
  if (> 1MB/人) then (true)
    if (> 2MB/人) then (true)
      if (> 5MB/人) then (true)
        if (> 10MB/人) then (true)
          if (> 20MB/人) then (true)
            #LightBlue:External Apps Plus;
          else (false)
            #LightBlue:External Apps Plus Login;
          endif
        else (false)
          #LightBlue:External Apps Login;
        endif
      else (false)
        #LightBlue:Partner Community;
      endif
    else (false)
      #LightBlue:Customer Community Plus;
    endif
  else (false)
    #LightBlue:Customer Community Plus Login\nPartner Community Login;
  endif
else (false)
  #LightBlue:External Apps\nCustomer Community\nCustomer Community Login;
endif

if (API Callあり) then (true)
  if (Daily > 10回/人) then (true)
    if (Daily > 200回/人) then (true)
      if (Daily > 400回/人) then (true)
        #LightBlue:External Apps Plus;
      else (false)
        #LightBlue:External Apps Plus Login;
      endif
    else (false)
      #LightBlue:External Apps Login\nCustomer Community Plus\nPartner Community;
    endif
  else (false)
    #LightBlue:Customer Community Plus Login\nPartner Community Login;
  endif
else (false)
  #LightBlue:External Apps\nCustomer Community\nCustomer Community Login;
endif

#HotPink:優先するライセンス;

if (Commerce Portals) then (true)
  #LightBlue:External Apps Login;
  #LightBlue:External Apps;
elseif (Customer Community) then (true)
  #LightBlue:Customer Community Login;
  #LightBlue:Customer Community;
elseif (Customer Community Plus) then (true)
  #LightBlue:Customer Community Plus Login;
  #LightBlue:Customer Community Plus;
elseif (Partner Community) then (true)
  #LightBlue:Partner Community Login;
  #LightBlue:Partner Community;
elseif (External Apps Plus) then (true)
  #LightBlue:External Apps Plus Login;
  #LightBlue:External Apps Plus;
else (false)
endif

stop
@enduml
```

# 結果

こうなります :point_right: [Medium 記事へ](https://medium.com/takahitomiyamoto/community-cloud-%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E5%88%A4%E5%AE%9A%E3%81%AE%E3%83%95%E3%83%AD%E3%83%BC%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88-9e0f6fd4a3f?sk=dc369f98ceee129b776cbb3eedce3050
)

# Acknowledgement

- [新しいアクティビティ図のベータ版の構文と機能 - PlantUML](https://plantuml.com/ja/activity-diagram-beta)
- [コミュニティユーザライセンス](https://help.salesforce.com/articleView?id=users_license_types_communities.htm&type=5)