Hot to build Model-driven App in Power Apps - Part III

Hot to build Model-driven App in Power Apps - Part III

Table of content:

  • Introducing model-driven apps
  • Building blocks of model-driven apps
  • Design model-driven apps
  • Create a model-driven app I
  • Control security when sharing model-driven apps
  • Incorporate business process flows
  • Create a model-driven app II
  • Summary


Introducing model-driven apps

Model-driven app design is an approach that focuses on adding dashboards, forms, views, and charts to your apps. With little or no code, you can build apps that are simple or very complex.

No alt text provided for this image

The approaches to making model-driven apps

Model-driven apps have three design phases:

  1. Model your business data
  2. Define your business processes
  3. Build the app

Model your business data

The model-driven design uses metadata-driven architecture so that designers can customize apps without writing code. To model business data, you determine what data the app will need and how that data will relate to other data. Metadata means?data about data?and it defines the structure of the data stored in Microsoft Dataverse.

Define your business processes

Defining and enforcing consistent business processes is a key aspect of model-driven app design. Consistent processes help ensure that your app users can focus on their work and not worry about having to remember to perform a set of manual steps. Processes can be simple or complex, and they often change over time.

Build the app

After modeling data and defining processes, you build your app by selecting and setting up the components you need in the App Designer.

No alt text provided for this image

Building blocks of model-driven apps

A model-driven app consists of several components that you select by using the App Designer. The components and component properties become the metadata. Let's look more closely at these components.

Data

The data components determine what data the app will be based upon.

Table component:

  • Description: Tables are items with properties that you track. Examples include contacts and accounts. Many standard tables are available. You can customize a non-system standard table (or production table). You can also create a custom table from scratch.
  • Designer: Table designer

Column component:

  • Description: Columns are properties that are associated with a table and help define that table. A column is defined by a data type, which determines the type of data that can be entered or selected. Examples of data types include text, number, date and time, currency, and lookup (which creates a relationship with another table). columns are typically used with forms, views, and searches.
  • Designer: Table designer

Relationship component:

  • Description: Relationships define how tables can be related to each other. There are 1:N (one-to-many), N:1 (many-to-one), and N: N (many-to-many) relationships. For example, adding a lookup column to a table creates a new 1:N relationship between the two tables and lets you add that lookup column to a form.
  • Designer: Table designer

Choice column component:

  • Description: This type of column shows a control that lets the user select among predefined options. Each option has a number value and a label. Choice columns can require either a single value or multiple values.
  • Designer: Table designer

User interface

The user interface components determine how users will interact with the app.

App Component:

  • Description: Apps determine the app fundamentals, like components, properties, the client type, and the URL.
  • Designer: App designer

Site map Component:

  • Description: A site map specifies the navigation for your app.
  • Designer: Site map designer

Form Component:

  • Description: Forms include a set of data entry columns for a given table. This set of data entry columns matches the items that your organization tracks for the table. One example is a set of data entry columns where users enter relevant information to track a customer's previous orders together with specific requested reorder dates.
  • Designer: Form designer

View Component:

  • Description: Views define how a list of records for a specific table appears in your app. A view defines the columns shown, the width of each column, the sort behavior, and the default filters.
  • Designer: View designer

No alt text provided for this image

Logic

The logic components determine what business processes, rules, and automation the app will have. Microsoft Power Apps makers use a designer that's specific to the type of process or rule.

Type of logic - Business process flow:

  • Description: Business process flows walk users through a standard business process. Use a business process flow if you want everyone to handle customer service requests the same way. Or you can use a business process flow to require staff to gain approval for an invoice before submitting an order.
  • Designer: Business process flow designer

Type of the logic - Workflow:

  • Description: Workflows automate business processes without a user interface. Designers use workflows to initiate automation that doesn't require any user interaction.
  • Designer: Workflow designer

Type of the logic - Actions:

  • Description: Actions are a type of process that lets you manually invoke actions, including custom actions, directly from a workflow.
  • Designer: Process designer

Type of the logic - Business rule:

  • Description: Business rules apply rules or recommendation logic to a form to set column requirements, hide columns, validate data, and more. App designers use a simple interface to implement and maintain fast-changing and commonly used rules.
  • Designer: Business rule designer

Type of the logic - Flows:

  • Description: Power Automate is a cloud-based service that lets you create automated workflows between apps and services to get notifications, sync files, collect data, and more.
  • Designer: Power Automate

Visualization

The visualization components determine what type of data and reporting the app will show.

Chart Component:

  • Description: Charts are individual graphical visualizations that can appear in a view or a form or that can be added to a dashboard.
  • Designer: Chart designer

Dashboard Component:

  • Description: Dashboards show one or more graphical visualizations that provide an overview of actionable business data.
  • Designer: Dashboard designer

Embedded Microsoft Power BI Component:

  • Description: Power BI adds embedded Power BI tiles and dashboards to your app. Power BI is a cloud-based service that provides business intelligence (BI) insight.
  • Designer: A combination of chart designer, dashboard designer, and Power BI

No alt text provided for this image

Advanced model-driven apps

Solution Explorer is used to make advanced model-driven apps. By using the navigation pane on the left side of the tool, you can navigate a hierarchy that consists of all app components.

To access the classic Solution Explorer, you must first select a Solution then select?Switch to classic.

No alt text provided for this image
No alt text provided for this image

Design model-driven apps

As an App Maker, before you begin building your Power Apps solution, it’s recommended to go through a design process. When designing your Power Apps solution, there are several different factors to consider:

  • Business Requirements
  • Data Model
  • Business Logic
  • Output

By going through a simple design process, you can flush out any minor issues before they become a larger problem once the app is in production.

Here is a quick look at the App Designer for an example Model-driven app called “Fundraiser.”

No alt text provided for this image

When the app is put into Play Mode, it looks completely different.

No alt text provided for this image

Understand the needs of the user

With Model-driven apps, the name says it all. Your primary design goal is to get your Microsoft Dataverse data model in order. With that in place, Power Apps, and a Model-driven app will be created for you from that model.

Model-driven apps are created using the App Designer. You will choose the tables, dashboards, Business Process flows, forms, and other components that you want to make available in your app, and then the app will be created for you. This means you will need to spend more time understanding what your user needs than how it is going to look.

Business Requirements

The first step in the process is to understand your business requirements. Work with the app stakeholders to consider your security, accessibility, data, and design needs.

For security, the Dataverse has a robust security model. You will want to consider how securing your app’s data affects your app and what security model best supports your business needs. There are lots of options available, including hierarchy security, row-level security, to name a few. You will need to confirm your data is secured to meet your needs, and then your app will honor that security. For more information, see?Security in Dataverse.

During this process, you will also want to identify any government regulations or authentication/authorization requirements (if applicable). You may want to implement multi-factor authentication but will need to think about how this will affect users connecting to your application. You don’t necessarily have to have all the answers to your questions here; you just want to flush out all of the requirements.

Finally, does your app need to be available when the user is disconnected from the internet? This is called Offline Mode and is supported by the Dataverse and Model-driven apps when using iOS or Android clients. It does require additional design considerations. For more information, see?Set up mobile offline synchronization.

Data Model

As you begin the data modeling process, there are a couple of important questions to ask yourself:

  • What type of data will your solution be storing and or collecting?
  • How will this data relate or coincide with the other data you are working with?

These questions are important when designing a model-driven application because of how model-driven applications function. Remember, model-driven applications use a metadata-driven architecture. This means a large portion of the model-driven app is based on how your data is modeled, and there is no need to write custom code to alter the app design. To expand on this a little further, when thinking about Metadata this simply means “data about data” and this data defines the structure stored in the system.

You can view the app metadata by reviewing the table in the Dataverse.

No alt text provided for this image

You can also view the app metadata by putting the app in Play mode.

No alt text provided for this image

In the example above, for the Fundraiser table, there are several pieces of metadata being collected, such as:

  • Name
  • Fundraiser Goal
  • Owner
  • Total Donations
  • Created On

Each solution you develop and deploy will have its own set of metadata to collect. This basic understanding of metadata is important as you continue the design process and model your app data.

As you think about your data model also think about column types. When adding columns to your table in the Dataverse, the column type you choose will determine how users enter and view that in your Model-driven app. Option sets show as dropdowns, currency shows with currency symbols, while decimal numbers don’t. These little changes in the table can have a profound effect on how your user experiences your app.

Note - If a column type needs to be changed to a different column type, (i.e. text column to a choice), then you will need to delete that column and recreate with the correct column type. This will cause you to lose any data associated with that column.

No alt text provided for this image

User Interface (UI) and User Experience (UX)

When building a Model-driven app, most of the UI and UX are predetermined for you. You define the data model to build from, and then Power Apps determines the controls used in the app. You can influence these controls by determining what table assets you include. You define in the App Designer What Forms, Views, Charts, and Dashboards are used in the app. You also control the navigation options via the Site Map. As you are planning your app, determine which components are needed in the app design, and create them before building your app.

To continue building off of the example we’ve been using throughout this module, below is a simple Model-driven Form, which captures various pieces of information for creating a New Fundraiser.

Here is an example of what the New Fundraiser form looks like when editing from the App Designer.

No alt text provided for this image

Business Logic

When incorporating business logic in your app, there are two primary options available. You can set?Business Rules?on your Dataverse tables or you can build?Business Process Flows.

With?Business Rules,?you will define behaviors at the data layer. This is great for changing when a column is required, setting a default value, or even showing or hiding a column based on criteria. An example could be a table for tracking expenses. You could have a column for the type of travel and then build a business rule that says if they choose automobile then the mileage column is required, else it is optional. This gives you great power to make sure you maintain data consistency in all scenarios.

Business Process Flows?are used to guide users through using your app. These workflows can provide visuals on the next steps based on the status of the data and facilitate other actions that you want to occur as the user uses the app. Business Process Flows lets you bring automation to your app and make it more of a guided experience than just a place to enter data.

Output

A common output need for apps is to visualize the data. For this requirement, you can implement Dashboards with custom filters and visual graphics to tie all of this data together right in your app. When creating your Dashboards, make sure it’s simple for your users to consume without overwhelming them with all the data. Provide high-level snapshots of your data and allow them to use filters to dive deeper into the data if needed.

No alt text provided for this image

Additional third-party solutions and app accelerators

It is also important to know about the different App accelerators and third-party solutions available to you. Depending on the industry you are in, Health, Financial, Banking, Education, Non- Profit, Automotive, or Media, Microsoft has released several accelerators or foundational components to assist you with quickly standing up your solution. For more information, see?the Industry accelerators overview.

For more information. see?Planning a Power Apps project.

Create a model-driven app I

In this unit, you'll create a model-driven app by using one of the standard tables available in your Microsoft Power Apps environment.

  • On the?Home?page, select the?Model-driven app from blank.
  • Click?Create.

No alt text provided for this image

  • On the?Create a New App?page, enter a name and description for the app.
  • Select?Done. Your new app appears in the App Designer, and you can now add components to it.

Add components to your app

You add components to your app by using the App Designer.

  • Select the?Open the Site Map Designer?pencil icon to open the site map designer.

No alt text provided for this image

  • In the site map designer, select?New Subarea, and then, in the right pane on the?Properties?tab, select the following properties:

- Type:?Table

- Table:?Account

?Note - If?Account?is not an option as a table, you may not have any sample data in your environment. Refer to this exercise on?how to create sample apps and data.

No alt text provided for this image

  • Select?Save And Close.
  • In the App Designer, select?Forms, and then, in the right pane under?Main Forms, select the?Account?form.

No alt text provided for this image

  • In the App Designer, select?Views, then select the following properties:

- Active Accounts

- All Accounts

- My Active Accounts

  • In the App Designer, select?Charts, then select the?Accounts by Industry?chart.
  • On the App Designer toolbar, select?Save.

Publish your app

On the App Designer toolbar, select?Publish. After you publish the app, it's ready for you to run or share with others.

Above My Active Accounts, select?Show Chart.

If the sample data for your accounts do not have an Industry populated, go into a few accounts and add an Industry. Once you have updated a few accounts with industry the chart will update as well.

No alt text provided for this image

Control security when sharing model-driven apps

Microsoft Power Apps uses role-based security for sharing. A security role includes privileges that define a set of actions that can be performed in the app. All app users must be assigned to one or more predefined or custom security roles.

Roles can be assigned to individual users or teams. When a user or a team is assigned to a role, that user or all members of that team are granted the set of privileges associated with the role.

In this unit, you'll learn how to share a model-driven app so that others can use it.

Specifically, you'll learn how to:

  • Create a custom security role.
  • Assign users to the custom security role.
  • Assign the security role to an app.

To share an app, you must have the Environment Admin or System Admin role.

Scenario

Note - This scenario builds on ideas and concepts from the previous units. To complete this exercise, you will first need to create an app as described in the previous unit of this module and create the Pet table as described in the unit?Create a Microsoft Dataverse table?of?Get started with Dataverse Service module.

This unit uses the example of a company named Contoso, which has a pet grooming business that services dogs and cats. An app that has a custom table for tracking the pet grooming business has already been created and published.

The app must be shared so that the pet grooming staff can use it. To share the app, an admin or app maker assigns one or more security roles to users and the app.

Create or set up a security role

The Power Apps environment includes predefined security roles. These roles reflect common user tasks, and the access levels that are defined follow the security best practice of providing access to the minimum amount of business data that are required to use the app.

Remember that the Contoso pet grooming app is based on a custom table. Because the table is custom, privileges must be explicitly specified before users can work in it. To do this, you can use either of the following approaches:

  • Expand an existing predefined security role so that it includes privileges on rows that are based on the custom table.
  • Create a custom security role to manage privileges for users of the app.

Because the environment that will maintain the pet grooming rows is also used for other apps that the Contoso company runs, a custom security role that's specific to the pet grooming app will be created. Additionally, two different sets of access privileges are required:

  • Pet grooming technicians just need to read, update, and attach other rows. Therefore, their security role will have read, write, and append privileges.
  • Pet grooming schedulers need all the privileges that pet grooming technicians have. In addition, they must be able to create, append to, delete, and share rows. Therefore, their security role will have to create, read, write, append, delete, assign, append to, and share privileges.

To learn more about access and the scope of the different privileges, see?Security roles.

Create a custom security role

  • Sign in to?Power Apps?by using your organizational account. If you don't already have an account, select?Get started free.
  • For your new app, select the?...?to the right of the name, and then click?Share.
  • In the?Share?dialog box, select your app at the top left and then select the drop-down next to the environment on the right. Select?Manage security role.

No alt text provided for this image

  • On the?All Roles?page, click?New.
  • In the?Role Name?box, enter?Pet Grooming Technicians.
  • In the Security Role designer, on the?Custom Tables?tab, find the?Pet?table.
  • On the?Pet?row, click?Read,?Write, and?Append?four times, to set the scope for each organization??is selected:

No alt text provided for this image

  • The pet grooming app also has a relationship with the account table. On the?Core Rows?tab, on the?Account?row select the?Read?privilege four times until it is set to?organization?scope.
  • Click?Save and Close.
  • In the Security Role designer, select?New,?and then in the?Role Name?box, enter?Pet Grooming Schedulers.
  • On the?Custom Tables?tab, find the?Pet?table.
  • On the?Pet?row, click each of the following privileges four times, until the?organization?scope is selected:?Create,?Read,?Write,?Delete,?Append,?Append To,?Assign, and?Share.
  • The pet grooming app also has a relationship with the account table, and schedulers must be able to create and change account rows. Therefore, on the?Core rows?tab, on the?Account?row, select each of the following privileges four times, until the?organization?scope is selected:?Create,?Read,?Write,?Delete,?Append,?Append To,?Assign, and?Share.
  • Select?Save and Close.

Assign security roles to users

Security roles control a user's access to data through a set of access levels and permissions. The combination of access levels and permissions that's included in a specific security role sets limits on the user's view of data and interactions with that data.

Assign a security role to the pet grooming technicians

  • Select the model-driven app you created in the previous unit and click?Share.
  • In the Share dialog box, select your app on the left and then select the drop-down next to the environment name on the right and then choose the Pet Grooming Technicians role.

No alt text provided for this image

  • In the list below the app, select a few of your users to be pet groomers.
  • Select the drop-down next to the environment name and choose?the Pet Grooming Technicians'?security role to assign it to that user.
  • Select?Share?at the bottom when finished.

Assign a security role to the pet grooming schedulers

  1. In the Share dialog box, select your app on the left and then select the drop-down next to the environment name on the right and then choose the Pet Grooming Schedulers role.
  2. In the list below the app, select a few of your users to be pet grooming schedulers.
  3. Select the drop-down next to the environment name and choose?the Pet Grooming Schedulers?security role to assign it to that user.
  4. Select?Share?at the bottom when finished.

About predefined security roles

The following predefined roles are available with a PowerApps environment. Unless otherwise noted, all the privileges have global scope.

Security role - Environment Maker

  • Privileges - None
  • Description - Users who have this role can create new resources that are associated with an environment, including apps, connections, custom application programming interfaces (APIs), gateways, and flows that use Microsoft Flow. But these users can't access the data in an environment. To learn more about environments, see?Announcing Power Apps environments.

Security role - System Administrator

  • Privileges - Create, Read, Write, Delete, Customize
  • Description - This role has full permission to customize or administer the environment, including creating, changing, and assigning security roles. The user who has this role can view all data in the environment. To learn more, see?Privileges required for customization.

Security role - System Customizer

  • Privileges - Create (self), Read (self), Write (self), Delete (self), Customizations
  • Description - This role has full permission to customize the environment. But users who have this role can view rows only for environment tables that they create. To learn more, see?Privileges required for customization.

Security Role - Basic User

  • Privileges - Read, Create (self), write (self), delete (self)
  • Description - Users who have this role can run an app in the environment and perform common tasks for the rows they own.

Security role - Delegate

  • Privileges - Act on behalf of another user
  • Description - This role lets code run as or impersonate another user. This role is typically used with another security role to provide access to rows. To learn more, see?Impersonate another user.

Incorporate business process flows

You can help ensure that people enter data consistently and follow the same steps every time they work with a customer by creating a business process flow.

For example, you might want to create a business process flow to have everyone handle customer service requests the same way or to require that people get approval for an invoice before submitting an order. Business process flows use the same underlying technology as other processes, but the capabilities that they provide are very different from other features that use processes. To learn how to create or edit a business process flow, see?Create a business process flow

Use business process flows

Why should you use business process flows? Business process flows provide a guide for people to get work done. They provide a streamlined user experience that leads people through the processes their organization has defined for interactions that need to be advanced to a conclusion of some kind. This user experience can be tailored so that people with different security roles can have an experience that best suits the work they do.

You should use business process flows to define a set of steps for people to follow to take them to the desired outcome. These steps provide a visual indicator that tells people where they are in the business process.

Business process flows to reduce the need for training because new users don’t have to focus on which table they should be using. They can let the process guide them. You can configure business process flows to support common sales methodologies that can help your sales groups achieve better results.

For service groups, business process flows can help new staff get up to speed more quickly and avoid mistakes that could result in unsatisfied customers.

System business process flows

The following business process flows can be found in Power Automate. To understand how the business process flows work, review this system business process flows:

  • Lead to Opportunity Sales Process
  • Opportunity Sales Process
  • Phone to Case Process

Multiple tables in the business process flow

You can use a business process flow for a single table or span multiple tables. For example, you may have a process that begins with an opportunity, then continues to a quote, an order, and then an invoice, before finally returning to close the opportunity.

You can design business process flows that tie together the rows for up to five different tables into a single process so that people using the app can focus on the flow of their process rather than on which table they are working in. This way, they can easily navigate between related table rows.

Multiple business process flows are available per table

Not every user in an organization may follow the same process and different conditions may require that a different process be applied. You can have up to 10 active business process flows per table to provide appropriate processes for different situations.

Create a model-driven app II

In the?exercise?from the previous module of this learning path, you created the Prospects table in Microsoft Dataverse and imported the existing leads, now in this exercise, you will use that data to create a model-driven app. If you do not have the?Prospects?table then refer to the previous?exercise?This app will allow the sales team to enter and edit leads on the go and keep the managers up to date on the current leads and forecasted revenue.

Create the model-driven app for the prospects table

After you have created the?Prospects?table from the previous?exercise. You will need the?Prospects?table from the previous?exercise?to complete this exercise.

  • Sign in to?Power Apps?by using your organizational account.
  • Select the environment you want, or go to the?Power Apps admin center?to create a new one.
  • On the?Home?page, select the?Model-driven app from blank.
  • Select?Create.
  • Enter the following and Select?done.

- Name: Prospect Entry

  • Select the?Open the Site Map Designer?pencil icon to open the site map designer.
  • Select?New Subarea.
  • On the right, for?Title?enter?Prospects Area.
  • Click the drop-down to?select a type, then choose?Entity.
  • For Entity, select?Prospects.
  • Select?New Group.
  • On the right, for?Title?enter?Prospects Group.
  • Click?Save.
  • Click?Publish.

Creating a chart

  • Select?Charts.
  • Select?Create New.
  • For the Chart Name, enter?Forecasted Revenue by Stage.
  • For Legend Entries (Series), check the box, and select the?Forecasted Revenue?column.
  • For Horizontal (Category) Axis Labels, select the?Stage?column.
  • Select?Save and Close.
  • Back on the App Designer, select the checkbox next to?Forecasted Revenue by Stage.
  • Select?Save.
  • Select?Publish.

Creating the form

You can attempt to create a new form in the App Designer but if you run into any issues, you can follow the steps below to create a new main form.

  • Go to the Power Apps Home Page, and on the left, Select?Data.
  • Select?Tables.
  • Locate and select the?Prospects?table.
  • Select?Forms.
  • Select the drop-down arrow next to Add form, and then select?Main Form?from the drop-down. A new window will open.
  • Drag the?Stage?column from the right and place it below the?Owner?column in the center.
  • Drag the?Contract Amount?column and place it below the?Stage?column.
  • Drag the?Probability?column and place it below the?Contract Amount?column.
  • Drag the?Forecasted Revenue?column and place it below the?Probability?column.
  • Now select?Forecasted Revenue?and then select?Change Properties?on the ribbon.
  • Select the checkbox for?the Read-only column.
  • Select?Save.
  • Select?Publish.
  • Close the window.
  • Select?Done.

Summary

Defining and enforcing consistent business processes is a key aspect of model-driven app design. Consistent processes help ensure that your app users can focus on their work and not have to remember to perform a set of manual steps.

Let's review what you've learned:

  • Model-driven app design is an approach that focuses on quickly adding components to apps. These components include dashboards, forms, views, and charts.
  • Little or no code is required to build model-driven apps.
  • The model-driven design uses metadata-driven architecture so that designers can customize their apps.
  • The best way to get started building model-driven apps is to use sample apps and data; then customize the apps.

This article is part of Microsoft Certified: Power Platform App Maker Associate and will be one of many in the series of articles on my journey to become a Microsoft Power Platform Architect:

  1. PL – 900 – Power Platform Fundamentals
  2. PL – 100 - Microsoft Power Platform App Maker
  3. PL – 200 - Microsoft Power Platform Functional Consultant
  4. PL – 400 - Microsoft Power Platform Developer
  5. PL – 600 - Microsoft Power Platform Solution Architect

Until next time,

Nikola Basta

要查看或添加评论,请登录

Nikola Basta的更多文章

  • How to build Model-driven App in Power Apps - Part II

    How to build Model-driven App in Power Apps - Part II

    Introduction to Microsoft Dataverse Table Characteristics Dual-write vs. virtual tables Create a Microsoft Dataverse…

    2 条评论
  • How to build Model-driven App in Power Apps - Part I

    How to build Model-driven App in Power Apps - Part I

    Table of Content: Introduction to Microsoft Dataverse Introduction to model-driven apps Microsoft Dataverse and…

    2 条评论
  • How to build Canvas App in Power Apps - Part III

    How to build Canvas App in Power Apps - Part III

    Table of Content: Manage app versions in Power Apps Share apps in Power Apps Understand environments in Power Apps…

  • How to build Canvas App in Power Apps - Part II

    How to build Canvas App in Power Apps - Part II

    Table of Content: Improve apps by making basic customizations in Power Apps Explore screens and controls in Power Apps…

  • How to build Canvas App in Power Apps - Part I

    How to build Canvas App in Power Apps - Part I

    Table of Content: Introduction to Power Apps Power Apps building blocks Exercise - Create your first app in Power Apps…

  • Microsoft Data Connectors

    Microsoft Data Connectors

    Microsoft Power Platform is made powerful by its ability to leverage data across many platforms. To do this, components…

  • Introduction to Microsoft Power Platform

    Introduction to Microsoft Power Platform

    Modern businesses run on data. Users interact with data daily from entering their time for payroll, seeking guidance on…

  • How can Machine Learning System Help Detect Fraud in Fintech?

    How can Machine Learning System Help Detect Fraud in Fintech?

    Why now? Financial Technology Services, often called FinTech, represent the business that uses technology to enhance…

社区洞察

其他会员也浏览了