Как создать уникальный идентификатор из сервиса oracle corda - PullRequest
0 голосов
/ 22 мая 2018

У меня есть состояние шнура, скажем Employee, и мне нужно сгенерировать идентификатор сотрудника.Кто-нибудь, пожалуйста, дайте мне знать, как сгенерировать это через Corda Oracle Services?

1 Ответ

0 голосов
/ 22 мая 2018

У Oracle может быть атомный счетчик, который увеличивается каждый раз при присвоении идентификатора сотрудника.

Где вы должны поместить этот счетчик?

  • Вы не можете поместить его внутрьпоток, так как потоки недолговечны и не разделяют состояние
  • Вместо этого необходимо поместить счетчик в службу.Служба Corda - это долгоживущий объект, который создается при запуске узла и позволяет разделять состояние между потоками

Службу можно определить следующим образом:

@CordaService
class Oracle(val services: ServiceHub) : SingletonSerializeAsToken() {
    private val counter = AtomicInteger(0)

    val employeeId
        get() = counter.getAndIncrement()
}

И вы получите идентификатор сотрудника в потоке, используя:

serviceHub.cordaService(Oracle::class.java).employeeId
...