Workflow 当然是支持这个功能的,而且由于它独特的运行方式,URL 既可以是一个完整的动作,也可以是一个动作的一环。
我不建议在 Workflow 里把 URL 方面的使用当作一个完整的动作,这属于工具误用。比如有人在 Workflow 里单独将百度搜索作为一个动作,功能就是输入关键词,让百度来搜索。这让我非常不解:其一,你完全可以把 Spotlight 的搜索引擎设为百度,这样最效率;其二,退一步,即便你希望用效率软件做这样的事(虽然这么做已无效率可言了),你也完全可以用 Launch Center Pro,因为 Workflow 中如果对中文不进行 encode 是没办法直接用的。
所以,在 Workflow 中使用 URL,最好的办法是将其作为整个动作的一环。发挥Workflow 的价值,不要用 Workflow 做那些其它 App 也可以做,甚至其它方法更省事的事情。
用 Workflow 获取需求的信息,自动填入 URL
在这里直接用2Save App Icon1 这个 Workflow 来详述整个过程。
有能力的可以直接下载 Workflow来看是怎么回事。
Save App Icon2这个 Workflow 的作用是直接在 App Store 里保存软件的 icon,便于以后任何形式的分享。而且并不只是保存到相机胶卷,这个 Workflow 经过简单的修改,就可以把 Icon 直接在动作中分享到你需要分享的对方。
具体内容是:把同样的文字内容一次性发送到 Weibo 或/和 Twitter。
把同样的文字+图片一次性发送到 Weibo 或/和 Twitter。
通过 Share Sheet 分享任意链接并且加上自己想说的话,然后发送到 Weibo 或/和 Twitter。
将以上三步合并为一个 Workflow,执行时选择其中一个然后让 Workflow 自动进行后面的工作。
将文字内容送到Weibo 或/和 Twitter
在这里用到的动作只有三个
Text
Text 是最简单也比较常用的动作,最关键的是我们对它非常熟悉——“就是个输入框嘛,往里打字就可以了呗。”如果你这么想就对了,这软件上手就是这么的傻瓜式——你要做的就是把想发的微博内容输入到 Text 的文本框里。
Ask for Input
上面介绍的是 Text 文本框,我们看到它非常熟悉,但是它的一大缺点是会保留上一个 *** 作留下的内容。也就是说,你每一次通过 Workflow 发微博,都需要把上一次发的内容先删了才行。所以我实际上建议在这个 Workflow 里实用Ask for Input 这个动作。
Ask for Input 这个动作也是 Workflow 里最常用的动作,我在上一篇文章也提到过它。
1-1
你把 Prompt 里填上“微博内容”,这样每次打开这个 Workflow,直接点击运行。它就会d出个对话框让你输入微博内容。
Tweet
Tweet 的动作框里,前半部分写着“Show Compose Sheet”意思是“显示内容编辑框”,后面是一个开关:
内容编辑框
如果你把开关打开,那么就是选择显示内容编辑框,这么做的优势在于:
可以看到文本(图片)内容、字数。
如果你是多账户的话,临时可以选择账户。
可以临时修改内容。
可取消该步骤
但想必你会马上意识到“妈的我刚写好的东西有什么可修改的?”所以其实显示内容编辑框的优势并不明显。而关闭那个开关,也就是不显示内容编辑框的话,界面就会变成这样:
关闭开关
它的好处是:直接后台发送内容,省掉你点击编辑框的时间,以及等待发送成功再进行下一步的时间。
但是如果你确实有选择账户的需求,又不想看到内容编辑框浪费时间呢?Workflow 同样可以做到:按下 Tweet 动作框里选择账户的部分,你就能看到一个d出菜单,里面会有Ask When Run、Clipboard、Input三个选项,你选择Ask When Run,就能在动作进行到这一步的时候自动出现一个对话框来问你选择哪个账户发送。
选择账户
注意,在内容编辑框里,我们需要先按一下选择账户那个位置——也就是说我们要先看一下那个位置在哪——然后再选择账户。而在 Ask When Run 这种方式下,我们是直接选择账户。
另外,记住,在 Workflow 这款软件里,凡白皆可点,每个动作框里只要有白色的区域就是可以点的,只要有菜单出现就至少能看到 Ask When Run、Clipboard、Input 这三个选项,活用 Ask When Run 能让你做到一些你认为你做不到的事。
Share
分享按钮
Share 这个动作就是大家最熟悉的分享按钮了,之所以要用到它是因为 Workflow 在当前版本(1.0.1)还没有支持微博的分享功能,等到支持了应该就能和 Tweet 这个动作一样,可以在后台发送。也就是说,你只要编辑好内容,点一下发送,剩下的 Workflow 帮你做好。
将文字+图片发送到Weibo 或/和 Twitter
在这一步我们将谈到变量,你会发现它果然也很容易。
会发文字微博了,图文微博怎么办。在文字微博那个 Workflow 上再加几步就能做到。
选择照片
在动作列表里找到 Select Photots 这个动作,用它来选择照片。拖到你的 Workflow 里以后你会发现有个 Select Multiple 的开关,打开就能多选图片,但是 iOS 本身不能上传多图到社交网站——你可以自己试试在相册里选择多图的话,Twitter 和微博这两个选项都会不见的——所以 Workflow 以及任何通过 iOS 内置的功能去分享照片的办法只能分享一张照片。所以这个开关在这个 Workflow 关上就行了。
另外,如果你经常分享最后一张照片(或者是手机截图)的话,你可以在 Workflow 的动作列表里找到 Get Latest Photos 和 Get Latest Screenshots这些选项,拖到 Workflow 里试试看会有什么效果~
设定变量
终于看见“变量”这俩字了,是时候克服你从初中数学开始就对这两个字产生的恐惧了。
为了节省时间,我们要使用 Workflow 把两种不同的内容(文字和图片)作为一个整体发送出去。这一点的困难就是你得告诉 Workflow 他们俩(文字和图片)是一起的。在 Workflow 里的做法,就是:把文字放到一个变量里,把图片放到一个变量里,然后把这俩变量合成一个变量,交给 Workflow。
具体的 *** 作是,在动作列表里找到 Set Variable 也就是“设定变量”这个动作,然后拖到 Select Photos 这一步的下面,你会发现这两个动作中间连起了一条线,这就说明 Workflow 明白了你要把你选的那张照片设为一个变量。然后你可以在 Set Variable 后面的空白处输入你想输入的东西,我在这里输入了“图片”,你可以输入“img”,它就像给这张图片起了个临时的名字,什么名字都可以,中文英文符号只要你明白就都可以。
给图片设置变量
所以你可以这样看 Workflow 里的变量——给前面那一步的结果起个名字。
添加变量
前面说到,我们在这里用变量的原因是要用 Workflow 把两种不同的内容(文字和图片)作为一个整体发送出去。所以要给图片起个名字(设个变量)、给文字也起个名字(也设个变量),然后把它俩放在一起成为一个组合,再给组合起个名字(设个新变量)。
在 Workflow 里,这个步骤要分开来做。也就是说,图片起了名字以后,直接就可以成立组合,等一会儿给文字起名字以后把他加到这个组合里就行了。这在 Workflow 里的具体做法是:
将一个变量添加到另一个变量
在动作列表里找到 Add to Variable 也就是“添加到变量”这个动作,拖到你的 Workflow 里,Set Variable 这一步下面,那条连接的线就又会出现,你应该已经懂得它代表什么了。同样,这个组合的名字你可以随便给,我给的是“图文”。
对文字的处理
我们现在已经把文字和组合的变量设妥了,现在要处理文字了。我们要给文字设个变量,再把文字这个变量加入到组合的变量里。具体做法是:
把 Set Variable 拖到 Ask for Input 下面,给它起个名字;再把 Add to Variable 拖到 Set Variable 下面,注意,这里现在要填的是组合的名字,你不能再胡给名字了。
9
删除照片
Workflow 可以在处理完照片以后删除这张我们再也不会用的照片,在这个 Workflow 里,只要你把 Delete Photos 这一步放到 Share 这一步的下面就可以了:
10
Workflow 里有修改图片的功能叫做 Edit Photo,这个在分享照片的时候很实用,一般你给人看图片就会有希望让他看的那个“点”,通过 Edit Photo你就可以把你想让对方看的地方标记出来。那么你能不能在这个环节介绍的 Workflow 里加上 Edit Photo 这个动作,让你的 Workflow 更实用?
有时候人们分享图片是只想分享图片,不加字儿,但是新浪微博要求必须加字才能发微博。所以它官方客户端在只分享图片的时候的做法是自动添四个字“分享图片”。通过 Workflow 能不能做到?
通过 Share Sheet 分享任意链接发送到Weibo 或/和 Twitter
有时候你看到了一篇网站或者在你的 RSS/Read Later 客户端里读到了一篇你想分享的文章,你在 App Store 看到了一个好的 App 或者游戏,你想把它同时分享到 Twitter 和微博,通过 Workflow 也可以轻松做到。
Workflow Type
在这个环节我们要接触 Workflow Type,它只有两种,所以没什么难的。
查看 Workflow Type 的方法是在每个具体的 Workflow 的右上角寻找齿轮图标,里面是一个菜单,其中有一项是让我们选择 Workflow Type:
Workflow Type
Normal 类型的 Workflow 不会出现在 iOS 的分享菜单里面,只能通过 Workflow 这个程序本身运行。前面的内容都是在 Narmal 这个类型里完成的。
Action Extension 类型的则可在 Workflow 程序内运行也可在分享菜单中运行(Workflow 的相应位置有图解)。我们在这里要用到它,比较强力的 Workflow 一般都要用到它。
我们选择 Action Extension 能看到 Accepts 这个选项,打开后里面有一个列表,这个列表里显示的是 Workflow 分享菜单里接受的数据类型。
选择 URLs
我们在这里是要分享链接到微博和 Twitter,所以可以把其它的都删掉只要留下 URLs 就可以。
这其实已经是“分享链接到微博和 Twitter”这个 Workflow 的第一步——获取链接,下一步我们要做的,就是要给链接设一个变量——我在这里设置的是“链接”——好把这个链接和我们一会想发的微博放在一起。
直接把获取的 URL 设为变量直接把获取的 URL 设为变量
然后下一步,我们要开始输入微博正文了,我们还是和以前一样要用到 Ask for Input ,然后给它的结果也设置一个变量,我在这里设置的是“正文”。
14
最后通过 Text 框把两个变量放到一起。这一步有点小技巧:当你点进 Text 框,你会发现d出的键盘上有 Ask When Run、Variable...、Clipboard 这三个按钮,选择 Variable...,你就可以看出一个d出的菜单,里面有你在前面设置好的所有变量。比如说我前面设定了选择其中的变量,就会在 Text 框里出现一个套着蓝色框的变量——这就是 Workflow 的自定义变量的表现方式:
Workflow 里变量的表现方式Workflow 里变量的表现方式
到了这一步的逻辑是,你给链接设了个变量(link),然后输入微博,给这个微博内容也设个变量(正文),最后在 Text 框里面给这两个变量排一下顺序,决定让微博内容在先还是链接在先,最后将 Text 框里的整体作为微博发送出来。所以最后不要忘记加上 Tweet 跟 Share 这两个动作。
既然是分享链接(一般是文章)到社交网站,比较方便的办法其实是直接引用文中一段话作为对这个链接的介绍。所以你可以想想,能不能这个环节介绍的 Workflow 稍作改动,做一个“Clipboard + link 的 Workflow”?
如果你不只想分享链接,还想分享 Safari 里看到的文章的标题,要怎么做?试试看 Get Name这 个动作。
将以上三步合并为一个 Workflow
我们用效率软件是因为我们“懒”,所以既然懒了,就要有懒到底的精神。
现在你已经分别掌握了发送文字内容/图文内容/链接内容到微博和 Twitter 的方法。如果你三种使用情境都有的话,这就意味着你要做3个 Workflow 了。做三个 Workflow 没什么不好,唯一的缺点是“不够懒”。既然都是把东西发送到微博和 Twitter,我们能不能把它们做到同一个 Workflow?让我们做到在分享内容的时候只用这一个 Workflow,然后d出一个菜单里面有“文字微博”、“图文微博”、“分享链接”,然后我们需要哪种分享方式就选哪种分享凡事,剩下的交给 Workflow 来处理。
答案自然是可以。在这里我们要介绍 Workflow 这款软件里复杂动作的核心内容——List、If 和 Choose from Menu。
List——列表
我们要做的是要d出一个菜单,里面有“文字微博”、“图文微博”、“分享链接”给我们选,所以这第一步,可以是一个列表。从 Workflow 里找到 List 拖到你的 Workflow 里,在里面分别写上“文字微博”、“图文微博”、“分享链接”,行不够了可以按添加按钮来添加行。
16
然后我们要从这个列表里选一样,所以要用到 Choose from List 这个动作。同样,找到它然后拖到你的 Workflow 里。因为我们选的是其中“一项”,所以可以把“Select Multiple”这个开关关闭。
然后下一步,就是选完其中一项以后,让 Workflow 知道你选的是什么,然后执行之后的 *** 作。那么其实这里面的逻辑是:
“如果”我选择的是文字微博,“那么”就让 Workflow 执行关于文字微博的 *** 作;
“或者”我选择的是图文微博,“那么”就让 Workflow 执行关于图文微博的 *** 作;
“又或者”我选择的是分享链接,“那么”就让 Workflow 执行关于分享链接的 *** 作。
If——条件
这个“如果……那么……”在 Workflow 里就是 “If 语句”,上述的逻辑在 Workflow 里的 *** 作是:
把 If 拖进 Workflow,你会发现它和其它动作不太一样。If 会带下来 otherwise 和 End If 两个配套的动作。
近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。
本节我们分享一个超轻量级的工作流引擎 go-workflow ,基本架构同Activiti工作流有些相似,但是它更精简,更轻量,它是一个工作流微服务。它将所有的无关流程的数据,包括用户、用户组等信息从服务中解耦出去,go-workflow只纪录流程的流转,同时使用json数组替代bpmn来生成流程定义,简化流程定义的生成。
表 procdef 用于保存流程的配置,
主要字段有:
表 proc_inst 用于保存流程实例,当用户启动一个流程时,就会在这个表存入一个流程实例,
主要字段有:
表 execution 用于保存执行流,当用户启动一个流程时,就会生成一条执行流,之后的流程就会按照执行流的顺序流转,
比如:开始-主管审批-财务审批-人事审批-结束 ,
主要的字段有:
表 identitylink 用于保存任务task的候选用户组或者候选用户以及用户所参与的流程信息,
主要字段有
表 task 用于保存任务,
主要字段有:
历史数据表包括 execution_history,identitylink_history,proc_inst_history,task_history这些表字段同正常的表相同,每隔20秒,将已经结束的流程数据会自动迁移过来
启动 go-workflow 微服务后,可以在浏览器中输入: http://localhost:8080/workflow/procdef/save 进行存储
具体见 example.md 说明文档
通过调用 StartProcessInstanceByID 方法来启动流程实例,
主要涉及:
调用方法 Complete()方法来执行任务的审批,
涉及方法:
调用方法 WithDrawTask() 方法来执行任务的撤回
更多内容可以参考其官方 README
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)