Visual Flow 简介

Visual Flow(流)

Salesforce提供了几种自动化流程工具,其中的Visual Flow(流)可以用来实现用户界面和逻辑,并对数据进行CRUD(Create 创建,Read 读取,Update 更改,Delete 删除)的操作。

从开发者的角度来说,我们可以把“流”看作是Apex代码逻辑的具象化。

对于“流”的完整介绍,可以参考官方文档

比如:在客服接到用户的电话后,根据用户的具体需求,使用相应的业务逻辑来进行处理。

创建“流”

在“设置”界面下,搜索“流”,点击“流”链接,即可进入“流”的一览表。在这里我们可以使用“新流”按钮来创建新的“流”。

  • 注意,“流”的编辑器(Flow Designer)需要浏览器支持并启用Adobe Flash插件。

“流”的编辑器界面如图所示:

Flow Designer主界面

屏幕右边是“画布”区域,用于“流”的具体设计。

屏幕左方是工具栏,包含了三个标签:

  • 调色板:包含了“流”的基础元素,用户可以拖动这些元素到“画布”中,创建“流”的一个步骤。比如对用户显示一个页面、对数据进行读写操作、对于不同情况进行选择等
  • 资源:包含了各种类型的变量,用户可以在此处新建变量,这些变量只存在于此“流”中,类似于Apex代码中的变量,只对某一个类或某一个代码段有效
  • 浏览器:包含了已经存在于此“流”中的各个元素和变量,用户可以在此快速查找各种元素

“流”的创建步骤

创建一个“流”包括以下步骤:

  1. 将不同元素拖动到“画布”区域,设定它们的属性,作为“流”的各个步骤
  2. 将各个元素连接起来,形成流程图
  3. 选择一个元素作为“流”的起始元素
  4. 保存,此时该“流”是未被启用的
  5. 在“设置”界面的“流”页面,启用相应的“流”

示例:创建一个“流”

我们使用一个示例来展示如何创建一个“流”。在该示例中,用户可以输入字符来查找“客户”对象。

创建第一个屏幕

“屏幕”元素可以向用户展示一个页面,用来收集用户输入,或显示某些数据。

  1. 拖动“屏幕”元素到“画布”中。这将会是用户看到的第一个页面。
“屏幕”的编辑

在“屏幕”的编辑界面中,可以对该“屏幕”元素进行命名,并添加若干字段。这些字段便是屏幕中的元素,比如文本框、复选框、下拉列表等。

  1. 在此“屏幕”元素中,设置其“姓名”和“唯一名称”。

“姓名”和“唯一名称”是每个元素都有的属性,“姓名”用于显示在“流”的设计器中,而“唯一名称”则是“流”内部的ID,将此元素和其他元素区分开来。

  1. 在此“屏幕”元素中,添加一个“文本框”字段,并设置其“唯一名称”(“TextInput_Searchstring”)以及“标签”。
“屏幕”的文本框
  1. 保存。

可以看到,设计器中有了第一个“屏幕”元素。

当鼠标移动到该“屏幕”元素时,“屏幕”元素右上角会出现三个图标,分别是“编辑”、“删除”和“设置为开始元素”。这一点对于每个元素都适用。点击“设置为开始元素”图标,即可将刚才创建的“屏幕”元素设定为该“流”的第一个步骤。

查找相应的数据

在接收了用户的输入之后,“流”的第二个步骤是查找相应的客户。“快速查找”元素可以实现此功能。

注意:从这一步开始,我们需要在“流”中定义变量。这些变量可以将查找的结果暂时保存,在后面的步骤中使用。

  1. 拖动“快速查找”元素到“画布”中,设置“姓名”和“唯一名称”。
  2. 在“筛选器和分配”部分的“查找”下拉列表框中,选择“Account”,即“客户”对象的API名称。这一步是定义该“快速查找”元素进行查找的对象类型。
  3. 当设定“Account”为查找类型后,编辑屏幕会多出一些输入框,用于设置查找的条件和结果。
设定查找类型
  1. 在“它满足以下条件:”文字下面的部分,我们可以定义查找条件。在“字段”中选择“标准”,“Name”,说明要查找的条件是客户的标准字段:名字。在“运算符”中选择“包含”。在“值”的下拉列表中选择“屏幕输入字段”中的“TextInput_Searchstring”,即刚才创建的“屏幕”元素中“文本框”的名字。通过这些设置,可以查找名字中包含用户输入字符的客户。
设定查找条件
  1. 在设置了查找条件后,在“变量”中可以定义查找的结果保存到哪个变量中。查找的结果将会是若干客户对象,所以需要用“SObject集合变量”来储存。由于目前还没有创建任何变量,在“变量”的下拉列表中选择“新建”,“SObject集合变量”。这样可以直接创建一个变量来存储查找结果。
选择变量
  1. 在SObject集合变量的新建界面,可以设定其“唯一名称”,并选择其代表的类型,这里是“Account”即客户类型。在“输入/输出类型”部分还可以设置该变量的使用范围,“专用”即仅限该“流”使用。“流”的变量都是通过这种窗口来设定,不同类型的变量需要设定不同的属性。
新建变量
  1. 新建了变量后,勾选“如果未找到记录,则将空值分配给变量”复选框。接下来还需要指定该变量中保存查找结果的哪些字段。未被保存的字段在后面的步骤中是不能被使用的。在“字段”中选择“Id”,并添加其他字段(Name,Phone)。
设定字段
  1. 保存后,该元素便创建完成。

  2. 在上一步创建的“屏幕”元素下方有一个菱形,点击并拖动到刚才建立的“快速查找”元素中,即可将“快速查找”元素作为“屏幕”元素的下一个步骤。

连接屏幕和快速查找

根据查找结果做决策

如果快速查找的结果为空,则需要向用户显示一个“没有结果”的信息,并退出。否则需要显示查找的结果。

  1. 拖动“决策”元素到“画布”中。“决策”元素可以根据若干条件对后面的步骤设定不同的分支。
  2. 在“决策”元素中,设定“姓名”和“唯一名称”。
  3. 在“结果”部分,可以设定不同的条件,并产生不同的结果。后面的步骤会根据不同的结果来执行相应的分支。
  4. 添加一个“结果”,将条件设定为刚才的查找结果为空。在“资源”下拉列表中选择上一步建立的变量“accounts”,在“运算符”中选择“为空”,在“值”中选择“全局常量 真”。
结果 查找结果为空
  1. 添加一个“结果”,将条件设定为刚才的查找结果不为空。在“资源”下拉列表中选择上一步建立的变量“accounts”,在“运算符”中选择“为空”,在“值”中选择“全局常量 假”。

  2. 保存,并将上一步“快速查找”元素连接到该“决策”元素中。

若查找结果为空,则显示失败信息

如果查找结果为空,则需要向用户显示“无搜索结果”的界面。

  1. 新建一个“屏幕”元素,在其中添加“显示文本”字段,设定要显示给用户的信息。
  2. 保存“屏幕”元素后,将上一步建立的“决策”元素连接到该“屏幕”元素中。在建立连接时,需要选择该连接对应“决策”中的哪个“结果”。
决策 查找结果为空

若查找结果不为空,则显示成功信息

和上一步类似,添加一个“屏幕”元素,用于显示“成功”的信息,并将“决策”元素中的“非空”结果连接到该“屏幕”元素上。

保存并启用“流”

点击“保存”按钮保存该“流”。

回到“流”的一览表界面,可以看到该“流”尚未启用。进入该“流”的详细信息页面,在“流程版本”部分点击“启用”按钮,即可启用该“流”。

启用“流”

注意:每个“流”都可以有若干个版本。当一个“流”被启用之后,该版本便无法被更改。用户可以更改此“流”并保存为一个新的版本,然后启用新的版本。

“流”的调试小知识

流在执行时可能出现错误,也可能顺利执行完成但结果和预期不一样。下面提供一些调试的小知识。

调试日志

当“流”在执行时遇到问题时,首先可以使用设置界面中的“调试日志(Debug Log)”来进行调试。

一般来说,在调试日志中会有由“FLOW_ELEMENT_START”、“FLOW_ELEMENT_END”、“FLOW_ELEMENT_ERROR”等开始的记录,分别代表了流中元素的开始、结束、发生的错误。“FLOW_ELEMENT_ERROR”相关的记录会记录下流在执行中遇到的问题。

决策(Decide)元素的逻辑错误

如果在日志中没有发现错误,但是执行的结果和预想不一样,可能是在某个决策元素中走了错误的分支。

决策元素中的各种分支是有顺序的,处于上面的分支先被判断。如果某个判断条件A包含了处于其下面的判断条件B的话,则此决策元素在判断完条件A之后就会直接执行,而忽略了包括B在内的余下条件。这样,从判断条件B以后的分支中的所有操作永远不会被执行。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,137评论 11 349
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,703评论 1 92
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,493评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,495评论 18 139
  • 蛋白粉+倍力健的34个功效: 1 平衡人体荷尔蒙分泌,促进人体内分泌系统的调节。 2 促进血管扩张,增进血液流通。...
    心有所属梦向远航阅读 1,818评论 0 0