工作流跑通记录DEBUG,审批流流转工作流的流程跑通

16 篇文章 0 订阅
8 篇文章 1 订阅

一、审批流流转工作流

提前将下一个节点状态传进来,在工作流到达下一个节点时,改变状态。
这里拆分成了小流程,即最简单的开始–>审批人–>结束流程

一、DEBUG

  • 处理判断
    在这里插入图片描述

  • 根据业务ID获取代办任务(判断当前流程实例【任务】是否存在)
    在这里插入图片描述

  • 拼接流程实例名
    在这里插入图片描述

  • 流程实例【任务】绑定流程ID
    在这里插入图片描述

  • 开始任务startTask,建造流程实例在这里插入图片描述

  • 回到审批流流转工作流,完成任务【一个简单的工作流就这么跑通了】
    在这里插入图片描述

最简单的流程记录完毕\(^o^)/~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ftrace是Linux内核中的一个功能,用于跟踪内核函数和用户空间程序的执行情况,可以帮助开发者更好地了解系统的性能瓶颈和调试问题。以下是ftrace的工作流程和关键代码: 1. 开启ftrace 用户可以通过/sys/kernel/debug/tracing目录下的文件来开启ftrace,例如: ``` echo function_graph > /sys/kernel/debug/tracing/current_tracer echo 1 > /sys/kernel/debug/tracing/tracing_on ``` 这将开启function_graph tracer,并开始跟踪。 2. 跟踪内核函数 开启跟踪后,ftrace会自动记录内核函数的执行情况,包括函数调用和返回,以及每个函数的执行时间和CPU占用情况等信息。 3. 跟踪用户空间程序 要跟踪用户空间程序,需要使用perf工具或者systemtap等工具。这些工具可以通过ftrace提供的接口来获取内核函数和用户空间程序的执行情况。 以下是一些ftrace相关的关键代码: 1. function_graph tracer的实现代码: ``` static void trace_function_graph(struct trace_array *tr, struct trace_event *event) { struct ftrace_graph_ent trace; struct trace_array_cpu *data; struct trace_seq s; int cpu, pc; u32 flags; local_irq_save(flags); cpu = smp_processor_id(); data = per_cpu_ptr(tr->trace_buffer.data, cpu); .... trace_print_graph_ent(&trace, &s); trace_seq_putc(&s, '\n'); trace_seq_buffer_unlock_commit(&s, &data->buffer); local_irq_restore(flags); } ``` 2. 开启/关闭tracer的代码: ``` void trace_start(void) { if (!tracing_enabled) return; if (trace_current_iter <= 0) return; if (!trace_array_has_tracers(&global_trace)) return; /* enable tracing */ __trace_set_tracer(&global_trace, current_trace->name); trace_options_set(); tracing_start_time = ktime_get(); tracing_start_time_ns = ktime_to_ns(tracing_start_time); trace_print_flags(); trace_print_header(current_trace); trace_start_lock_contention = arch_spin_lock_contention; tracer_enabled = true; } void trace_stop(void) { if (!tracer_enabled) return; trace_array_reset(&global_trace); tracer_enabled = false; } ``` 3. 用户空间程序跟踪的代码: ``` static int do_trace(struct perf_event *event, struct perf_sample_data *sample, struct pt_regs *regs, unsigned long flags) { struct trace_array *tr = event->trace_data; struct trace_event *trace_event = event->trace_event; struct trace_array_cpu *data; struct trace_seq s; int cpu; u32 pid, tid; cpu = smp_processor_id(); data = per_cpu_ptr(tr->trace_buffer.data, cpu); trace_seq_init(&s); trace_seq_printf(&s, "perf_event:"); trace_seq_printf(&s, " name=%s", event->perf->attr.name); trace_seq_printf(&s, " pid=%d", current->pid); trace_seq_printf(&s, " tid=%d", current->pid); trace_seq_printf(&s, " cpu=%d", cpu); .... trace_seq_putc(&s, '\n'); trace_seq_buffer_unlock_commit(&s, &data->buffer); return 0; } ``` 以上是ftrace的工作流程和关键代码,可以帮助读者更好地了解ftrace的原理和实现方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值