I just created a new issue[1] for this new feature, please feel free to
create sub task to track you task.

[1]https://issues.apache.org/jira/browse/SCB-864


Willem Jiang

Twitter: willemjiang
Weibo: 姜宁willem

On Wed, Aug 22, 2018 at 5:07 PM, 新道场开张了 <[email protected]> wrote:

> Yes, it is relate to the Operation that Saga already defined in saga-core.
> I just want to add a new String named TYPE_SQL like TYPE_REST and TYPE_NOP.
> The TYPE_SQL may be used by JsonSagaRequest interface to let Jackson find
> the implement class based on 'type' property.
>
>
> Some questions about JIRA, which issue type should I choose? And should
> the UML design document be in markdown or other formats, or just a UML
> diagram?
>
>
> ------------------ 原始邮件 ------------------
> 发件人: "Willem Jiang"<[email protected]>;
> 发送时间: 2018年8月22日(星期三) 下午4:29
> 收件人: "dev"<[email protected]>;
>
> 主题: Re: [DISCUSS]Add a local or embedded interface to call Saga
>
>
>
> Just a quick question about the Operation's TYPE_SQL?
> I'm not sure if it is relate to the Operation that Saga already defined.
>
> BTW, you can create a JIRA and attached the UML design document to it.
>
>
> Willem Jiang
>
> Twitter: willemjiang
> Weibo: 姜宁willem
>
> On Wed, Aug 22, 2018 at 3:51 PM, 新道场开张了 <[email protected]> wrote:
>
> > sorry, the image link seems to be invalid.
> >
> >
> > https://raw.githubusercontent.com/KomachiSion/incubator-
> > servicecomb-saga/share/docs/static_files/SCSagaDesign.png
> >
> >
> > ------------------ 原始邮件 ------------------
> > 发件人: "新道场开张了"<[email protected]>;
> > 发送时间: 2018年8月22日(星期三) 下午3:49
> > 收件人: "dev"<[email protected]>;
> >
> > 主题: Re:[DISCUSS]Add a local or embedded interface to call Saga
> >
> >
> >
> > SCSagaSQLFormatDesign.png
> >
> >
> > This picture is my design for embedded interface to call Saga.
> > In the design, we need to extend TYPE_SQL=sql in Operation interface and
> > JsonSubTypes in JsonSagaRequest interface.
> > And we need to add some classes to match the new json we defined before.
> > we also can reuse SagaRequestImpl during JsonSagaDefinition building and
> > Saga workflow after JsonSagaDefinition
> >  built.
> >
> >
> > ------------------ 原始邮件 ------------------
> > 发件人: "新道场开张了"<[email protected]>;
> > 发送时间: 2018年8月21日(星期二) 上午10:40
> > 收件人: "dev"<[email protected]>;
> >
> > 主题: Re: [DISCUSS]Add a local or embedded interface to call Saga
> >
> >
> >
> > sorry, the picture is a simple UML of SQLTransport
> >
> >
> > https://github.com/KomachiSion/incubator-servicecomb-saga/blob/master/
> > docs/static_files/Transport.jpg
> >
> >
> > ------------------ 原始邮件 ------------------
> > 发件人: "Willem Jiang"<[email protected]>;
> > 发送时间: 2018年8月21日(星期二) 上午10:20
> > 收件人: "dev"<[email protected]>;
> >
> > 主题: Re: [DISCUSS]Add a local or embedded interface to call Saga
> >
> >
> >
> > Yeah,  the json format of SQL Transport sounds good.
> > As we normally use the text in the mailing list, so please draw asiis
> > picture or put a permanent link in the mail for us to review.
> >
> >
> >
> > Willem Jiang
> >
> > Twitter: willemjiang
> > Weibo: 姜宁willem
> >
> > On Tue, Aug 21, 2018 at 10:11 AM, 新道场开张了 <[email protected]> wrote:
> >
> > > I think we can extend Transport interface to a new interface named
> > > SQLTransport.
> > > the SQLTransport also include 'with' function, but the parameters only
> > > requires datasource/serviceName, sql and parameters.
> > > Users can decide how to execute the sql of the datasource/serviceName
> in
> > > their own SQLTransport implements.
> > >
> > >
> > > In order to invoke SQLTransport successfully, we need to modify the
> > > Operation, Transaction and Compensation setions of Format for matching
> > new
> > > json requests.
> > > the new json structure is:
> > > {
> > >     "policy":"",
> > >     "requests":[
> > >         {
> > >             "id":"",
> > >             "type":"SQL",
> > >             "serviceName(or datasource)":"",
> > >             "parents":[],
> > >             "transaction":{
> > >                 "sql":"",
> > >                 "params":[] (or {})
> > >             },
> > >             "compensation":{
> > >                 "sql":"",
> > >                 "params":[] (or {})
> > >             }
> > >         }
> > >     ]
> > > }
> > >
> > >
> > >
> > > ------------------ 原始邮件 ------------------
> > > *发件人:* "Willem Jiang"<[email protected]>;
> > > *发送时间:* 2018年8月21日(星期二) 上午8:34
> > > *收件人:* "dev"<[email protected]>;
> > > *主题:* Re: [DISCUSS]Add a local or embedded interface to call Saga
> > >
> > > The saga patten is quite simple, if call is failed, the compensation
> > method
> > > should be called.
> > > I know someone already provide the framework[1] with Scala to simplify
> > the
> > > complex if else check.
> > > The PersonService and EmailService can be the remote service or local
> > > service.
> > >
> > > val persistInvoiceAndSendEmail: Future[Email :: Person :: HNil] = saga
> > >   .part[Person](PersonService.addInvoice(person, invoice), p =>
> > > PersonService.deleteInvoice(p, invoice))
> > >   .part[Email](EmailService.sendInvoice(person.email, invoice), letter
> > > => EmailService.sendExcuse(letter.email,
> > > EmailService.createExcuse(letter)))
> > >   .run
> > >
> > > persistInvoiceAndSendEmail.onComplete {
> > >   case Success(email :: person :: HNil) =>
> > >     logger.debug("There you can manage process results")
> > >   case Failure(SagaFailed(message, _)) =>
> > >     logger.error(s"One saga part has been failed due to $message")
> > > }
> > >
> > >
> > >
> > > [1]https://github.com/dobrynya/saga
> > >
> > >
> > > Willem Jiang
> > >
> > > Twitter: willemjiang
> > > Weibo: 姜宁willem
> > >
> > > On Mon, Aug 20, 2018 at 10:26 PM, Zheng Feng <[email protected]>
> wrote:
> > >
> > > > Thanks Willem and it is a good point here. Also I'm interesting how
> it
> > > > could be used in the local or the embedded interface ? I wonder if
> you
> > > can
> > > > consider the ACID transaction in this situation.
> > > > The Saga in my options could be more used for the distributed
> > > environment.
> > > >
> > > > Regard,
> > > > Amos
> > > >
> > > > 2018-08-20 18:00 GMT+08:00 Willem Jiang <[email protected]>:
> > > >
> > > > > the saga-core has a transport[1] interface which could be used for
> > the
> > > > > purpose, now it just have the Restful implementation.
> > > > > If you want to implement a RPC or some local method, you can just
> > > > implement
> > > > > the transport interface.
> > > > > As the saga-core using json for the invocation, you need to updated
> > the
> > > > > request/response  json module[2] there.
> > > > >
> > > > > [1]
> > > > > https://github.com/apache/incubator-servicecomb-saga/
> > > > > blob/master/saga-core/src/main/java/org/apache/
> > servicecomb/saga/core/
> > > > > Transport.java#L20:18
> > > > > [2]
> > > > > https://github.com/apache/incubator-servicecomb-saga/
> > > > > tree/master/saga-format
> > > > >
> > > > >
> > > > >
> > > > > Willem Jiang
> > > > >
> > > > > Twitter: willemjiang
> > > > > Weibo: 姜宁willem
> > > > >
> > > > > On Mon, Aug 20, 2018 at 5:37 PM, 新道场开张了 <[email protected]> wrote:
> > > > >
> > > > > > Hi, all:
> > > > > >
> > > > > >
> > > > > > Currently, service comb saga have implemented transaction
> > management
> > > > > based
> > > > > > on microservice.
> > > > > > But in some cases, users want to use Saga with a simpler way,
> such
> > as
> > > > > > local or embedded call.
> > > > > > So we want to discuss whether it is possible to extend a local or
> > > > > embedded
> > > > > > interface.
> > > > > > When the user implements the embedded interface and injects Saga
> > into
> > > > the
> > > > > > native program,
> > > > > > Saga calls the local method directly instead of calling the
> > > > microservice.
> > > > > >
> > > > > >
> > > > > > Best Wishes & Regards
> > > > >
> > > >
> > >
> > >
> >
>

Reply via email to