我想把<代码>工作流程。睡眠调用我的Cadence活动之一,以便能够正确测试它(并模拟Sleep
function产生的错误结果)。
在实现之前,我注意到两件重要的事情:
上下文。上下文
和工作流。上下文
是单独的类型。上下文。上下文
- 是可选的,可以省略我的尝试:
1.首次尝试
import "go.uber.org/cadence/workflow"
// Activity:
func (s *MyActivities) WorkflowSleep(_ context.Context, workflowCtx workflow.Context, duration time.Duration) error {
return workflow.Sleep(workflowCtx, duration)
}
// In workflow; ctx has type workflow.Context:
err := workflow.ExecuteActivity(ctx, myActivities.WorkflowSleep, ctx, duration).Get(ctx, nil)
错误:
"error":"无法解码活动函数输入字节错误:无法解码参数:0,*internal.Context,json错误:json:无法将对象散集到Go函数类型的值internal.Context
2.第二次尝试
import "go.uber.org/cadence/workflow"
// Activity:
func (s *MyActivities) WorkflowSleep(workflowCtx workflow.Context, duration time.Duration) error {
return workflow.Sleep(workflowCtx, duration)
}
// In workflow; ctx has type workflow.Context:
err := workflow.ExecuteActivity(ctx, myActivities.WorkflowSleep, duration).Get(ctx, nil)
错误:
"PanicError":"反映:输入参数太少的调用"
问题
是否可以在任何活动中使用workflow.Sleep
?
是否可以使用工作流。在任何活动中睡觉?
不可以,不允许使用工作流。在
活动代码中睡觉。
工作流。睡眠
仅允许在工作流代码中使用。一般来说,workflow
包中的所有API仅允许在工作流代码中使用。
工作流代码将在决策任务中执行,工作流线程/协程(特殊类型的goroutines)由Cadence管理。这就是< code>workflow包中的API的工作方式。如果没有决策任务和工作流线程/协同程序,这些API将无法正常工作。
另一方面,活动代码只是纯粹的普通代码,您应该使用常规的本地库或依赖项来实现逻辑。例如,您可以使用<代码>时间。活动代码中的睡眠。
我有三节课 1.菜单活动 2.LocationUpdateService 3.多重标记器 1.菜单活动 2、LocationUpdateService:(这是服务类) 3、多重标记(活动) 我的问题是:当我打开我的菜单活动我的Toast消息打印发送数据到广播接收器,然后点击按钮我调用MultipleMarker。我无法从服务中获取值。。。但当我按下后退按钮时,我重定向到MenuActivity,此
我是uber Cadence的新手,尝试编写一个cron调度任务。Cadence提供了一个cron附表注释(在网上找个例子),它需要一个cron表达式字符串,用于在特定时间触发方法。但是,我想让这个cron表达式按照我们在yml文件中设置的来加载。有什么方法可以做到吗?我目前只找到了这个@cron附表注释的方法来做。我还发现有一个Workflow Option可以设置cron附表。但是,不知道如何
当我关闭一个活动时,我希望它将一个值传递给另一个活动中的一个片段,我该怎么做? 活动B 片段A 代码不起作用,因为它给了我一个错误 谢啦
我有以下问题。我有
我只是在尝试一些基本的Uber Cadence示例。我遇到了如下问题:我有一个接收结构作为参数并更改值并返回修改后的结构的活动。当执行workflow.It显示默认values.Code片段时,我无法获得修改后的值,我尝试了如下: