サンプル問題解いてみた　OutSystems 11 Associate Web Developer Certification


2020/6/1 @jyunji_watanabe さんからの指摘を反映しました。


1. はじめに

今、OutSystems 11 Associate Web Developer Certificationのための勉強中なのですが、
サンプル問題があったのでそれを解いた。復習もかねてメモを残す。
ちなみに私は英語がわからないので、意訳・メモが間違っている場合もあるので注意されたし。

---

Q1. Considering Session Variables, which of the following options is correct?

A. Session Variables should be used to store data that can be shared between different end-users.
B. Session Variables should be used to temporarily store relevant end-user data on the server-side.
C. Session Variables values are kept, even after the end-user logs out of the application.
D. Session Variables values can only be assigned in Server Actions.

---

Ans. B

セッション変数は、セッションを接続している間、保持することができる変数。
なので、正解はB。
アプリをログアウトするまでとか、別のエンドユーザとデータの共有はできない。

---

Q2. Consider that we want to add the Urgent record to the Priority Static Entity. What is the correct way to accomplish this at runtime?

A. Use the CreateOrUpdatePriority or the CreatePriority Entity Action with the new record as input.
B. Use the CreatePriority Entity Action with the new record as input, since records from a Static Entity cannot beupdated at runtime.
C. Use the SQL Query Tool, since Static Entities only have the Get Entity Action available.
D. It is not possible, since Static Entity records can only be created or updated at design time.

---

Ans. D

Static Entityは、アプリケーション実行時に作成/削除/更新することができない
Get<Static Entity name>アクションのみ存在する。


---

Q3. When the drag and drop action in the image below is complete, the MovieGenre Static Entity is added to the Aggregate. Which of the following statements is correct?

A. The Join must be created manually, if the MovieGenreId attribute in the Movie Entity is non-mandatory.
B. A With or Without join is created, if the MovieGenreId attribute in the Movie Entity is mandatory.
C. A With join is created, if the MovieGenreId attribute in the Movie Entity is non-mandatory.
D. A Only With join is created, if the MovieGenreId attribute in the Movie Entity is mandatory.

---

Ans. D

これはよくわからない。教えていただきたいです。

2020/6/1　追記
参照属性があるので、参照先のEntityをドラッグ＆ドロップすると、結合を自動生成してくれる機能の問題
MovieGenreId属性はMovieGenre Entityを参照する属性。
この属性がMandatoryであるということは、必ず紐づくMovieGenreレコードがあるはず。
　だからこの関係を表すのに、「MovieとMovieGenreが同じMovieGenreIdであるレコードを抽出する」内部結合になる
Mandatory=Noであるということは、MovieGenreIdは空のこともあるし、紐づくMovieGenreIdが存在することもある
　だからこの関係を表すのに、「Movieの全レコードを返す。MovieGenreIdが入力されていて紐づくMovieGenreレコードがあるときだけMovieGenreを結合する」左外部結合になる



Only With（内部結合）　-- inner join
With or Without（左外部結合） -- left outer join
With（完全外部結合） -- full outer join


![結合についてイメージ](https://mathwords.net/wp-content/uploads/2017/06/tablejoin1.png)

---

Q4. In OutSystems, an Entity Identifier...
A. ... is created by default with Long Integer data type and the default value is 1.
B. ... is created by default with Long Integer data type and set as Auto Number.
C. ... must have Long Integer data type and must be set as Auto Number.
D. ... must have Long Integer data type, but it doesn’t need to be set as Auto Number.

---

Ans.  B
default value は1ではない。
必ずしもLong Integer型でなくてもよい。text型、integer型...



---

Q5. Consider the following Screen Action, that is bound to a Save button inside the PersonForm Form, and is executed using the Submit method. If the user submits a date of birth in the future, which of the following options is true?

A. The Assign should set the Valid properties of the Input and the PersonForm to False.
B. The Assign should only set the ValidationMessage of the Input, since the Valid property of the PersonForm
is set automatically.
C. The Assign should set the Valid property of the Input to False. The ValidationMessage of the Input is not mandatory. 
D. The Assign should set the Valid property of the PersonForm to False.

---

Ans. C

将来日付でDateOfBirthをsubmitした場合の適切な処理は？という問題。

・入力した値が正しくないので、不正な値を入力したInputのValid propertyをFalseにする。
・ValidationMessageにエラーメッセージを定義してあげるのがよいが、必須ではない。


PersonFormのValid propertyまでFalseにする必要はない。

---

Q6. Consider the need to have several Button widgets on a Web Application with a specific style. Knowing that this will be a CSS class, where should it be added?

A. To the OutSystems UI Base Theme.
B. To the Theme used by the application module.
C. To all Screens and Web Blocks where such Buttons exist. 
D. To all such Buttons, as inline CSS.

---

Ans. B

・UI Base Themeは、read only
・すべてのButtonにCSSを適用する必要はない


---

Q7. Consider an application with two entities: Order and Product. How can a many-to-many relationship be created between these two Entities?

A. By creating an attribute in the Order Entity of type Product Identifier and another attribute in the Product Entity of type Order Identifier.
B. By creating a third Entity OrderProduct and adding an attribute to both Order and Product Entities of type OrderProduct Identifier.
C. By creating a third Entity OrderProduct and adding two attributes to it of type Order Identifier and Product Identifier. 
D. By creating an attribute in the Order Entity of type Product Identifier.

---

Ans. C

・many-to-many　なので、中間テーブルが必要。じゃあ中間テーブルってどのような要素が必要かを問われている。
・OrderIDとProductIDの2つのattributeが必要。


---

Q8. Considering Button and Link widgets, which of the following options is false?

A. Both Link and Button widgets can be used to Navigate to a Screen in the application.
B. Button widgets can use the Ajax Submit method but Link widgets cannot.
C. Both Link and Button widgets can use the Submit method with an Action as the Destination. 
D. Link widgets can enclose other widgets but Button widgets cannot.

---

Ans. B

Button WidgetsもLink Widgetsも両方とも、Navigate・Submit・Ajax Submitが使える。



---

Q9. Regarding the use of SOAP and REST Web Services in OutSystems, which of the following options is false? 

A. Both SOAP and REST requests are logged by default.
B. When exposing a SOAP Web Service, the WSDL file needs to be created manually.
C. OutSystems allows consuming all methods of a REST API if it has a Swagger specification.
D. Consumed REST APIs can be customized using callbacks.

---

Ans. ~~D~~ B

~~REST APIでは、コールバックを使用してカスタマイズすることはできない。~~
よくわからないが手動ではWSDLが作成されないのだと思う。

SOAPのことはよくわかっていない。

[ここらへん](https://www.ibm.com/developerworks/jp/webservices/library/ws-intwsdl/)を読めばいいのか

2020/6/1 追記：
ExposeしたSOAPのWSDLは自動で作成されるようです。
(こちらを参照)[https://success.outsystems.com/Documentation/ja-jp/11/Extensibility_and_Integration/SOAP/Exposing_SOAP_Web_Services/Expose_a_SOAP_Web_Service

]


---
Q10. Considering Screen Actions in a Web application, which of the following options is false? 

A. Screen Actions can call Server Actions.
B. Screen Actions can have multiple End nodes.
C. Screen Actions can be called from the Screen Preparation.
D. Screen Actions run logic when the user interacts with the widgets on the screen.

---

Ans. C

Screen Actionを、Preparationで呼ぶことはできない。呼ぶことができるのは、Server Action。


---

Q11. Consider the OSMDb Web Application that is being developed alongside other applications in a Development Environment. The OSMDb application has a Movie Entity that is Public and has the Expose Read Only property set to Yes. Which of the following options is true?

A. Consumer modules can query the Movie Entity using Aggregates.
B. The Movie Entity can only be referenced by modules within the OSMDb application.
C. Consumer modules can modify data in the Movie Entity using the UPDATE SQL Query.
D. The DeleteMovie Entity Action can be used by consumer modules within the same application.

---

Ans. A

・Bで何度も間違えてしまう。OSMDb application内のみで参照可能とあるがそうではない。別アプリケーションからも参照可能。
・Cは、Expose Read OnlyがYESだとコンシューマモジュールからデータが保護されるのでUPDATEはできなくなるのでNG
・Dは、Cと同じDELETEはできない。

よって、A。Aggregateは使えるしクエリも使えるってことですね。

---
Q12. Consider the following List_Navigation that allows you to navigate through the pages of a Table Records. In the properties of the List_Navigation there’s an OnNotify Action that is executed when the user clicks on a new page number. To make sure that the navigation across pages works properly, what should be the execution order inside the OnNotify Action?

A. Refresh the data source. Ajax Refresh the Table Records. Ajax Refresh the List_Navigation.
B. Ajax Refresh the List_Navigation widget. Refresh the data source. Ajax Refresh the Table Records. 
C. Ajax Refresh the Table Records. Refresh the data source. Ajax Refresh the List_Navigation widget. 
D. Ajax Refresh the List_Navigation widget. Ajax Refresh the Table Records. Refresh the data source.

---

Ans. A

まずはデータソースの更新（再度SQLの実行）→表示されているテーブルの内容更新→List_Navigation更新かな。
常識的にわかるけど、どこかに書いてあったかな？


---
Q13. Considering the Button properties shown below, which of the following options is correct?

A. The Button will only be displayed to users with the specific Administrator Role.
B. A User without the Registered role is redirected to the Login screen.
C. When the Button is clicked, the Built-in Validations will be checked only on the server side if the client validations fail to execute.
D. All logged in users will be able to click this Button.

---

Ans. D

・ボタンは、ログインしている人なら誰でも見れる
~~・ログインしていない人は、ログイン画面にリダイレクトではなくエラーが表示される。たしか、403~~
2020/6/1　追記：
・Registered Roleを持っていないユーザはいない。


・クライアンサイドのバリデーションが成功した後にサーバサイドも実行される。クライアントが失敗したときだけサーバサイドを実行するわけではない。

---
Q14. Considering Aggregates in a Web application, which of the following options is false?

A. Aggregates allow to visually add filters to a query.
B. Aggregates support calculated attributes over multiple attributes.
C. Aggregates have a List as output that type matches the definition of the query.
D. Aggregates allow hiding columns to reduce the number of attributes returned in the query.

---

Ans. D

カラムを隠していても返却されるattributesは変わらない。



---

Q15. Considering the following properties from the CinemaDetail Screen, which users will have access to this Screen?

A. Only users with both OSMDbAdmin and OSMDbUser roles. 
B. Any user with the OSMDbAdmin role.
C. Any user with username and password.
D. Only users with the OSMDbUser role.

---

Ans. B

OSMDbAdmin　と　OSMDbUser　どちらかの権限を持っている人は閲覧可能
Onlyではない。

---

Q16. Considering the properties of the MovieRating Server Action, which of the following options is false?

A. The Input Parameters of the MovieRating Server Action can be of any data type.
B. The MovieRating Server Action can be used within the action flow of a Preparation. 
C. The MovieRating Server Action can have multiple Output Parameters.
D. The MovieRating Server Action can be called from the Expression Editor.

---

Ans. C

・Function がYesの場合は、Outputは一つだけ。 Expression内で呼び出すことが可能になる。
・Function がチェックされていない場合は、複数のInputパラメータと複数のOutputパラメータを所持することができる。
・Server Actionは、任意のアクションフローで呼び出しが可能。Screen Actionは、同じ画面のウィジェットにのみバインドが可能。


---
Q17. Regarding Web Blocks and Events, which of the following options is false?

A. Events can only be defined and triggered in the scope of Web Blocks.
B. The Trigger Event statement allows a Web Block to notify its parent.
C. In the parent of a Web Block, the same Screen Action can be used to handle different Events. 
D. An Event Handler on the parent has access to the Screen Actions of the Block.

---

Ans. D

Web Blockは、親のスコープへの暗黙的なアクセスはできません。

（google翻訳）D.親のイベントハンドラーは、ブロックの画面アクションにアクセスできます。

2020/6/1 追記：
親（Blockを配置した先の画面）は、Input Parameterを介してしか、Blockの内部を操作できない。





---

Q18. Consider the Button widget properties in the screenshot below. What happens when the Save Button is clicked?

A. The Save Screen Action runs. The Screen Preparation does not run.
B. The Save Screen Action runs, followed by the Screen Preparation and then the entire Screen is rebuilt. 
C. The Save Screen Action runs and the entire Screen is rebuilt. The Screen Preparation does not run.
D. The Screen Preparation runs, followed by the Save Screen Action.
   www.outsystems.com

---

Ans. A

・ Ajax Submitだから画面を再構築されることはない。Screen PreparationもSaveメソッド終了後に動作することはない。

---
 
Q19. The following SQL Query selects three required attributes from the Question and QuestionLocale Entities. What should be added as the Output Entities / Structures of this query?

A. The Question and QuestionLocale Entities.
B. A new Structure with all the Question and QuestionLocale Entity attributes.
C. A new Structure with the three attributes being fetched in the SELECT clause.
D. Nothing. OutSystems automatically optimizes the SQL Query and the output will only include the necessary attributes.

---

Ans. C

・SQLクエリで取得したい値は3つなので、３つの値が取得できるStructureを作成すればよい。



---

Q20. Considering the following Link widget properties, which of the following options is correct?

A. When clicking on the Link, there’s a request to the server to get the MovieDetail Screen. The Preparation will run before building the Screen.
B. When clicking on the Link, there’s a request to the server to get the MovieDetail Screen. The data on the current page is submitted to the server.
C. The On Click Destination cannot be changed to an External URL.
D. The On Click Destination can only be set to a Screen from the current module.

---

Ans. A

---