Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Jan 05 03:06

    funkygao on master

    release 1.1.1 ver up -> 1.1.2 Merge branch '1.1.1-RELEASE' and 2 more (compare)

  • Jan 05 03:02

    funkygao on 1.1.1-RELEASE

    ver up -> 1.1.2 (compare)

  • Jan 05 02:25

    funkygao on v1.1.1

    (compare)

  • Jan 05 02:25

    funkygao on 1.1.1-RELEASE

    release 1.1.1 (compare)

  • Dec 16 2020 05:03
    funkygao labeled #42
  • Dec 15 2020 11:26
    funkygao commented #42
  • Dec 15 2020 11:24
    funkygao commented #42
  • Dec 15 2020 11:22
    funkygao commented #42
  • Dec 13 2020 08:57
    littlebingo commented #42
  • Dec 13 2020 08:57
    littlebingo commented #42
  • Dec 10 2020 10:54
    funkygao commented #42
  • Dec 10 2020 10:50
    funkygao commented #42
  • Dec 04 2020 00:51
    littlebingo commented #42
  • Dec 03 2020 15:06

    funkygao on master

    easyapp is deprecated: moved to… (compare)

  • Dec 03 2020 14:03
    funkygao commented #42
  • Dec 02 2020 06:37
    littlebingo opened #42
  • Nov 25 2020 08:14
    tohlzhu commented #41
  • Nov 25 2020 08:14
    tohlzhu closed #41
  • Nov 25 2020 08:14
    tohlzhu commented #41
  • Nov 25 2020 08:12
    funkygao commented #41
Funky Gao
@funkygao
image.png
rayman
@yuliming5218
这么分层没问题,其实是你的framwork定义的一个规范。我关注的是用你这个搭建业务中台的时候业务边界的定义,那些是需要保留在中台控制范围的能力,那些是可以开放给某个业务身份的人可以扩展的能力。可以类比成java语言的修饰符的作用,那些定义成public公共的,那些是protected的 ,那些是priavte的。这个其实也可以有个规范。这样能够保证你对frame core层能力和逻辑的控制力。这样便于以后控制framework的发展走向。
Funky Gao
@funkygao
image.png
这里的都是可以放在中台之外的,都是可以hot reload的
image.png
rayman
@yuliming5218
我看steps的rollback是通过栈在内存中实现的。每一个执行步骤是没有persist的。这种在机器有问题shutdown或者restart的时候有过什么处理吗?会不会有些无法回滚或者进行到一半的任务某些步骤丢失呢?
Funky Gao
@funkygao
Step的定位就是JVM内的一个线程内的编排,如果流程非常长,同时可能还要考虑某些节点的pause/resume等,可以自行实现,例如通过MQ或数据库做中间状态的保存和衔接
Step里如果能把这个也做了,我担心需要引入额外依赖,把框架搞复杂了
rayman
@yuliming5218
但是及时再短,只要会出现肯定会有badcase了。在框架层面就把 回滚的栈那块干掉。完全下放给业务条线自己控制也行。
Funky Gao
@funkygao
是否回滚,是框架使用者决定的,业务条线自己控制的
rayman
@yuliming5218
虽然是业务自己控制的,但是最终都落地到那个栈里面了。那个栈如果没有持久化或者恢复的能力。其实也做不到回滚。
Funky Gao
@funkygao
Step的回滚,目前是Sagas模式,best effort。如果要做回滚的一致性、原子性,业务研发可以自己在某些step进行技术处理
那是技术上的事情,这个框架不会关心技术层的事情的,它关心的是领域层的
Funky Gao
@funkygao
业务研发可以在此基础上做TCC式一致性保证,但框架本身不提供开箱即用功能
Haiwei Liu
@carllhw
IBaseTranslator,DDD分层模型的类型转换,DTO -> Creator -> Entity <-> PO.
看demo里的Entity只能通过Creator来创建,那PO-> Entity怎么做的呢?
@funkygao
Funky Gao
@funkygao
@carllhw see the above commit
Haiwei Liu
@carllhw
ok, thanks
mattu79
@mattu79
domain项目中每个IDecideStepsExt的扩展实现,都需要定义一个XXXDomainAbility,是不是常规情况下可以提供一个内置一些通用的Ability实现,避免重复。
konglinghai123
@konglinghai123
我想请教一下作者,这个框架和传统的BPM比起来,区别在哪里,对比市面上Low Code的优势在哪里,我感觉目前这个框架还是停留在程序员能理解的层面,如何让业务专家也能明白这个框架的本质,我觉得相关的文档还是需要完善一下,例如框架中所涉及的领域,行为,步骤,编排,我觉得能够把这个讲明白,这个开源项目就很棒棒了,作者加油~
mattu79
@mattu79
@konglinghai123 和BPM不是一个层面的东西。BPM一般是一个成熟产品。这个是帮助你开发中台业务和贯彻DDD的规范和框架。个人理解。
konglinghai123
@konglinghai123
@mattu79 那到底区别在哪里,用BPM一样可以实现业务编排呀
Funky Gao
@funkygao
DDDplus 是pro code;low code/no code的基本逻辑是CRUD的延展,不是一个层面的
Funky Gao
@funkygao
@mattu79 👍
DDDplus,是DDD+,与BPM定位不同。BPM解决的是编排的问题,胶水可视化,但复杂的中台场景下,它其实是比较尴尬的。可视化是刚需吗?它解决了什么问题?它把控制逻辑抽离到BPM语言里,降低了复杂度了吗?
DDDplus里,可以理解为一个简单的BPM,它通过step code这个list string,把一个业务活动(use case)在业务层面细化
Funky Gao
@funkygao
步骤,是业务专家可以理解的一个抽象。做任何事情,只要够复杂,都可以divide and conquer,分而治之,分解为步骤
@mattu79 Ability,是包裹Extension的,真正使用起来,你会发现它存在的价值。
image.png
这个图,体系了主要的业务抽象,翻译成中文,就懂懂了
Funky Gao
@funkygao
@mattu79 IDecideStepsExt,对应的ability,是否多余,我再想想 谢谢你的反馈
konglinghai123
@konglinghai123
@funkygao 可是我觉得现在DDDplus离走进平民化还是有距离的,可能是缺乏一些用户界面的东西
技术我觉得并不是对立的,我觉得BPM还是有可以借鉴的地方,起码他能用户化,给了用户足够多的自由
mattu79
@mattu79
@konglinghai123
从使用角度讲,BPM是提供一套体系一套工具一套标准让你围绕他来进行流程开发,你必须按照他的规则来进行开发,如果有特性不支持那对不起没办法,只有自己想办法绕过。
而使用一些框架(比如状态机)来开发流程,是自己从底层来搭建对流程的支持,可简单可复杂这个看自己的需要了。
回到DDDPlus来说,我感觉和BPM还是很大不同,DDDPlus解决的更多的是一个逻辑业务一段逻辑代码的抽象和组织;而BPM更多时跨组织跨机构的需要多人参与的流程管理,围绕的是对流程的执行和监管。
konglinghai123
@konglinghai123
@mattu79 DDDPlus是面向程序员的一套框架体系,并不是一个产品,可以这样理解吗
mattu79
@mattu79
@konglinghai123 是的啊,介绍里说得很清楚。
Funky Gao
@funkygao

@konglinghai123

domain项目中每个IDecideStepsExt的扩展实现,都需要定义一个XXXDomainAbility,是不是常规情况下可以提供一个内置一些通用的Ability实现,避免重复。
see #32

Funky Gao
@funkygao
hunshikan
@hunshikan
目前来看,ddd-plus功能很齐全了,让我想到了阿里张建飞大神开源的cola框架,两者在思想上有很多的相似之处,实现上各有各的方式
lijack18
@lijack18
咨询个问题demo中partner对应一个业务线,如果业务线中对于SubmitOrder还存在不同场景的编排需求怎么处理?例如isv-partner下单时需要根据商品类型来增加或减少product校验步骤
Funky Gao
@funkygao
@lijack18 如果步骤是事先就能确定好的,可以在partner里的编排里加逻辑。你给的商品场景,事先是无法判断的,可能还需要调用商品中心的RPC才能决定,可以参考动态步骤编排示例:https://github.com/dddplus/dddplus-demo/blob/master/order-center-cp/cp-oc-domain/src/main/java/org/example/cp/oms/domain/step/submitorder/BasicStep.java
小太阳
@zhangxuexiang
@funkygao 咨询个领域系统划分问题,拿订单履约dddplus-demo来说,订单会涉及到B端、C端、运营端,不同端的功能都写在一个中台项目里,还是拆出不同的中台项目?
Funky Gao
@funkygao
@zhangxuexiang 写在一个中台项目里,扩展点的实现可以放在不同的代码库
fulln
@fulln
container 中的 loadPartnerPlugin() 这方法就是用来做模块化jar加载的么? 在被加载的包中调用这个方法么
Funky Gao
@funkygao
@fulln yes
smudgeJJJ
@smudgeJJJ
有交流群吗
考虑建一个不
HiSEN
@hisenyuan

目前来看,ddd-plus功能很齐全了,让我想到了阿里张建飞大神开源的cola框架,两者在思想上有很多的相似之处,实现上各有各的方式

同感,多了一些扩展点的概念,感觉 ddd-plus 向平台(中台)更近了一步。