Integración de los mensajes de Azure Blockchain Workbench
Además de proporcionar una API REST, Azure Blockchain Workbench proporciona integración basada en mensajería. Workbench publica eventos centrados en el libro de contabilidad a través de Azure Event Grid, lo que permite a los consumidores de nivel final ingerir datos o realizar acciones en función de estos eventos. Para aquellos clientes que precisan de mensajería de confianza, Azure Blockchain Workbench también entrega mensajes a un punto de conexión de Azure Service Bus.
API de entrada
Si quiere iniciar las transacciones desde sistemas externos para crear usuarios, crear contratos y actualizar contratos, puede usar las API de entrada de mensajería para realizar transacciones en un libro de contabilidad. Consulte los ejemplos de integración de mensajería para obtener ejemplos que muestren las API de entrada.
Las siguientes son las API de entrada actualmente disponibles.
Crear usuario
Crea un nuevo usuario.
La solicitud requiere los siguientes campos:
| Nombre | Descripción |
|---|---|
| requestId | GUID del cliente proporcionado |
| firstName | Nombre del usuario |
| lastName | Apellidos del usuario |
| emailAddress | Dirección de correo electrónico del usuario |
| externalId | Identificador del objeto de Azure AD del usuario |
| connectionId | Identificador único de la conexión de cadena de bloques |
| messageSchemaVersion | Versión del esquema de mensajería |
| messageName | CreateUserRequest |
Ejemplo:
{
"requestId": "e2264523-6147-41fc-bbbb-edba8e44562d",
"firstName": "Ali",
"lastName": "Alio",
"emailAddress": "aa@contoso.com",
"externalId": "6a9b7f65-ffff-442f-b3b8-58a35abd1bcd",
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "CreateUserRequest"
}
Blockchain Workbench devuelve una respuesta con los siguientes campos:
| Nombre | Descripción |
|---|---|
| requestId | GUID del cliente proporcionado |
| userId | Identificador del usuario que se ha creado |
| userChainIdentifier | Dirección del usuario que se ha creado en la red de la cadena de bloques. En Ethereum, es la dirección del usuario en la cadena. |
| connectionId | Identificador único de la conexión de cadena de bloques |
| messageSchemaVersion | Versión del esquema de mensajería |
| messageName | CreateUserUpdate |
| status | Estado de la solicitud de creación de usuario. Si se crea correctamente, el valor es Success. En caso de error, el valor es Failure. |
| additionalInformation | Proporciona información adicional en función del estado. |
Ejemplo de una respuesta correcta de creación de usuario desde Blockchain Workbench:
{
"requestId": "e2264523-6147-41fc-bb59-edba8e44562d",
"userId": 15,
"userChainIdentifier": "0x9a8DDaCa9B7488683A4d62d0817E965E8f248398",
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "CreateUserUpdate",
"status": "Success",
"additionalInformation": { }
}
Si la solicitud no se realizó correctamente, se incluyen detalles sobre el error en la información adicional.
{
"requestId": "e2264523-6147-41fc-bb59-edba8e44562d",
"userId": 15,
"userChainIdentifier": null,
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "CreateUserUpdate",
"status": "Failure",
"additionalInformation": {
"errorCode": 4000,
"errorMessage": "User cannot be provisioned on connection."
}
}
Crear contrato
Crea un nuevo contrato.
La solicitud requiere los siguientes campos:
| Nombre | Descripción |
|---|---|
| requestId | GUID del cliente proporcionado |
| userChainIdentifier | Dirección del usuario que se ha creado en la red de la cadena de bloques. En Ethereum, es la dirección del usuario en la cadena. |
| applicationName | Nombre de la aplicación |
| version | Versión del tipo de aplicación. Requerido si tiene varias versiones de la aplicación habilitada. En caso contrario, la versión es opcional. Para obtener más información sobre las versiones de las aplicaciones, consulte Control de versiones de una aplicación de Azure Blockchain Workbench. |
| workflowName | Nombre del flujo de trabajo |
| parámetros | Entrada de parámetros para la creación de contratos |
| connectionId | Identificador único de la conexión de cadena de bloques |
| messageSchemaVersion | Versión del esquema de mensajería |
| messageName | CreateContractRequest |
Ejemplo:
{
"requestId": "ce3c429b-a091-4baa-b29b-5b576162b211",
"userChainIdentifier": "0x9a8DDaCa9B7488683A4d62d0817E965E8f248398",
"applicationName": "AssetTransfer",
"version": "1.0",
"workflowName": "AssetTransfer",
"parameters": [
{
"name": "description",
"value": "a 1969 dodge charger"
},
{
"name": "price",
"value": "12345"
}
],
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "CreateContractRequest"
}
Blockchain Workbench devuelve una respuesta con los siguientes campos:
| Nombre | Descripción |
|---|---|
| requestId | GUID del cliente proporcionado |
| contractId | Identificador único del contrato en Azure Blockchain Workbench |
| contractLedgerIdentifier | Dirección del contrato en el libro de contabilidad |
| connectionId | Identificador único de la conexión de cadena de bloques |
| messageSchemaVersion | Versión del esquema de mensajería |
| messageName | CreateContractUpdate |
| status | Estado de la solicitud de creación de contrato. Valores posibles: Enviado, Confirmado y Error. |
| additionalInformation | Proporciona información adicional en función del estado. |
Ejemplo de una respuesta de crear contrato enviada desde Blockchain Workbench:
{
"requestId": "ce3c429b-a091-4baa-b29b-5b576162b211",
"contractId": 55,
"contractLedgerIdentifier": "0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe",
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "CreateContractUpdate",
"status": "Submitted",
"additionalInformation": { }
}
Ejemplo de una respuesta de crear contrato confirmada desde Blockchain Workbench:
{
"requestId": "ce3c429b-a091-4baa-b29b-5b576162b211",
"contractId": 55,
"contractLedgerIdentifier": "0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe",
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "CreateContractUpdate",
"status": "Committed",
"additionalInformation": { }
}
Si la solicitud no se realizó correctamente, se incluyen detalles sobre el error en la información adicional.
{
"requestId": "ce3c429b-a091-4baa-b29b-5b576162b211",
"contractId": 55,
"contractLedgerIdentifier": null,
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "CreateContractUpdate",
"status": "Failure",
"additionalInformation": {
"errorCode": 4000,
"errorMessage": "Contract cannot be provisioned on connection."
}
}
Crear acción de contrato
Crea una nueva acción de contrato.
La solicitud requiere los siguientes campos:
| Nombre | Descripción |
|---|---|
| requestId | GUID del cliente proporcionado |
| userChainIdentifier | Dirección del usuario que se ha creado en la red de la cadena de bloques. En Ethereum, es la dirección del usuario en la cadena. |
| contractLedgerIdentifier | Dirección del contrato en el libro de contabilidad |
| version | Versión del tipo de aplicación. Requerido si tiene varias versiones de la aplicación habilitada. En caso contrario, la versión es opcional. Para obtener más información sobre las versiones de las aplicaciones, consulte Control de versiones de una aplicación de Azure Blockchain Workbench. |
| workflowFunctionName | Nombre de la función de flujo de trabajo |
| parámetros | Entrada de parámetros para la creación de contratos |
| connectionId | Identificador único de la conexión de cadena de bloques |
| messageSchemaVersion | Versión del esquema de mensajería |
| messageName | CreateContractActionRequest |
Ejemplo:
{
"requestId": "a5530932-9d6b-4eed-8623-441a647741d3",
"userChainIdentifier": "0x9a8DDaCa9B7488683A4d62d0817E965E8f248398",
"contractLedgerIdentifier": "0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe",
"version": "1.0",
"workflowFunctionName": "modify",
"parameters": [
{
"name": "description",
"value": "a 1969 dodge charger"
},
{
"name": "price",
"value": "12345"
}
],
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "CreateContractActionRequest"
}
Blockchain Workbench devuelve una respuesta con los siguientes campos:
| Nombre | Descripción |
|---|---|
| requestId | GUID del cliente proporcionado |
| contractId | Identificador único del contrato en Azure Blockchain Workbench |
| connectionId | Identificador único de la conexión de cadena de bloques |
| messageSchemaVersion | Versión del esquema de mensajería |
| messageName | CreateContractActionUpdate |
| status | Estado de la solicitud de acción de contrato. Valores posibles: Enviado, Confirmado y Error. |
| additionalInformation | Proporciona información adicional en función del estado. |
Ejemplo de una respuesta de crear acción de contrato enviada desde Blockchain Workbench:
{
"requestId": "a5530932-9d6b-4eed-8623-441a647741d3",
"contractId": 105,
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "CreateContractActionUpdate",
"status": "Submitted",
"additionalInformation": { }
}
Ejemplo de una respuesta de crear acción de contrato confirmada desde Blockchain Workbench:
{
"requestId": "a5530932-9d6b-4eed-8623-441a647741d3",
"contractId": 105,
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "CreateContractActionUpdate",
"status": "Committed",
"additionalInformation": { }
}
Si la solicitud no se realizó correctamente, se incluyen detalles sobre el error en la información adicional.
{
"requestId": "a5530932-9d6b-4eed-8623-441a647741d3",
"contractId": 105,
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "CreateContractActionUpdate",
"status": "Failure",
"additionalInformation": {
"errorCode": 4000,
"errorMessage": "Contract action cannot be provisioned on connection."
}
}
Mensajes y códigos de error de la API de entrada
Código de error 4000: Error de solicitud incorrecta
- ConnectionId no válido
- Error de deserialización de CreateUserRequest
- Error de deserialización de CreateContractRequest
- Error de deserialización de CreateContractActionRequest
- La aplicación {identificada por el nombre de la aplicación} no existe.
- La aplicación {identificada por el nombre de la aplicación} no tiene ningún flujo de trabajo.
- UserChainIdentifier no existe.
- El contrato {identificado por el identificador del libro de contabilidad} no existe.
- El contrato {identificado por el identificador del libro de contabilidad} no tiene la función {nombre de la función del flujo de trabajo}.
- UserChainIdentifier no existe.
Código de error 4090: Error de conflicto
- El usuario ya existe.
- El contrato ya existe.
- La acción de contrato ya existe.
Código de error 5000: Error interno del servidor
- Mensajes de excepción
Notificaciones de eventos
Las notificaciones de eventos se pueden usar para notificar a los usuarios y a los sistemas de nivel final de eventos que se producen en Blockchain Workbench y la red de cadena de bloques a la que está conectada. Las notificaciones de eventos se pueden consumir directamente en código o se pueden utilizar con herramientas como Logic Apps y Flow para desencadenar el flujo de datos hacia los sistemas de nivel final.
Consulte la Referencia de mensajes de notificación para más detalles sobre los distintos mensajes que se pueden recibir.
Consumo de eventos de Event Grid con Azure Functions
Si un usuario desea usar Event Grid para recibir notificaciones sobre eventos que se producen en Blockchain Workbench, puede consumir eventos de Event Grid mediante el uso de Azure Functions.
- Cree una aplicación de función de Azure en Azure Portal.
- Cree una nueva función.
- Busque la plantilla de Event Grid. Se muestra el código de la plantilla básica para leer el mensaje. Modifique el código según sea necesario.
- Guarde la función.
- Seleccione la instancia de Event Grid desde el grupo de recursos de Blockchain Workbench.
Consumo de eventos de Event Grid con Logic Apps
- Cree una nueva aplicación lógica de Azure en Azure Portal.
- Al abrir la aplicación de la lógica de Azure en el portal, se le pedirá seleccionar un desencadenador. Seleccione Azure Event Grid: cuando se produce un evento de recurso.
- Cuando se muestra el diseñador de flujo de trabajo, se le pedirá que inicie sesión.
- Seleccione la suscripción. Recurso como Microsoft.EventGrid.Topics. Seleccione el Nombre de recurso desde el nombre del recurso del grupo de recursos de Azure Blockchain Workbench.
- Seleccione la instancia de Event Grid desde el grupo de recursos de Blockchain Workbench.
Uso de temas de Service Bus para notificaciones
Los temas de Service Bus se pueden utilizar para notificar a los usuarios acerca de los eventos que se producen en Blockchain Workbench.
- Vaya a Service Bus en el grupo de recursos de Workbench.
- Seleccione Temas.
- Seleccione egress-topic.
- Cree una nueva suscripción a este tema. Obtenga una clave para la suscripción.
- Cree un programa, que se suscribe a los eventos de esta suscripción.
Consumo de mensajes de Service Bus con Logic Apps
- Cree una nueva aplicación lógica de Azure en Azure Portal.
- Al abrir la aplicación de la lógica de Azure en el portal, se le pedirá seleccionar un desencadenador. Escriba Service Bus en el cuadro de búsqueda y seleccione el desencadenador adecuado para el tipo de interacción que desea tener con Service Bus. Por ejemplo, Service Bus: cuando se recibe un mensaje en una suscripción de tema (autocompletar) .
- Cuando se muestra el diseñador de flujo de trabajo, especifique la información de conexión para Service Bus.
- Seleccione la suscripción y especifique el tema workbench-external.
- Desarrolle la lógica de la aplicación que utiliza el mensaje de este desencadenador.
Referencia de mensajes de notificación
En función del valor de messageName, los mensajes de notificación tienen uno de los siguientes tipos de mensaje.
Mensaje de bloque
Contiene información sobre bloques individuales. BlockMessage incluye una sección con información de nivel de bloque y una sección con información de la transacción.
| Nombre | Descripción |
|---|---|
| block | Contiene información del bloque |
| transacciones | Contiene información de la transacción de la colección para el bloque |
| connectionId | Identificador único de la conexión |
| messageSchemaVersion | Versión del esquema de mensajería |
| messageName | BlockMessage |
| additionalInformation | Información adicional proporcionada |
Información de bloque
| Nombre | Descripción |
|---|---|
| blockId | Identificador único del bloque en Azure Blockchain Workbench |
| blockNumber | Identificador único de un bloque en el libro de contabilidad |
| blockHash | Hash del bloque |
| previousBlockHash | El hash del bloque anterior |
| blockTimestamp | Marca de tiempo del bloque |
Información de la transacción
| Nombre | Descripción |
|---|---|
| transactionId | Identificador único de la transacción en Azure Blockchain Workbench |
| transactionHash | Hash de la transacción en el libro de contabilidad |
| desde | Identificador único en el libro de contabilidad para el origen de la transacción |
| to | Identificador único en el libro de contabilidad para el destino de la transacción |
| provisioningStatus | Identifica el estado actual del proceso de aprovisionamiento de la transacción. Los valores posibles son: 0: la API ha creado la transacción en la base de datos1: la transacción se ha enviado al libro de contabilidad2: la transacción se ha confirmado correctamente en el libro de contabilidad3 o 4: la transacción no se pudo confirmar en el libro de contabilidad5: la transacción se confirmó correctamente en el libro de contabilidad |
Ejemplo de un BlockMessage de Blockchain Workbench:
{
"block": {
"blockId": 123,
"blockNumber": 1738312,
"blockHash": "0x03a39411e25e25b47d0ec6433b73b488554a4a5f6b1a253e0ac8a200d13fffff",
"previousBlockHash": null,
"blockTimestamp": "2018-10-09T23:35:58Z",
},
"transactions": [
{
"transactionId": 234,
"transactionHash": "0xa4d9c95b581f299e41b8cc193dd742ef5a1d3a4ddf97bd11b80d123fec27ffff",
"from": "0xd85e7262dd96f3b8a48a8aaf3dcdda90f60dffff",
"to": null,
"provisioningStatus": 1
},
{
"transactionId": 235,
"transactionHash": "0x5c1fddea83bf19d719e52a935ec8620437a0a6bdaa00ecb7c3d852cf92e1ffff",
"from": "0xadd97e1e595916e29ea94fda894941574000ffff",
"to": "0x9a8DDaCa9B7488683A4d62d0817E965E8f24ffff",
"provisioningStatus": 2
}
],
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "BlockMessage",
"additionalInformation": {}
}
Mensaje del contrato
Contiene información sobre un contrato. El mensaje incluye una sección con propiedades del contrato y una sección con información de la transacción. Todas las transacciones que han modificado el contrato para el bloque determinado se incluyen en la sección de la transacción.
| Nombre | Descripción |
|---|---|
| blockId | Identificador único del bloque en Azure Blockchain Workbench |
| blockHash | Hash del bloque |
| modifyingTransactions | Las transacciones que modificaron el contrato |
| contractId | Identificador único del contrato en Azure Blockchain Workbench |
| contractLedgerIdentifier | Identificador único del contrato en el libro de contabilidad |
| contractProperties | Propiedades del contrato |
| isNewContract | Indica si este contrato se creó recientemente o no. Los valores posibles son: true (este contrato se creó recientemente) o false (este contrato es la actualización de otro contrato). |
| connectionId | Identificador único de la conexión |
| messageSchemaVersion | Versión del esquema de mensajería |
| messageName | ContractMessage |
| additionalInformation | Información adicional proporcionada |
Modificación de la información de la transacción
| Nombre | Descripción |
|---|---|
| transactionId | Identificador único de la transacción en Azure Blockchain Workbench |
| transactionHash | Hash de la transacción en el libro de contabilidad |
| desde | Identificador único en el libro de contabilidad para el origen de la transacción |
| to | Identificador único en el libro de contabilidad para el destino de la transacción |
Propiedades del contrato
| Nombre | Descripción |
|---|---|
| workflowPropertyId | Identificador único de la propiedad del flujo de trabajo en Azure Blockchain Workbench |
| name | Nombre de la propiedad del flujo de trabajo |
| value | Valor de la propiedad del flujo de trabajo |
Ejemplo de un ContractMessage de Blockchain Workbench:
{
"blockId": 123,
"blockhash": "0x03a39411e25e25b47d0ec6433b73b488554a4a5f6b1a253e0ac8a200d13fffff",
"modifyingTransactions": [
{
"transactionId": 234,
"transactionHash": "0x5c1fddea83bf19d719e52a935ec8620437a0a6bdaa00ecb7c3d852cf92e1ffff",
"from": "0xd85e7262dd96f3b8a48a8aaf3dcdda90f60dffff",
"to": "0xf8559473b3c7197d59212b401f5a9f07ffff"
},
{
"transactionId": 235,
"transactionHash": "0xa4d9c95b581f299e41b8cc193dd742ef5a1d3a4ddf97bd11b80d123fec27ffff",
"from": "0xd85e7262dd96f3b8a48a8aaf3dcdda90f60dffff",
"to": "0xf8559473b3c7197d59212b401f5a9f07b429ffff"
}
],
"contractId": 111,
"contractLedgerIdentifier": "0xf8559473b3c7197d59212b401f5a9f07b429ffff",
"contractProperties": [
{
"workflowPropertyId": 1,
"name": "State",
"value": "0"
},
{
"workflowPropertyId": 2,
"name": "Description",
"value": "1969 Dodge Charger"
},
{
"workflowPropertyId": 3,
"name": "AskingPrice",
"value": "30000"
},
{
"workflowPropertyId": 4,
"name": "OfferPrice",
"value": "0"
},
{
"workflowPropertyId": 5,
"name": "InstanceAppraiser",
"value": "0x0000000000000000000000000000000000000000"
},
{
"workflowPropertyId": 6,
"name": "InstanceBuyer",
"value": "0x0000000000000000000000000000000000000000"
},
{
"workflowPropertyId": 7,
"name": "InstanceInspector",
"value": "0x0000000000000000000000000000000000000000"
},
{
"workflowPropertyId": 8,
"name": "InstanceOwner",
"value": "0x9a8DDaCa9B7488683A4d62d0817E965E8f24ffff"
},
{
"workflowPropertyId": 9,
"name": "ClosingDayOptions",
"value": "[21,48,69]"
}
],
"isNewContract": false,
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "ContractMessage",
"additionalInformation": {}
}
Mensaje de evento: Invocación de la función de contrato
Contiene información cuando se invoca una función de contrato, por ejemplo, el nombre de función, la entradas de parámetros y el llamador de la función.
| Nombre | Descripción |
|---|---|
| eventName | ContractFunctionInvocation |
| caller | Información del autor de la llamada |
| contractId | Identificador único del contrato en Azure Blockchain Workbench |
| contractLedgerIdentifier | Identificador único del contrato en el libro de contabilidad |
| functionName | Nombre de la función. |
| parámetros | Información del parámetro |
| transaction | Información de la transacción |
| inTransactionSequenceNumber | El número de secuencia de la transacción en el bloque |
| connectionId | Identificador único de la conexión |
| messageSchemaVersion | Versión del esquema de mensajería |
| messageName | EventMessage |
| additionalInformation | Información adicional proporcionada |
Información del autor de la llamada
| Nombre | Descripción |
|---|---|
| type | Tipo del autor de la llamada, como un usuario o un contrato |
| id | Identificador único del autor de la llamada en Azure Blockchain Workbench |
| ledgerIdentifier | Identificador único del autor de la llamada en el libro de contabilidad |
Información del parámetro
| Nombre | Descripción |
|---|---|
| name | Nombre de parámetro |
| value | Valor del parámetro |
Información de la transacción del mensaje de eventos
| Nombre | Descripción |
|---|---|
| transactionId | Identificador único de la transacción en Azure Blockchain Workbench |
| transactionHash | Hash de la transacción en el libro de contabilidad |
| desde | Identificador único en el libro de contabilidad para el origen de la transacción |
| to | Identificador único en el libro de contabilidad para el destino de la transacción |
Ejemplo de EventMessage ContractFunctionInvocation de Blockchain Workbench:
{
"eventName": "ContractFunctionInvocation",
"caller": {
"type": "User",
"id": 21,
"ledgerIdentifier": "0xd85e7262dd96f3b8a48a8aaf3dcdda90f60ffff"
},
"contractId": 34,
"contractLedgerIdentifier": "0xf8559473b3c7197d59212b401f5a9f07b429ffff",
"functionName": "Modify",
"parameters": [
{
"name": "description",
"value": "a new description"
},
{
"name": "price",
"value": "4567"
}
],
"transaction": {
"transactionId": 234,
"transactionHash": "0x5c1fddea83bf19d719e52a935ec8620437a0a6bdaa00ecb7c3d852cf92e1ffff",
"from": "0xd85e7262dd96f3b8a48a8aaf3dcdda90f60dffff",
"to": "0xf8559473b3c7197d59212b401f5a9f07b429ffff"
},
"inTransactionSequenceNumber": 1,
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "EventMessage",
"additionalInformation": { }
}
Mensaje de evento: Ingesta de aplicación
Contiene información de cuando una aplicación se carga en Workbench, como el nombre y la versión de la aplicación cargada.
| Nombre | Descripción |
|---|---|
| eventName | ApplicationIngestion |
| applicationId | Identificador único de la aplicación en Azure Blockchain Workbench |
| applicationName | Nombre de la aplicación |
| applicationDisplayName | Nombre para mostrar de la aplicación |
| applicationVersion | Versión de la aplicación |
| applicationDefinitionLocation | Dirección URL en la que se encuentra el archivo de configuración de la aplicación |
| contractCodes | Colección de códigos de contrato para la aplicación |
| applicationRoles | Colección de códigos de aplicación para la aplicación |
| applicationWorkflows | Colección de flujos de trabajo de aplicación para la aplicación |
| connectionId | Identificador único de la conexión |
| messageSchemaVersion | Versión del esquema de mensajería |
| messageName | EventMessage |
| additionalInformation | La información adicional proporcionada aquí incluye los estados de flujo de trabajo de la aplicación y la información de transición. |
Información de código de contrato
| Nombre | Descripción |
|---|---|
| id | Identificador único del archivo de código de contrato en Azure Blockchain Workbench |
| ledgerId | Identificador único del libro de contabilidad en Azure Blockchain Workbench |
| ubicación | Dirección URL donde se encuentra el archivo de código de contrato |
Información de rol de la aplicación
| Nombre | Descripción |
|---|---|
| id | Identificador único del rol de la aplicación en Azure Blockchain Workbench |
| name | Nombre del rol de la aplicación |
Información del flujo de trabajo de la aplicación
| Nombre | Descripción |
|---|---|
| id | Identificador único del flujo de trabajo de la aplicación en Azure Blockchain Workbench |
| name | Nombre del flujo de trabajo de la aplicación |
| DisplayName | Nombre para mostrar del flujo de trabajo de la aplicación |
| functions | Colección de funciones para el flujo de trabajo de la aplicación |
| states | Colección de estados para el flujo de trabajo de la aplicación |
| properties | Información de propiedades del flujo de trabajo de la aplicación |
Información de la función del flujo de trabajo
| Nombre | Descripción |
|---|---|
| id | Identificador único de la función del flujo de trabajo de la aplicación en Azure Blockchain Workbench |
| name | Nombre de función |
| parámetros | Parámetros de la función |
Información de estado de flujo de trabajo
| Nombre | Descripción |
|---|---|
| name | Nombre del estado |
| DisplayName | Nombre para mostrar del estado |
| style | Estilo del estado (completado o error) |
Información de la propiedad del flujo de trabajo
| Nombre | Descripción |
|---|---|
| id | Identificador único de la propiedad del flujo de trabajo de la aplicación en Azure Blockchain Workbench |
| name | Nombre de propiedad |
| type | Tipo de propiedad |
Ejemplo de EventMessage ApplicationIngestion de Blockchain Workbench:
{
"eventName": "ApplicationIngestion",
"applicationId": 31,
"applicationName": "AssetTransfer",
"applicationDisplayName": "Asset Transfer",
"applicationVersion": "1.0",
"applicationDefinitionLocation": "http://url",
"contractCodes": [
{
"id": 23,
"ledgerId": 1,
"location": "http://url"
}
],
"applicationRoles": [
{
"id": 134,
"name": "Buyer"
},
{
"id": 135,
"name": "Seller"
}
],
"applicationWorkflows": [
{
"id": 89,
"name": "AssetTransfer",
"displayName": "Asset Transfer",
"functions": [
{
"id": 912,
"name": "",
"parameters": [
{
"name": "description",
"type": {
"name": "string"
}
},
{
"name": "price",
"type": {
"name": "int"
}
}
]
},
{
"id": 913,
"name": "modify",
"parameters": [
{
"name": "description",
"type": {
"name": "string"
}
},
{
"name": "price",
"type": {
"name": "int"
}
}
]
}
],
"states": [
{
"name": "Created",
"displayName": "Created",
"style" : "Success"
},
{
"name": "Terminated",
"displayName": "Terminated",
"style" : "Failure"
}
],
"properties": [
{
"id": 879,
"name": "Description",
"type": {
"name": "string"
}
},
{
"id": 880,
"name": "Price",
"type": {
"name": "int"
}
}
]
}
],
"connectionId": [ ],
"messageSchemaVersion": "1.0.0",
"messageName": "EventMessage",
"additionalInformation":
{
"states" :
[
{
"Name": "BuyerAccepted",
"Transitions": [
{
"DisplayName": "Accept",
"AllowedRoles": [ ],
"AllowedInstanceRoles": [ "InstanceOwner" ],
"Function": "Accept",
"NextStates": [ "SellerAccepted" ]
}
]
}
]
}
}
Mensaje de evento: Asignación de roles
Contiene información de cuando a un usuario se le asigna un rol en Workbench, como quién realizó la asignación del rol y el nombre del rol y la aplicación correspondiente.
| Nombre | Descripción |
|---|---|
| eventName | RoleAssignment |
| applicationId | Identificador único de la aplicación en Azure Blockchain Workbench |
| applicationName | Nombre de la aplicación |
| applicationDisplayName | Nombre para mostrar de la aplicación |
| applicationVersion | Versión de la aplicación |
| applicationRole | Contiene información sobre el rol de aplicación |
| assigner | Información sobre el asignador |
| assignee | Información sobre el asignado |
| connectionId | Identificador único de la conexión |
| messageSchemaVersion | Versión del esquema de mensajería |
| messageName | EventMessage |
| additionalInformation | Información adicional proporcionada |
Rol de aplicación RoleAssignment
| Nombre | Descripción |
|---|---|
| id | Identificador único del rol de la aplicación en Azure Blockchain Workbench |
| name | Nombre del rol de la aplicación |
Asignador de RoleAssignment
| Nombre | Descripción |
|---|---|
| id | Identificador único del usuario en Azure Blockchain Workbench |
| type | Tipo de asignador |
| chainIdentifier | Identificador único del usuario en el libro de contabilidad |
Asignado de RoleAssignment
| Nombre | Descripción |
|---|---|
| id | Identificador único del usuario en Azure Blockchain Workbench |
| type | Tipo de asignado |
| chainIdentifier | Identificador único del usuario en el libro de contabilidad |
Ejemplo de EventMessage RoleAssignment de Blockchain Workbench:
{
"eventName": "RoleAssignment",
"applicationId": 31,
"applicationName": "AssetTransfer",
"applicationDisplayName": "Asset Transfer",
"applicationVersion": "1.0",
"applicationRole": {
"id": 134,
"name": "Buyer"
},
"assigner": {
"id": 1,
"type": null,
"chainIdentifier": "0xeFFC7766d38aC862d79706c3C5CEEf089564ffff"
},
"assignee": {
"id": 3,
"type": null,
"chainIdentifier": "0x9a8DDaCa9B7488683A4d62d0817E965E8f24ffff"
},
"connectionId": [ ],
"messageSchemaVersion": "1.0.0",
"messageName": "EventMessage",
"additionalInformation": { }
}